Angielskifrancuskihiszpański

Ad


Ulubiona usługa OnWorks

basl2cB - Online w chmurze

Uruchom basl2cB w bezpłatnym dostawcy hostingu OnWorks w systemie Ubuntu Online, Fedora Online, emulatorze online systemu Windows lub emulatorze online systemu MAC OS

To jest polecenie basl2cB, które można uruchomić w bezpłatnym dostawcy hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS

PROGRAM:

IMIĘ


basl2c - konwertuje kod BASL (BAtch Scheduling Language) na kod programu planującego C.

STRESZCZENIE


basl2c [-d] [-l leksykDebugPlik] [-p parserPlikDebug] [-y symtabDebugFile] [-s
semantyczny plik debugowania] [-g plik debugowania kodu genu] [-c plik c] plik basl

OPIS


basl2c to kompilator BASL do C, który generuje kod pośredni, który można wprowadzić do pliku
zwykły kompilator C i połączony z bibliotekami PBS w celu utworzenia pliku wykonywalnego programu planującego.
Basl2c przyjmuje jako dane wejściowe a baslPlik, który jest programem napisanym w pakiecie BAtch Scheduling
Język zawierający główny kod planowania. Basl2c następnie konwertuje konstrukcje BASL
w pliku na instrukcje C, a także dołącza dodatkowy kod w celu utworzenia PBS
kod źródłowy harmonogramu. Domyślnie wynikowy kod C jest zapisywany w pliku
pbs_sched.c.

Pełną ścieżkę do wynikowego pliku C należy określić w pliku SCHD_KOD
zmienną w local.mk przed skompilowaniem harmonogramu BASL w celu utworzenia pbs_sched
plik wykonywalny.

OPCJE


-d Wypisuje dodatkowe komunikaty debugowania do leksera (zobacz opcję -l), parsera (zobacz -s
opcja), tablica symboli (zobacz opcję -y), analizator semantyczny (zobacz opcję -s) i kod
generator (patrz opcja -g).

-l lexerDebugFile
plik lexerDebug to nazwa pliku, który ma zostać zapisany w wygenerowanych komunikatach debugowania
podczas skanowania w poszukiwaniu tokenów.

-p parserPlik debugowania
parserDebugFile to nazwa pliku, który ma zostać zapisany w wygenerowanych komunikatach debugowania
jednocześnie łącząc tokeny w użyteczny sposób.

-y symtabPlik Debugowania
SymtabPlik debugowania to nazwa pliku, który ma zostać zapisany w powiązanych komunikatach debugowania
tablicę symboli.

-s semantyczny plik debugowania
semantyczny plik debugowania to nazwa pliku, który ma zostać zapisany w komunikatach debugowania
generowane podczas sprawdzania, czy zmienne i operatory są używane w a
spójny sposób.

-g codegenPlik debugowania
codegenDebugFile to nazwa pliku, który ma zostać zapisany w wygenerowanych komunikatach debugowania
podczas konwersji instrukcji BASL na instrukcje C.

-c Plik c
cPlik to nazwa pliku, w którym zapisywany jest wygenerowany kod C.

GŁÓWNY STRUKTURA


Podstawowa struktura kodu programu planującego napisanego w języku BASL jest następująca:
zero or jeszcze FUNKCJE definicje
zero or jeszcze światowy ZMIENNA DEKLARACJE
zero or jeszcze cesja oświadczenia (do zainicjować światowy zmienne)
sched_main()
{
pierwszej or jeszcze ZMIENNA DEKLARACJE

zero or jeszcze SPRAWOZDANIA
}

Na przykład,
% jak sched.basl
Int suma (int a, Int b)
{
Int s;
s = a + b;
zwroty);
}
Int kula;
sched_main()
{
Int c;

a = 3;
b = 4;
c = suma (a, B);
drukuj(c);
kula = 5;
drukuj(globa);
}

sched_main() to funkcja wywoływana przy każdej iteracji planowania.

FUNKCJE


Aby zdefiniować funkcję, którą można wywołać w kolejnych funkcjach, składnia jest następująca:

Typ zwrotu nazwa funkcji ( TYP DANYCH1 IDENTYFIKATOR1,
TYP DANYCH2 IDENTYFIKATOR2, ... )
{
pierwszej or jeszcze ZMIENNA DEKLARACJE

zero or jeszcze SPRAWOZDANIA
}

Na przykład,
Unieważnić printStuff(Dzień tygodnia dół, DateTime t, sznur ul.
Rozmiar Sz, CNode cn)
{
drukuj(dow);
drukuj(t);
drukuj(str);
print(sz);
drukuj(cn);
}

Prawidłowa funkcja Typ zwrotu to: Void, Int, Float, Dayofweek, DateTime, String, Size,
Serwer, Que, Zadanie, CNode, Ustaw serwer, Ustaw Que, Ustaw zadanie, Ustaw CNode.

Prawidłowe typy danych ( TYP DANYCH1, TYP DANYCH2, ... ) dla identyfikatorów parametrów są to: Int,
Float, dzień tygodnia, data i godzina, ciąg, rozmiar, serwer, kolejka, zadanie, CNode, ustaw serwer, ustaw kolej,
Ustaw zadanie, ustaw węzeł C, zakres Int, zakres Float, zakres dzień tygodnia, zakres daty i godziny, rozmiar zakresu,
Fun Int, Fun Float, Fun Void, Fun Dayofweek, Fun DateTime, Fun String, Fun Size, Fun
Serwer, kolejka zabawy, praca zabawy, węzeł CNode zabawy, serwer zestawu zabawy, kolejka zestawu zabawy, praca zestawu zabawy, zestaw zabawy
CNode. Te typy danych zostaną omówione w następnym temacie.

Funkcje wywoływane są poprzez ich nazwę i argumenty, jak w:

wydrukuj( PON, (5|1|1997@14:32:00), „schemat zaczyna się",
30 GB, węzeł );

basl2c faktycznie doda przedrostek „basl_” do nazwy funkcji podanej przez program planujący
pisarz, aby zminimalizować ryzyko kolizji nazw, która może wystąpić, gdy wynikowy kod C
powiązane z bibliotekami PBS, BASL. Na przykład, jeśli spojrzysz na wygenerowany kod C dla
drukujRzeczy, zobaczyłbyś,

basl_printStuff( MON, (5|1|1997@14:32:00),
„rozpoczyna się harmonogram”, 30 GB, węzeł );

Podobnie jak w C, wszystkie wywołania funkcji muszą zostać wcześniej zdefiniowane. Kompilator BASL to zrobi
sprawdź, czy argumenty w wywołaniu funkcji są dokładnie zgodne (pod względem
typy) z parametrami w definicji funkcji.

W języku BASL istnieją dwa rodzaje funkcji: funkcje zdefiniowane przez użytkownika i funkcje predefiniowane.
Funkcje zdefiniowane przez użytkownika to te, dla których twórca programu planującego podał definicję,
natomiast funkcje predefiniowane to te, które można natychmiast wywołać bez potrzeby
zdefiniowanie tego. Listę predefiniowanych funkcji można znaleźć w rozdziale pt PREDEFINIOWANE FUNKCJE .

ZMIENNA DEKLARACJE


Podobnie jak w C, wszystkie zmienne w kodzie BASL muszą zostać jawnie zadeklarowane przed użyciem. Te
zmienne zadeklarowane poza jakąkolwiek funkcją nazywane są zmiennymi globalnymi, natomiast
zmienne zadeklarowane w treści funkcji nazywane są zmiennymi lokalnymi. Światowy
zmiennych można używać w dowolnym miejscu kodu BASL, natomiast zmienne lokalne można odczytać
tylko w ramach funkcji, z której zostały zadeklarowane.

Składnia deklaracji zmiennej jest następująca:

TYP DANYCH IDENTYFIKATOR ;

gdzie TYP DANYCH mogą być: Int, Float, Dayofweek, DateTime, String, Size, Server, Que, Job,
CNode, Ustaw serwer, Ustaw Que, Ustaw zadanie, Ustaw CNode, Range Int, Range Float, Range Dayofweek,
Zakres DateTime, Rozmiar zakresu.

DATA TYP


Unieważnić używany w przypadku funkcji, które nie zwracają wartości.

Int ze znakiem, liczby całkowite podane w podstawie 10.

Przykładowe stałe:
5, +1, -3, SUKCES (=1), NIEPOwodzenie (=0), PRAWDA (=1), FAŁSZ (=0)

pływak liczby rzeczywiste, które w przetłumaczonym kodzie C są reprezentowane jako liczby podwójne.
Przykładowe stałe: 4.3, +1.2, -2.6

Dzień tygodnia
wartości stałe: SUN, MON, TUE, WED, THU, FRI, SAT, wewnętrznie reprezentowane jako
stałe o wartościach całkowitych, gdzie SUN=0, MON=1 i tak dalej.

DateTime
określić w jednym z 3 formatów:

[1] (m|d|y) gdzie 1 <= m <= 12, 1 <= d <= 31, 0 <= y, np. (4|4|1997);

[2] (gg:mm:ss) gdzie 0 <= gg <= 23, 0 <= mm <= 59, 0 <= ss <= 61, np.
(12:01:00);

[3] (m|d|y@hh:mm:ss), ex. (4|4|1997@12:01:00)
Podczas porównywania dat/czasów, w przypadku czasu, zastępowany jest czas „teraz”.
część nie jest podana (format [1]); data „teraz” jest zastępowana, jeśli
nie podano części daty (format [2]). Również część całoroczna musi
należy podać w datach (tj. 1997 zamiast 97), aby uniknąć dwuznaczności.

sznur Ciąg znaków jest ujęty w cudzysłów (") i może zawierać wszystko oprócz innego
cudzysłów, znak nowej linii oraz lewy i prawy nawias.
Przykładowe stałe: „przykładowy ciąg znaków”, NULLSTR

Rozmiar format: gdzie przyrostek jest mnożnikiem postaci:
:

mnożnik jednostka (bajty or słowa)
=================== =====================
k,m,g,t,p,K,M,G,T,P b, B, w, W

gdzie k=K=1024, m=M=1,048,576 1,073,741,824 1,099,511,627,776, g=G=XNUMX XNUMX XNUMX XNUMX, t=T=XNUMX XNUMX XNUMX XNUMX XNUMX,
p=P=1,125,899,906,842,624 1 4 XNUMX XNUMX XNUMX, b=B=XNUMX, a wielkość słowa w=W jest definiowana lokalnie (tzn. XNUMX
bajtów na komputerze 32-bitowym).

Podczas pracy na 2 operandach rozmiaru, które mają różne przyrostki, przyrostek
„niższy” z nich będzie wynikowym przyrostkiem. Na przykład,
10 MB + 10 GB = 10250 MB
Przykładowe stałe: -1b, 2w, 1kb, 2mw, +3gb, 4tw, 6Pb

łodzie Int

format: (niska wartość Int, wysoka wartość Int)
gdzie niska wartość Int <= wysoka wartość Int. Stała próbki: (1,3)

łodzie pływak

format: (niska wartość zmiennoprzecinkowa, wysoka wartość zmiennoprzecinkowa)
gdzie niska wartość <= wysoka wartość. Stała próbki: (2.3, 4.6)

łodzie Dzień tygodnia

format: (wcześniej, później)
gdzie wcześniejszy dzień <= późniejszy dzień. Stała próbki: (ŚRODA, PIĄTEK)

łodzie DateTime

format: (wcześniejsza data/godzina, późniejsza data/godzina)
gdzie wcześniejsza data/godzina <= późniejsza data/godzina.
UWAGA: jeśli zakres zawiera tylko fragmenty czasowe, to wcześniejszy czas „pojawia się”.
być > późniejszy czas, jak w „((18:0:0), (6:0:0))”, a następnie podczas daty/godziny
porównań, „późniejszy” czas zostanie skorygowany o jeden dzień, tak aby tak było
wygląda jak: "( ( @18:0:0), ( @6:0:0) )"

Przykładowe stałe:
((4|4|1997), (4|10|1997)), ((12:01:00), (12:30:00)), ((4|4|1997@12:01:00),
(4|10|1997@12:30:00))

łodzie Rozmiar

format: (mały rozmiar, duży rozmiar)
gdzie mały rozmiar <= duży rozmiar. Przykładowe stałe: (23gb, 50gb)

serwer Mapuje bezpośrednio do obiektu serwera PBS. A serwer zarządza jednym lub większą liczbą Że obiekty.
Przykładowa stała: NOSERVER

CNode dla węzła obliczeniowego składającego się z pojedynczego obrazu systemu operacyjnego, pamięci współdzielonej i zestawu
procesora. CNode obsługuje 1 PBS MOM.
Przykładowa stała: NOCNODE

Że Mapuje bezpośrednio do obiektu kolejki PBS. A Że obiekt szpuluje jedną lub więcej Praca
obiekty.
Stała próbki: NOQUE

Praca Mapuje bezpośrednio do obiektu zadania PBS. A Praca obiekt ma pewne atrybuty i
wymagania dotyczące zasobów.
Stała próbki: NOJOB

Zestaw serwer
lista obiektów Serwera.
Przykładowa stała: EMPTYSETSERVER

Zestaw CNode
lista obiektów CNode.
Przykładowa stała: EMPTYSETCNODE

Zestaw Że lista obiektów Que.
Stała próbki: EMPTYSETQUE

Zestaw Praca lista obiektów Job.
Przykładowa stała: EMPTYSETJOB

ZDEFINIOWANY BASLEM STAŁE


Są to stałe, których nie można użyć do nazwania identyfikatora (patrz następny temat). Te
są zawsze pisane wielkimi literami.

DATA TYP ZDEFINIOWANY BASLEM STAŁA
=================== =============================================
Dzień tygodnia SŁOŃCE, PON, WT, POŚLUBIĆ, CZW, PIĄTEK, Sobota

Int POWODZENIE, PONIEŚĆ PORAŻKĘ, FAŁSZYWY, PRAWDZIWE, SYNCRUN, ASYNCRUN,
USUNĄĆ, PONOWNE ODTWORZENIE, UTRZYMAĆ, UWOLNIENIE, SYGNAŁ,
MODYFIKUJ, MODYFIKUJ, SERWER_AKTYWNY,
SERWER_IDLE, SERWER_SCHED, SERWER_TERM,
SERWER_TERMDELAY, QTYPE_E, QTYPE_R,
SCHED_WYŁĄCZONY, SCHED_WŁĄCZONY, TRANZYT,
W KOLEJCE, TRZYMANY, CZEKANIE, DZIAŁANIE, WYJŚCIE,
CNODE_OFFLINE, CNODE_DÓŁ, CNODE_FREE,
CNODE_RESERVE, CNODE_INUSE_EXCLUSIVE,
CNODE_INUSE_SHARED, CNODE_TIMESHRED,
CNODE_CLUSTER, CNODE_UNKNOWN, OP_EQ, OP_NEQ,
OP_LE, OP_LT, OP_GE, OP_GT, OP_MAX, OP_MIN,
ASC MALEJĄCO

serwer NIESERWER
Zestaw serwer OPRÓŻNIJ SERWER

CNode NOCNOD
Zestaw CNode OPRÓŻNIJ WĘZEŁ

Że NIC
Zestaw Że PUSTA SETKA

Praca BEZ PRACY
Zestaw Praca OPRÓŻNIJ SETJOB

sznur NULLSTR

IDENTYFIKATOR


Identyfikatory (używane do nazw zmiennych i nazw funkcji) są w formacie alfanumerycznym, z
dozwolony znak specjalnego podkreślenia (_). Obecnie BASL obsługuje tylko identyfikatory
o długości do 80 znaków. Nie można także używać nazw stałych zdefiniowanych w języku BASL
nazewnictwo identyfikatora.

SPRAWOZDANIA


In BASL(2), możesz mieć pojedynczą instrukcję zakończoną średnikiem lub grupę
instrukcje (zwane instrukcją złożoną lub blokiem) rozdzielone znakami „{” i „}”. Inny
rodzaje instrukcji, które mogą pojawić się w kodzie BASL to:

1. oświadczenie ekspresyjne
Instrukcje wyrażeń mogą mieć dowolną postać:

expr ;

gdzie expr mogą być:

a) Wyrażenia arytmetyczne

lekspr + wyraz (Dodaj)
lekspr - wyraz (odejmować)
lekspr * wyraz (zwielokrotniać)
lekspr / wyraz (dzielić)
lekspr % wyraz (moduł or reszta)

UWAGA: Dodawanie, odejmowanie, mnożenie, dzielenie i reszta
będzie dozwolone tylko dla właściwych typów i jeśli jest to lewy i prawy
wyrażenia są spójnego typu. Poniższa tabela ilustruje co
typy są spójne wśród różnych operatorów:

Dla +:

lekspr wyraz
============ ============
Int or pływak Int or pływak
Rozmiar Rozmiar
sznur sznur

Dla -, *, /:

lekspr wyraz
============ ============
Int or pływak Int or pływak
Rozmiar Rozmiar

Dla %:

lekspr wyraz
============ ============
Int or pływak Int or pływak

Oto kilka przykładowych wyrażeń arytmetycznych:
Int i1;
Int i2;
pływak f1;
pływak f2;
Rozmiar sz1;
Rozmiar sz2;
sznur str1;
sznur str2;

i1 + i2;
f1 - i2;
sz1 * sz2 * 2b;
sz1 / 1024b;

str1 = „bazy”;
str2 = " Fajny";

// dotychczasowy następujący is a ciąg konkatenacja
// działanie wynikły in dotychczasowy strunowy:
// „bazy fajny"
str1 + str2;

i1 % 10;

b) Wyrażenia jednoargumentowe

+ wyr // pozytywny - mnożyć by 1 an
// wyrażenie że is
// of Wewnętrzne, Pływak, or
// Rozmiar rodzaj

-wyr // ujemny - mnożyć by -1 an
// wyrażenie że is
// of Wewnętrzne, Pływak, or
// Rozmiar rodzaj

! wyr // nie - nawróceni a niezerowa expr
// wartość najnowszych 0, i a
// zero expr wartość najnowszych 1
// gdzie expr rodzaj musi be
// of rodzaj Int or pływak

Niektóre przykładowe wyrażenia jednoargumentowe:
Int i;

+ 3;
-(ja + 4);
!ja;

c) Wyrażenia logiczne

lekspr EQ wyraz
lekspr NEQ wyraz
lekspr LT wyraz
lekspr LE wyraz
lekspr GT wyraz
lekspr GE wyraz
lekspr ROLNICZE wyraz
lekspr OR wyraz

lekspr i wyraz muszą mieć typy, które są wzajemnie spójne, jak pokazano
w poniższej tabeli:

lterminal-wyrażenie rterminal-wyraż
============== ==============
Int or pływak Int or pływak
Dzień tygodnia Dzień tygodnia
DateTime DateTime
sznur sznur
Rozmiar Rozmiar
serwer serwer
Że Że
Praca Praca
CNode CNode
Zestaw serwer Zestaw serwer
Zestaw Że Zestaw Że
Zestaw Praca Zestaw Praca
Zestaw CNode Zestaw CNode

W razie zamówieenia projektu I, OR operatorzy, lekspr, wyraz spójne typy to Int lub
Platforma.

Niektóre przykładowe wyrażenia logiczne:

i1 EQ i2;
i1 NEQ f2;
dow1 LE dow2;
d1 LT d2;
str1 GT str2;
sz1 GE sz2;

d) Wyrażenia pooperacyjne
Są to wyrażenia stanowiące jedynie skrót do przypisania
sprawozdania.

IDENTYFIKATOR++; // identyfikator=identyfikator+1
IDENTYFIKATOR--; // identyfikator=identyfikator-1

IDENTYFIKATOR musi być typu Int lub Float.

Przykład:
Int i;
pływak f;

i + +;
F--;

e) Wywołanie funkcji

nazwa funkcji ( argument1 ,arg2 ... , argN )

gdzie argument1, ... argN może być dowolną stałą lub zmienną. Nie możesz mieć
kolejne wywołanie funkcji jako argument.
Przykład:
Unieważnić wydrukować a) {
drukuj(a);
}

pr(5);

Istnieją pewne predefiniowane funkcje, które może wykonać osoba pisząca program planujący
automatycznie wywołuje swój kod BASL bez konieczności jego definiowania.
Funkcje te nazywane są funkcjami pomocniczymi (lub funkcjami pomocniczymi).
funkcje) i zostały one omówione w punkcie PREDEFINIOWANE FUNKCJE temat.

f) Stałe
Niektóre prawidłowe wyrażenia stałe podano poniżej:
5;
+ 1.2;
SŁOŃCE;
PON;
WT;
POŚLUBIĆ;
CZW;
PIĄ;
SOBOTA;
(4|4|1997);
(12:01:00);
(4|4|1997@12:01:00);
"wspaniały";
-1b;
SYNCRUN;
ASYNCRUNA;
USUWAĆ;
PONOWNE ODTWORZENIE;
TRZYMAĆ;
UWOLNIENIE;
SYGNAŁ;
MODYFIKUJ ATR;
MODYFIKUJ;
(1, 3);
(2.3, 4.6);
(ŚRODA, PIĄTEK);
((4|4|1997), (4|10|1997));
((12:01:00), (12:30:00));
((4|4|1997@12:01:00), (4|10|1997@12:30:00));
(23 GB, 50 GB);
NIESERWER;
NOCNOD;
NOK;
BEZ PRACY;
OPRÓŻNIJ SERWER;
EMPTYSETCNODE;
PUSTA SETKA;
PUSTE USTAWIENIE PRACY;
NULLSTR;
POWODZENIE;
PONIEŚĆ PORAŻKĘ;
SERWER_AKTYWNY;
SERWER_IDLE;
SERWER_SCHED;
SERWER_TERM;
SERWER_TERMINDELAY;
QTYPE_E;
QTYPE_R;
SCHED_WYŁĄCZONE;
SCHED_WŁĄCZONY;
FAŁSZ;
PRAWDA;
TRANZYT;
W KOLEJCE;
TRZYMANY;
CZEKANIE;
DZIAŁANIE;
WYJŚCIE;
CNODE_OFFLINE;
CNODE_DÓŁ;
CNODE_FREE;
CNODE_RESERVE;
CNODE_INUSE_EXCLUSIVE;
CNODE_INUSE_SHARED;
CNODE_TIMESHRED;
CNODE_CLUSTER;
CNODE_UNKNOWN;
OP_EQ;
OP_NEQ;
OP_LE;
OP_LT;
OP_GE;
OP_GT;
OP_MAX;
OP_MIN;

g) Identyfikator

Przykład:
Wewnętrzne;

i;

2. Oświadczenie o cesji

IDENTYFIKATOR = expr ;

IDENTYFIKATOR i expr muszą mieć typy, które są wzajemnie spójne, jak
zilustrowano w poniższej tabeli:

identyfikator expr
=============== ===============
Int Wewnętrzne, pływak
pływak Wewnętrzne, pływak
Dzień tygodnia Dzień tygodnia
DateTime DateTime
sznur sznur
Rozmiar Rozmiar
Że Że
Praca Praca
CNode CNode
serwer serwer
Dzień tygodnia Dzień tygodnia
DateTime DateTime
Zestaw serwer Zestaw serwer
Zestaw Że Zestaw Że
Zestaw Praca Zestaw Praca
Zestaw CNode Zestaw CNode
łodzie Int łodzie Int
łodzie pływak łodzie pływak
łodzie Dzień tygodnia łodzie Dzień tygodnia
łodzie DateTime łodzie DateTime
łodzie Rozmiar łodzie Rozmiar

3. Jeśli inaczej oświadczenie
Format instrukcji if jest podobny do formatu w języku C z ograniczeniami
„{” i „}” zawsze obecne:

gdyby( expr ) {
zero or jeszcze (True) SPRAWOZDANIA
}

gdyby( expr ) {
zero or jeszcze (True) SPRAWOZDANIA
} więcej {
zero or jeszcze (fałszywe) SPRAWOZDANIA
}

Połączenia expr 's typem musi być Int lub Float, a po ocenie, jeśli jest
wartość jest różna od zera, wówczas wykonywane są instrukcje prawdziwe. Na drugim
formularz, jeśli expr ma wartość zero, wówczas wykonywane są fałszywe instrukcje.

Jakaś próbka if oświadczenia podano poniżej:

if (2 * x )
{
y = y + 3;
drukuj(y);
}

if (2 * x ) {
y = y + 3;
} więcej {
gdyby( 3 * x ) {
y = 4;
} więcej {
y = 5;
}
}

4. dla pętla oświadczenie
Format instrukcji for jest następujący:

dla( początek; test; akcja ) {
zero or jeszcze SPRAWOZDANIA
}

Podobnie jak w C, dla najpierw wykonuje początek , następnie ocenia test warunek
aby sprawdzić, czy zwraca wartość różną od zera. Jeśli tak się stanie, dla oświadczenia są
wykonany. Po dla instrukcje są wówczas wykonywane akcja jest oceniany,
a następnie sprawdza test stan ponownie w taki sam sposób, jak poprzednio.
początek i akcja może być prostym wyrażeniem przypisania lub operatorem końcowym
wyrażenie. test jest wyrażeniem logicznym/relacyjnym. Niektóre próbki dla
oświadczenia podano w następujący sposób:

dla (i = 0; i LT 3 ; i = i + 1)
{
drukuj(i);
}

dla (i = 0; i LT 2 * x; ja++)
{
if (x GT 3)
{
y = 99;
} więcej
{
x = 73;
}
}

5. foreach pętla oświadczenie
Ta instrukcja jest używana głównie do sukcesywnego pobierania każdego elementu
a Ustaw typ danych: Ustaw serwer, Ustaw CNode, Ustaw zadanie, Ustaw kolejkę. Składnia jest następująca:

foreach ( IDENTYFIKATOR 1 in IDENTYFIKATOR 2 ) {
zero or jeszcze SPRAWOZDANIA
}

gdzie dozwolone jest następujące parowanie typów identyfikatorów:

IDENTYFIKATOR 1 IDENTYFIKATOR 2
=========== ===========
serwer Zestaw serwer
Że Zestaw Że
Praca Zestaw Praca
CNode Zestaw CNode

Przykład:
serwer s;
Że q;
Praca j;
CNode c;

Zestaw serwer SS;
Zestaw Że kwadrat;
Zestaw Praca sj;
Zestaw CNode sc;

dotrzeć do (s in SS){
druk(i);
}
dotrzeć do (q in kwadrat){
drukuj(q);
}
foreach (j in sj){
drukuj(j);
}
dotrzeć do celu (ok in sc){
drukuj(c);
}

6. Podczas pętla oświadczenie
Składnia pętli while jest następująca:

Podczas ( expr ) {
zero or jeszcze SPRAWOZDANIA
}

gdzie expr musi być typu Int lub Float. Jeśli expr jest niezerowe, to wynosi zero
albo więcej SPRAWOZDANIA są wykonywane i expr jest ponownie oceniany.

Przykład:
Int i;
i = 3;
podczas gdy ja) {
gdyby( i EQ 0 ) {
drukuj("przerwa on i = 1");
break;
}
ja--;
}

7. wyłącznik oświadczenie
Instrukcja switch jest decyzją wielokierunkową, która sprawdza, czy
wartość identyfikatora pasuje do jednej z wielu wartości i rozgałęzia się do a
odpowiednio grupę stwierdzeń.
Składnia instrukcji switch jest następująca:

przełącznik( IDENTYFIKATOR ) {
walizka wyrażenie stałe :
{
zero or jeszcze SPRAWOZDANIA
}
walizka wyrażenie stałe :
{
zero or jeszcze SPRAWOZDANIA
}
...
walizka in zakres stałyOrSet-expr :
{
zero or jeszcze SPRAWOZDANIA
}
walizka in IDENTYFIKATOR-zakresOrSettype :
{
zero or jeszcze SPRAWOZDANIA
}
domyślnym :
{
zero or jeszcze SPRAWOZDANIA
}
}

gdzie wyrażenie stałe jest expr typu Int, Float, Dayofweek, DateTime,
Rozmiar, ciąg, serwer, kolejka, zadanie lub CNode. zakres stałyOrSet-expr i
IDENTYFIKATOR-zakresOrSettype może być typu Set Server, Set CNode, Set Que, Set
Zadanie, Zakres całkowity, Zakres zmiennoprzecinkowy, Zakres dnia tygodnia, Zakres daty i godziny lub Rozmiar zakresu.

IDENTYFIKATOR nie może być typu Void. IDENTYFIKATOR 's typ musi być spójny
w wyrażenie stałe 's, zakres stałyOrSet-expr 's, i IDENTYFIKATOR-
zakresOrSettype 's wpisz zgodnie z poniższą tabelą:
IDENTYFIKATOR wyrażenie o stałym zakresie, IDENTYFIKATOR-typ zakresu
=========== =========================================
serwer Zestaw serwer
Że Zestaw Że
Praca Zestaw Praca
CNode Zestaw CNode
Int łodzie Int
pływak łodzie pływak
Dzień tygodnia łodzie Dzień tygodnia
DateTime łodzie DateTime
Rozmiar łodzie Rozmiar

Jeśli wyrażenie case pasuje do IDENTYFIKATOR 's wartość, a następnie odpowiednią
wykonywany jest blok instrukcji. Inaczej niż w C, wykonanie NIE spada
aż do następnego opisu sprawy. Powodem jest to basl2c będzie
Przetłumacz to wyłącznik instrukcja w konstrukcji if-elseif-else. Walizka
oznaczony jako default jest wykonywany, jeśli żaden z pozostałych przypadków nie jest spełniony. The
domyślnym jest opcjonalne; jeśli go tam nie ma i jeśli żaden z przypadków nie pasuje, nie
akcja ma miejsce.

Przykład:
Dzień tygodnia dół;

przełącznik (w dół)
{
walizka MON:
{
print("przypadek PON");
}
walizka WT:
{
print("przypadek WT");
}
walizka POŚLUBIĆ:
{
print("przypadek POŚLUBIĆ");
}
walizka CZW:
{
print("przypadek CZW");
}
walizka PIĄ:
{
print("przypadek PIĄTEK");
}
walizka SAT:
{
print("przypadek SOBOTA”);
}
walizka SŁOŃCE:
{
print("przypadek SŁOŃCE");
}
domyślna:
{
print("przypadek niewykonane”);
}
}

Int a;
łodzie Int ja;
ri = (10, 12);
przełącznik(a)
{
walizka in (1,5):
{
print("przypadek 1,5");
}
walizka in (6,9):
{
print("przypadek 6,9");
}
walizka in odnośnie:
{
print("przypadek ri”);
}
}

8. oświadczenie
Instrukcja Print umożliwia wydrukowanie na standardowe wyjście dowolnej wartości identyfikator
or stały typu Int, Float, Dayofweek, DateTime, String, Size, Que, Job,
CNode, serwer, zakres Int, zakres Float, zakres dzień tygodnia, zakres DateTime,
Rozmiar zakresu.
Składnia jest następująca:

( IDENTYFIKATOR );
( stały );

Przykład:
DateTime dt;
CNode cn;

dt = (4|4|1997@12:13:36);
cn = AllNodesLocalHostGet();

drukuj(dt);
drukuj(cn);

W przypadku typów zestawów użyj foreach przejść przez każdy element i wydrukować jak w:

serwer s;
Zestaw serwer SS;

ss = AllServersGet();

dotrzeć do (s in SS) {
druk(i);
}

9. kontynuuj wypowiedź

kontynuować ;

Połączenia kontynuować instrukcja musiała zostać wywołana w ciągu a dla, dla każdego, i
Podczas pętla. Powoduje rozpoczęcie kolejnej iteracji otaczającej pętli.

10. instrukcja break

złamać ;

Połączenia złamać instrukcja musiała zostać wywołana w ciągu a dla, dla każdego, i Podczas
pętla. Zapewnia wczesne wyjście z otaczającej pętli.

11. oświadczenie zwrotne

powrót(IDENTYFIKATOR) ;
zwrot (stały) ;
powrót() ;

Instrukcja return podaje wartość (jeśli istnieje), która ma zostać zwrócona przez a
funkcjonować. Typ zwracany przez IDENTYFIKATOR i stały musi pasować do
typ zwracany przez funkcję wywołującą. stały dozwolone typy to wszystko z wyjątkiem
Typy zestawów i zakresów. Ostatni format, powrót() jest zwykle wywoływany w ciągu a
funkcja, która nie zwraca żadnej wartości (np sched_main() ).

12. oświadczenie o wyjściu

wyjście (stała);

gdzie stały jest typu Int. Wywołanie tej opcji zakończy działanie programu planującego.

13. Komentarz do oświadczenia
Są to instrukcje poprzedzone „//” i są ignorowane przez BASL
kompilator.

// to linia is ignorowane
Int i; // ciąg następujący dotychczasowy tnie is ignorowane

OPERATOR PRECEDENS ROLNICZE STOWARZYSZENIE


W poniższej tabeli przedstawiono różne poziomy pierwszeństwa operatorów i zdefiniowane powiązania
w języku BASL. Operatory są wymienione w kolejności malejącego pierwszeństwa. The
im wyższy priorytet operatora, tym wcześniej zostanie on wykonany. Kolejność, w jakiej
wykonywane są operatory na tym samym poziomie, w zależności od powiązania: lewy oznacza
operatorzy są widziani od lewej do prawej, natomiast prawy oznacza, że ​​są widziani od prawej do lewej.

Operator Stowarzyszenie
=================================== =============
! ++ -- + (jednoarowy plus) - (jednoarowy minus) prawo
* / % lewo
+ - lewo
LT LE GT GE lewo
EQ NEQ lewo
ROLNICZE lewo
OR lewo
= prawo

PREDEFINIOWANE FUNKCJE


In BASL(2), A. serwer typ danych jest mapowany bezpośrednio na obiekt serwera wsadowego. Podobnie, CNode
jest do mamy/resmom, Praca jest zadanie wsadowe i Że jest kolejka wsadowa. Jednak nie wszystkie
Dostęp do atrybutów obiektów PBS można uzyskać z BASL. Tylko podzbiór atrybutów,
te, które wydawały się mieć sens w kontekście harmonogramu, są udostępniane i
dostęp do wartości tych atrybutów można uzyskać wywołując następujące predefiniowane funkcje,
znane również jako funkcje asysty/pomocnika.

(1) Funkcje związane z serwerem

Zestaw serwer AllServersGet(void)
Zwraca listę serwerów określonych w pliku konfiguracyjnym dla
których autor programu planującego chce, aby system okresowo sprawdzał
informacje o statusie, kolejkach i zadaniach. Widzieć pbs__sched__basl(8b) dla
dyskusja na temat formatu pliku konfiguracyjnego.
UWAGA: Tę funkcję należy wywołać od wewnątrz sched_main() so
aby przy każdej iteracji planowania był najbardziej aktualny Zestaw serwer
struktura jest zwracana.

serwer Wszystkie serweryLocalHostGet(void)
Zwraca obiekt serwera reprezentujący hosta lokalnego. rozbrojona wartość:
NIESERWER. Jest to prosta funkcja do wywołania w środowiskach innych niż klastrowe
gdzie istnieje tylko jeden host serwera.
UWAGA: Tę funkcję należy wywołać od wewnątrz sched_main() (lub z
w ramach funkcji wywoływanej przez sched_main), tak aby przy każdym planowaniu
iteracja, najbardziej aktualna serwer struktura jest zwracana.

sznur ServerInetAddrGet(Serwer s)
Zwraca nazwę serwera. rozbrojona wartość: NULLSTR

sznur ServerDefQueGet(Serwer s)
Zwraca atrybut default_queue serwera s. rozbrojona wartość: NULLSTR

Int ServerStateGet(Serwer s)
Zwraca atrybut stanu_serwera serwera.

Wartość zwracana:
SERWER_AKTYWNY, SERWER_IDLE, SERWER_SCHED, SERWER_TERM,
SERVER_TERMDELAY, -1 (wartość rozbrojona)

Int ServerMaxRunJobsGet(Server s)
Zwraca atrybut max_running serwera. rozbrojona wartość: 0

Int ServerMaxRunJobsPerUserGet(Server s)
Zwraca atrybut max_user_run serwera. rozbrojona wartość: 0

Int ServerMaxRunJobsPerGroupGet(Server s)
Zwraca atrybut max_group_run serwera. rozbrojona wartość: 0

Zestaw Że ServerQueuesGet(Server s)
Zwraca listę kolejek zarządzanych przez serwery.

Zestaw Praca ServerJobsGet(Server s)
Zwraca listę zadań zarządzanych przez serwer s. Aby uzyskać podzbiór tego
lista, patrz QueJobsGet().

Int ServerIntResAvailGet(Server s, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa która jest dostępna dla miejsc pracy
uruchamiany przez ten serwer (Server nazwa_dostępnych zasobów atrybut). Zadzwoń do tego
funkcja dla zasobów o wartościach typu Int. Przykładowy zasób
nazwy to: cput, pcput, walltime, mppt, pppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Aby zapoznać się z ich opisem
nazwy zasobów, patrz pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
atrybuty_serwera pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Przykład:
Int procesorDostępny;
// powrót dotychczasowy # of cpus obecnie dostępny in
// dotychczasowy serwer
procesorDostępny = ServerIntResAvailGet(serwer, „ncpus”);

Rozmiar ServerSizeResAvailGet(Server s, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa która jest dostępna dla miejsc pracy
uruchamiany przez ten serwer (Server nazwa_dostępnych zasobów atrybut). Zadzwoń do tego
funkcja dla zasobów o wartościach typu Size. Przykładowy zasób
nazwy to: plik, mem, pmem, zestaw roboczy, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Aby zapoznać się z opisem tych zasobów
imiona, patrz pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
atrybuty_serwera pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Przykład:
Rozmiar memAvail;
// powrót dotychczasowy ilość of dostępny pamięć in
// dotychczasowy serwer
memAvail = ServerSizeResAvailGet(serwer, „pamięć”);

sznur ServerStringResAvailGet(Server s, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa która jest dostępna dla miejsc pracy
uruchamiany przez ten serwer (Server nazwa_dostępnych zasobów atrybut). Zadzwoń do tego
funkcja dla zasobów o wartościach typu String. Próbka
nazwy zasobów to: nodes, arch, neednodes. Aby zapoznać się z ich opisem
nazwy zasobów, patrz pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
atrybuty_serwera pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Przykład:
sznur rodzaj;
// powrót dotychczasowy architektura (lub os typ) of
// dotychczasowy serwer
rodzaj = ServerStringResAvailGet(serwer, "łuk");

Int ServerIntResAssignGet(Server s, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa do którego jest przydzielony
uruchomione zadania (serwer nazwa_przydzielonych zasobów atrybut). Zadzwoń do tego
funkcja dla zasobów o wartościach typu Int. Przykładowy zasób
nazwy to: cput, pcput, walltime, mppt, pppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Aby zapoznać się z ich opisem
nazwy zasobów, patrz pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
atrybuty_serwera pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Przykład:
Int przydział procesora;
// powrót dotychczasowy # of cpus obecnie przydzielony in
// dotychczasowy serwer
przydział procesora = ServerIntResAssignGet(serwer, „ncpus”);

Rozmiar ServerSizeResAssignGet(Server s, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa do którego jest przydzielony
uruchomione zadania (serwer nazwa_przydzielonych zasobów atrybut). Zadzwoń do tego
funkcja dla zasobów o wartościach typu Size. Przykładowy zasób
nazwy to: plik, mem, pmem, zestaw roboczy, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Aby zapoznać się z opisem tych zasobów
imiona, patrz pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
atrybuty_serwera pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Przykład:
Rozmiar sdsAssn;
// powrót dotychczasowy ilość of SDS przestrzeń obecnie przydzielony
// in dotychczasowy serwer
sdsAssn = ServerSizeResAssignGet(serwer, „sd”);

sznur ServerStringResAssignGet(Server s, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa do którego jest przydzielony
uruchomione zadania (serwer nazwa_przydzielonych zasobów atrybut). Zadzwoń do tego
funkcja dla zasobów o wartościach typu String. Próbka
nazwy zasobów to: nodes, arch, neednodes. Aby zapoznać się z ich opisem
nazwy zasobów, patrz pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
atrybuty_serwera pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Zestaw CNode ServerNodesGet(Server s)
Zwraca zbiór węzłów zarządzanych przez serwer s. rozbrojona wartość: EMPTYSETCNODE.
UWAGA: Zwykle dla zwróconych węzłów można wywołać następujące funkcje
przez to wywołanie: CNodeStateGet(), CNodePropertiesGet() i CNodeTypeGet().

Int Zapytanie o węzły serwera (serwer s, sznur spec)
Wysyła żądanie do określonego serwera w celu sprawdzenia dostępności
zasoby określone w spec. W chwili obecnej jedyne źródło
dozwolona specyfikacja to taka, która obejmuje „węzły” i może należeć do
formatuj „węzły”, „węzły =” lub „węzły = ". Wyniki zapytania mogą być
dostępny poprzez wywołanie następujących funkcji: ServerNodesNumAvailGet(),
ServerNodesNumAllocGet(), ServerNodesNumRsvdGet(),
ServerNodesNumDownGet().
UWAGA: To jest opakowanie do pbs_rescquery(3B) funkcja serwera.

Wartość zwracana:
SUKCES, NIEPOwodzenie

Int ServerNodesNumAvailGet(Server s)
Zwraca liczbę węzłów dostępnych dla węzłów zarządzanych przez określony
serwerze lub zgodnie z najnowszym zapytaniem określonym przez
Zapytanie o węzły serwera(). Jeśli wartość zwracana wynosi zero, oznacza to, że
pewna liczba węzłów obecnie potrzebna do spełnienia specyfikacji
Funkcja ServerNodesQuery() jest obecnie niedostępna. Żądanie może zostać spełnione
w jakimś późniejszym czasie. Jeśli wynik jest negatywny, nie ma kombinacji znanych
węzły mogą spełniać specyfikację.

Int ServerNodesNumAllocGet(Server s)
Zwraca liczbę węzłów przydzielonych do tych zarządzanych przez określony
serwerze lub zgodnie z najnowszym zapytaniem określonym przez
Zapytanie o węzły serwera().

Int ServerNodesNumRsvdGet(Server s)
Zwraca liczbę węzłów zarezerwowanych dla węzłów zarządzanych przez określony
serwerze lub zgodnie z najnowszym zapytaniem określonym przez
Zapytanie o węzły serwera().

Int ServerNodesNumDownGet(Server s)
Zwraca mniejszą liczbę węzłów zarządzanych przez określony
serwerze lub zgodnie z najnowszym zapytaniem określonym przez
Zapytanie o węzły serwera().

Int ServerNodesReserve (serwer s, Ciąg specyfikacja, int rezydujący)
Wysyła żądanie do określonego serwera w celu zarezerwowania zasobów
określone w spec. Wartość 0 dla zamieszkały oznacza, że ​​służy to do wykonania a
nowa rezerwacja. W przeciwnym razie liczba będzie reprezentować istniejącą
(częściowa) rezerwacja. Zasoby obecnie zarezerwowane na ten cel zamieszkały będzie
zostanie zwolniony i nastąpi ponowna próba pełnej rezerwacji. Na
w chwili obecnej jedynymi zasobami, które można określić, są
„węzły”. Należy określić jako węzły = specyfikacja gdzie
specyfikacja jest tym, co użytkownik określa na liście argumentów opcji -l
dla węzłów, patrz qsub (1B).
UWAGA: To jest opakowanie do pbs_rescreserve(3B) funkcja serwera.

Wartość zwracana:
numer referencyjny udanego lub częściowo udanego
rezerwacja lub NIEPOwodzenie

Int ServerNodesRelease(Server s, Int rezydujący)
Spowoduje to zwolnienie lub zwolnienie zasobów zarezerwowanych pod numerem referencyjnym
określone w zamieszkały.
UWAGA: To jest opakowanie do pbs_rescrelease(3B) funkcja serwera.

Wartość zwracana:
SUKCES lub NIEPOwodzenie

(2) Funkcje związane z Que:

sznur QueNameGet( Że oferuje nasz konfigurator )
Zwraca nazwę Que que. rozbrojona wartość: NULLSTR

Int QueTypeGet( Że oferuje nasz konfigurator )
Zwraca atrybut typu kolejki Que que.
Wartość zwracana: QTYPE_E (wykonanie), QTYPE_R (trasa), -1 (nieustawione)
wartość)

Int QueNumJobsGet( Że oferuje nasz konfigurator )
Zwraca liczbę stanowisk pracy znajdujących się w Que que. rozbrojona wartość: 0

Int QueMaxRunJobsGet( Że oferuje nasz konfigurator )
Zwraca atrybut max_running Que que. rozbrojona wartość: 0

Int QueMaxRunJobsPerUserGet( Że oferuje nasz konfigurator )
Zwraca atrybut max_user_run Que que. rozbrojona wartość: 0

Int QueMaxRunJobsNaGrupęGet( Że oferuje nasz konfigurator )
Zwraca atrybut max_group_run Que que. rozbrojona wartość: 0

Int QuePriorityGet( Że oferuje nasz konfigurator )
Zwraca atrybut priorytetu Que que. rozbrojona wartość: 0

Int QueStateGet( Że oferuje nasz konfigurator )
Zwraca rozpoczęty atrybut Que que - wybór wykonania zadania
stan kolejki: SCHED_DISABLED, SCHED_ENABLED. rozbrojona wartość:
SCHED_WYŁĄCZONE

Zestaw Praca QueJobsGet( Że oferuje nasz konfigurator )
Zwraca listę stanowisk pracy aktualnie znajdujących się w kolejce.

Int QueIntResAvailGet(Que q, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa który jest dostępny dla
zadania uruchamiane z tego q (Que nazwa_dostępnych zasobów atrybut).
Wywołaj tę funkcję dla zasobów o wartościach typu Int.
Przykładowe nazwy zasobów to: cput, pcput, walltime, mppt, pmppt, nice,
procs, mppe, ncpus, pncpus, nodect, srfs_assist, mta,..., mth. Dla
opis tych nazw zasobów, patrz pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), atrybuty_serwera pbs(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Rozmiar QueSizeResAvailGet(Que q, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa który jest dostępny dla
zadania uruchamiane z tego q (Que nazwa_dostępnych zasobów atrybut).
Wywołaj tę funkcję dla zasobów z wartościami typu Size.
Przykładowe nazwy zasobów to: plik, mem, pmem, zestaw roboczy, pf, ppf,
srfs_tmp, srfs_wrk, srfs_big, srfs_fast, sds, psds. Dla opisu
z tych nazw zasobów, patrz pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), atrybuty_serwera pbs(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

sznur QueStringResAvailGet(Que q, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa który jest dostępny dla
zadania uruchamiane z tego q (Que nazwa_dostępnych zasobów atrybut).
Wywołaj tę funkcję dla zasobów z wartościami typu String.
Przykładowe nazwy zasobów to: nodes, arch, neednodes. Dla opisu
z tych nazw zasobów, patrz pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), atrybuty_serwera pbs(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Int QueIntResAssignGet(Que q, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa do którego jest przydzielony
zadania uruchomione z tej kolejki (Que nazwa_przydzielonych zasobów atrybut).
Wywołaj tę funkcję dla zasobów o wartościach typu Int.
Przykładowe nazwy zasobów to: cput, pcput, walltime, mppt, pmppt, nice,
procs, mppe, ncpus, pncpus, nodect, srfs_assist, mta,..., mth. Dla
opis tych nazw zasobów, patrz pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), atrybuty_serwera pbs(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

Rozmiar QueSizeResAssignGet(Que q, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa do którego jest przydzielony
zadania uruchamiane z tego q (Que nazwa_przydzielonych zasobów atrybut).
Wywołaj tę funkcję dla zasobów z wartościami typu Size.
Przykładowe nazwy zasobów to: plik, mem, pmem, zestaw roboczy, pf, ppf,
srfs_tmp, srfs_wrk, srfs_big, srfs_fast, sds, psds. Dla opisu
z tych nazw zasobów, patrz pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), atrybuty_serwera pbs(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

sznur QueStringResAssignGet(Que q, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa do którego jest przydzielony
zadania uruchamiane z tego q (Que nazwa_przydzielonych zasobów atrybut).
Wywołaj tę funkcję dla zasobów z wartościami typu String.
Przykładowe nazwy zasobów to: nodes, arch, neednodes. Dla opisu
z tych nazw zasobów, patrz pbs_resources_irix5(7B),
pbs_resources_sp2(7B), pbs_resources_sunos4(7B),
pbs_resources_unicos8(7B), atrybuty_serwera pbs(7B),
pbs_resources_irix6(7B), pbs_resources_linux(7B).

(3) Funkcje związane z pracą

sznur JobIdGet( Praca praca )
Zwraca identyfikator zadania Job Job. rozbrojona wartość: NULLSTR

sznur Nazwa stanowiskaGet( Praca praca )
Zwraca atrybut Job_Name zadania Job. rozbrojona wartość: NULLSTR

sznur Nazwa właściciela stanowiska Get( Praca praca )
Zwraca atrybut Job_Owner zadania Job. rozbrojona wartość: NULLSTR

sznur JobEffectiveUserNameGet( Praca praca)
Zwraca atrybut euser zadania Job.

sznur JobEffectiveGroupNameGet(Job praca)
Zwraca atrybut egroup zadania Job. rozbrojona wartość: NULLSTR

Int Stan zadaniaGet ( Praca praca )
Zwraca atrybut job_state zadania Job.

Wartość zwracana:
TRANZYT, W KOLEJCE, WSTRZYMANO, OCZEKIWANIE, URUCHOMIENIE, WYJŚCIE, -1 (nieustawione
wartość)

Int Priorytet zadaniaGet( Praca praca )
Zwraca atrybut priorytetu zadania zadania. rozbrojona wartość: 0

Int JobRerunFlagGet( Praca praca )
Zwraca atrybut zadania Job, który można uruchomić ponownie.
Wartość zwracana: FALSE, TRUE, -1 (wartość rozbrojona)

Int JobInteractiveFlagGet( Praca praca )
Zwraca interaktywny atrybut zadania Job.
Wartość zwracana: FAŁSZ, PRAWDA. rozbrojona wartość: FAŁSZ

DateTime JobDateTimeCreatedGet(Job praca)
Zwraca atrybut ctime zadania Job. rozbrojona wartość:
(0|0|0@-1:-1:-1)

sznur JobEmailAddrGet( Praca praca )
Zwraca atrybut Mail_Users zadania Job. rozbrojona wartość: NULLSTR

sznur JobStageinFilesGet( Praca praca )
Zwraca atrybut stagein zadania Job. rozbrojona wartość: NULLSTR

sznur JobStageoutFilesGet( Praca praca )
Zwraca atrybut stageout zadania Job. rozbrojona wartość: NULLSTR

Int JobIntResReqGet(Zadanie praca, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa zgodnie z wymaganiami
praca (praca Nazwa_listy_zasobów atrybut). Wywołaj tę funkcję dla
zasoby o wartościach typu Int. Przykładowe nazwy zasobów
to: cput, pcput, walltime, mppt, pmppt, nice, procs, mppe, ncpus,
pncpus, nodect, srfs_assist, mta,..., mth. Aby zapoznać się z ich opisem
nazwy zasobów, patrz pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
atrybuty_serwera pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Przykład:
Int cputReq;
// powraca dotychczasowy procesor wymaganie of dotychczasowy praca
cputReq = JobIntResReqGet(praca, „procesor”);

Rozmiar JobSizeResReqGet(Job praca, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa zgodnie z wymaganiami
praca (praca Nazwa_listy_zasobów atrybut). Wywołaj tę funkcję dla
zasoby o wartościach typu Rozmiar. Przykładowe nazwy zasobów
są to: plik, mem, pmem, Workingset, pf, ppf, srfs_tmp, srfs_wrk,
srfs_big, srfs_fast, sds, psds. Aby zapoznać się z opisem tych zasobów
imiona, patrz pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
atrybuty_serwera pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Przykład:
Rozmiar memReq;
// powraca dotychczasowy pamięć wymaganie of dotychczasowy praca
wymaganie pamięci = JobSizeResReqGet(praca, „pamięć”);

sznur JobStringResReqGet(Job praca, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa zgodnie z wymaganiami
praca (praca Nazwa_listy_zasobów atrybut). Wywołaj tę funkcję dla
zasoby o wartościach typu String. Przykładowe nazwy zasobów
są to: węzły, łuk, potrzebne węzły. Aby zapoznać się z opisem tych zasobów
imiona, patrz pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
atrybuty_serwera pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Przykład:
sznur węzły;
// powraca dotychczasowy węzły wymaganie własność of
// dotychczasowy praca
węzły = JobStringResReqGet(zadanie, „węzły”);

Int JobIntResUseGet(Job praca, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa wykorzystywane w pracy (Job
nazwa_wykorzystanych zasobów atrybut). Wywołaj tę funkcję dla zasobów za pomocą
wartości typu Int. Przykładowe nazwy zasobów to: cput, pcput,
walltime, mppt, pmppt, nice, procs, mppe, ncpus, pncpus, nodect,
srfs_assist, mta,..., mth. Aby zapoznać się z opisem tych nazw zasobów,
widzieć pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
atrybuty_serwera pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Przykład:
Int WalltUse;
// powraca dotychczasowy ilość of czas na ścianie używany by
// dotychczasowy praca
walltUżyj = JobIntResUseGet(zadanie, „czas na ścianie”);

Rozmiar JobSizeResUseGet(Job praca, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa wykorzystywane w pracy (Job
nazwa_wykorzystanych zasobów atrybut). Wywołaj tę funkcję dla zasobów za pomocą
wartości typu Size. Przykładowe nazwy zasobów to: plik, mem,
pmem, zestaw roboczy, pf, ppf, srfs_tmp, srfs_wrk, srfs_big, srfs_fast,
sd, psd. Aby zapoznać się z opisem tych nazw zasobów, zobacz
pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
atrybuty_serwera pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

Przykład:
Rozmiar srfsUżyj;
// powraca dotychczasowy ilość of srfs_fast używany by
// dotychczasowy praca
srfsUżyj = JobSizeResUseGet(praca, „srfs_fast”);

sznur JobStringResUseGet(Job praca, sznur imię)
Zwraca wartość do zasobu określonego w Nazwa wykorzystywane w pracy (Job
nazwa_wykorzystanych zasobów atrybut). Wywołaj tę funkcję dla zasobów za pomocą
wartości typu String. Przykładowe nazwy zasobów to: węzły,
łuk, potrzebne węzły. Aby zapoznać się z opisem tych nazw zasobów, zobacz
pbs_resources_irix5(7B), pbs_resources_sp2(7B),
pbs_resources_sunos4(7B), pbs_resources_unicos8(7B),
atrybuty_serwera pbs(7B), pbs_resources_irix6(7B),
pbs_resources_linux(7B).

(4) Funkcje związane z CNode

Zestaw CNode AllNodesGet(void)
Zwraca listę węzłów zarządzanych przez serwer działający na platformie
Lokalny Gospodarz. Może to również obejmować te węzły, które zostały określone
w pliku konfiguracyjnym programu planującego, dla którego program piszący program planujący
chce, aby system okresowo sprawdzał informacje takie jak stan,
własność i tak dalej. Widzieć pbs_sched_basl(8b) do omówienia
format pliku konfiguracyjnego.
UWAGA: Tę funkcję należy wywołać od wewnątrz sched_main() so
aby przy każdej iteracji planowania był najbardziej aktualny Zestaw CNode
struktura jest zwracana. Nie wywołuj tego z instrukcji przypisania
przeznaczony do inicjowania zmiennej globalnej, tak jak robi to tylko instrukcja
zostać wezwanym raz.

CNode AllNodesLocalHostGet(void)
Zwraca obiekt CNode reprezentujący hosta lokalnego. To jest
prosta funkcja wywoływania systemów nieklastrowych, w których jest tylko 1 CNode
istnieje. rozbrojona wartość: NOCNODE
UWAGA: Tę funkcję należy wywołać od wewnątrz sched_main() (lub
z poziomu funkcji wywoływanych przez sched_main), tak aby przy każdym
planowanie iteracji, najbardziej aktualne CNode struktura jest
zwrócony. Nie wywołuj tego z zamierzonej instrukcji przypisania
zainicjuj zmienną globalną, ponieważ instrukcja zostanie wywołana
pewnego razu.

sznur CNodeNameGet(CNode węzeł)
Zwraca unikalną (oficjalną) nazwę węzła (tj. nazwę hosta ResMom
w modelu 1 mama/węzeł). Zwraca ten sam ciąg, który był
określone w pliku konfiguracyjnym. rozbrojona wartość: NULLSTR

sznur CNodeOsGet(CNode węzeł)
Zwraca architekturę systemu operacyjnego węzła (tj. „irix5”, „sp2”). nieoprawny
wartość: NULLSTR

Int CNodeStateGet( CNode węzeł )
Zwraca stan węzła.

Wartość zwracana:
CNODE_OFFLINE, CNODE_DOWN, CNODE_FREE, CNODE_RESERVE,
CNODE_INUSE_EXCLUSIVE, CNODE_INUSE_SHARED, CNODE_UNKNOWN

Int CNodeTypeGet( CNode węzeł )
Zwraca typ węzła.

Wartość zwracana:
CNODE_TIMESHARED, CNODE_CLUSTER, CNODE_UNKNOWN

sznur CNodePropertiesGet(CNode węzeł)
Zwraca listę oddzielonych przecinkami innych nazw, pod którymi znany jest węzeł
(właściwości, inna nazwa sieci). Na przykład,
„babbage.OpenPBS.org” może być nazwą węzła, ale może być również znana
poprzez „babbage1, babbage2”. rozbrojona wartość: NULLSTR

sznur CNodeVendorGet(CNode węzeł)
Zwraca nazwę dostawcy sprzętu komputera (tj
„sgi”, „ibm”). rozbrojona wartość: NULLSTR

Int CNodeNumCpusGet(CNode węzeł)
Zwraca liczbę procesorów podłączonych do węzła. rozbrojona wartość:
-1

Rozmiar CNodeMemTotalGet( CNode węzeł, sznur rodzaj )
Zwraca całkowitą pamięć rodzaj dla węzła. rodzaj jest arbitralny
ciąg znaków, który autor programu planującego definiuje w programie planującym
plik konfiguracyjny. rozbrojona wartość: -1b
Przykład:
// otrzymać całkowity fizyczny pamięć
CNodeMemTotalGet(węzeł, "prawdziwy")
// otrzymać całkowity faktyczny pamięć
CNodeMemTotalGet(węzeł, "wirtualny")

Rozmiar CNodeMemAvailGet( CNode węzeł, sznur rodzaj )
Zwraca dostępną pamięć rodzaj dla węzła. rodzaj jest arbitralny
ciąg znaków, który autor programu planującego definiuje w programie planującym
plik konfiguracyjny. rozbrojona wartość: -1b
Zatem przykładowe wywołania będą następujące:
// otrzymać dostępny fizyczny pamięć
CNodeMemAvailGet(węzeł, "prawdziwy")
// otrzymać dostępny faktyczny pamięć
CNodeMemAvailGet(węzeł, "wirtualny")

Int CNodeIdletimeGet( CNode węzeł )
Zwraca liczbę sekund, przez które nie było naciśnięcia klawisza ani ruchu myszy
miało miejsce na dowolnym terminalu podłączonym do węzła. rozbrojona wartość: -1

pływak CNodeLoadAveGet( CNode węzeł )
Zwraca średnie obciążenie węzła dla wszystkich procesorów. rozbrojona wartość: -1.0

Int CNodeCpuPercentIdleGet( CNode węzeł )
Zwraca procent czasu bezczynności wszystkich procesorów węzła
doświadczył.

Int CNodeCpuPercentSysGet( CNode węzeł )
Zwraca procent czasu, jaki mają wszystkie procesory węzła
spędził na uruchamianiu kodu jądra.

Int CNodeCpuPercentUserGet( CNode węzeł )
Zwraca procent czasu, jaki mają wszystkie procesory węzła
spędził na uruchamianiu kodu użytkownika.

Int CNodeCpuPercentGuestGet( CNode węzeł )
Zwraca procent czasu, jaki mają wszystkie procesory węzła
spędził na uruchamianiu systemu operacyjnego gościa.

Int CNodeNetworkBwGet( CNode węzeł, sznur rodzaj )
Zwraca przepustowość sieci węzła rodzaj w bajtach/sekundę.
rodzaj jest definiowany przez autora programu planującego w harmonogramie
plik konfiguracyjny. rozbrojona wartość: -1
Niektóre przykładowe wywołania to:
CNodeNetworkBwGet( węzeł, „hipis” );
CNodeNetworkBwGet( węzeł, „fddi” );

Rozmiar CNodeDiskSpaceTotalGet(CNode węzeł, sznur imię)
Zwraca całkowitą przestrzeń węzła na dysku identyfikowaną przez Nazwa gdzie Nazwa
to nazwa urządzenia arbitralnie zdefiniowana przez autora programu planującego w pliku
plik konfiguracyjny harmonogramu. rozbrojona wartość: -1b
Przykład:
CNodeDiskSpaceTotalGet( węzeł, „/zadrapanie2” );

Rozmiar CNodeDiskSpaceAvailGet(CNode węzeł, sznur imię)
Zwraca dostępne miejsce węzła na dysku identyfikowane przez Nazwa gdzie
Nazwa jest arbitralnie definiowany przez autora programu planującego w programie planującym
plik konfiguracyjny. rozbrojona wartość: -1b
Przykład:
CNodeDiskSpaceAvailGet( węzeł, „/zadrapanie1” );

Rozmiar CNodeDiskSpaceReservedGet(CNode węzeł, sznur imię)
Zwraca zarezerwowane miejsce węzła na dysku (przydział użytkownika?) identyfikowane przez
Nazwa gdzie Nazwa jest arbitralnie zdefiniowany przez autora programu planującego w pliku
plik konfiguracyjny harmonogramu. rozbrojona wartość: -1b
Przykład:
CNodeDiskSpaceReservedGet( węzeł, „/zadrapanie1” );

Int CNodeDiskInBwGet( CNode węzeł, sznur Nazwa )
Zwraca przepustowość zapisu (bajty/s) zidentyfikowanego dysku węzła
by Nazwa . rozbrojona wartość: -1
Przykład:
CNodeDiskInBwGet( węzeł, "/szybko" );

Int CNodeDiskOutBwGet( CNode węzeł, sznur Nazwa )
Zwraca przepustowość odczytu (bajty/s) dysku węzła identyfikowanego przez
Nazwa . rozbrojona wartość: -1
Przykład:
CNodeDiskOutBwGet( węzeł, "/duży" );

Rozmiar CNodeSwapSpaceTotalGet( CNode węzeł, sznur Nazwa )
Zwraca całkowitą przestrzeń węzła podczas wymiany identyfikowaną przez Nazwa gdzie Nazwa
jest arbitralnie definiowany przez autora programu planującego w programie planującym
plik konfiguracyjny. rozbrojona wartość: -1b
Przykład:
CNodeSwapSpaceTotalGet( węzeł, "podstawowa" );

Rozmiar CNodeSwapSpaceAvailGet( CNode węzeł, sznur Nazwa )
Zwraca dostępną przestrzeń węzła podczas wymiany identyfikowaną przez Nazwa gdzie Nazwa
to nazwa urządzenia arbitralnie zdefiniowana przez autora programu planującego w pliku
plik konfiguracyjny harmonogramu. rozbrojona wartość: -1b
Przykład:
CNodeSwapSpaceAvailGet( węzeł, "wtórny" );

Int CNodeSwapInBwGet( CNode węzeł, sznur Nazwa )
Zwraca szybkość wymiany urządzenia wymiany węzła zidentyfikowanego przez nazwa.
Przykład:
CNodeSwapInBwGet(węzeł, "wtórny");

Int CNodeSwapOutBwGet( CNode węzeł, sznur Nazwa )
Zwraca współczynnik wymiany urządzenia wymiany węzła identyfikowanego przez
nazwa. rozbrojona wartość: -1
Przykład:
CNodeSwapOutBwGet(węzeł, "podstawowy");

Rozmiar CNodeTapeSpaceTotalGet( CNode węzeł, sznur Nazwa )
Zwraca całkowitą przestrzeń węzła na taśmie identyfikowaną przez Nazwa gdzie Nazwa
jest arbitralnie definiowany przez autora programu planującego w programie planującym
plik konfiguracyjny. rozbrojona wartość: -1b
Przykład:
CNodeTapeSpaceTotalGet(węzeł, „4 mm”);

Rozmiar CNodeTapeSpaceAvailGet( CNode węzeł, sznur Nazwa )
Zwraca dostępne miejsce węzła na taśmie identyfikowane przez Nazwa gdzie
Nazwa jest arbitralnie definiowany przez autora programu planującego w programie planującym
plik konfiguracyjny. rozbrojona wartość: -1b
Przykład:
CNodeTapeSpaceAvailGet(węzeł, „8mm”);

Int CNodeTapeInBwGet( CNode węzeł, sznur Nazwa )
Zwraca przepustowość zapisu (w bajtach/s) zidentyfikowanej taśmy węzła
by Nazwa . rozbrojona wartość: -1
Przykład:
CNodeTapeInBwGet( węzeł, "4mm" );

Int CNodeTapeOutBwGet( CNode węzeł, sznur Nazwa )
Zwraca przepustowość odczytu (bajty/s) zidentyfikowanej taśmy węzła
by Nazwa . rozbrojona wartość: -1
Przykład:
CNodeTapeOutBwGet( węzeł, "8mm" );

Rozmiar CNodeSrfsSpaceTotalGet( CNode węzeł, sznur Nazwa )
Zwraca całkowitą przestrzeń węzła na urządzeniu srfs zidentyfikowaną przez Nazwa
gdzie Nazwa jest arbitralnie zdefiniowany przez autora programu planującego w pliku
plik konfiguracyjny harmonogramu. rozbrojona wartość: -1b
Przykład:
CNodeSrfsSpaceTotalGet(węzeł, "/szybko");

Rozmiar CNodeSrfsSpaceAvailGet( CNode węzeł, sznur Nazwa )
Zwraca dostępne miejsce węzła na urządzeniu srfs zidentyfikowanym przez Nazwa
gdzie Nazwa jest w niektórych przypadkach arbitralnie definiowany przez autora programu planującego
plik konfiguracyjny. rozbrojona wartość: -1b
Przykład:
CNodeSrfsSpaceAvailGet( węzeł, "/duży" );

Rozmiar CNodeSrfsSpaceReservedGet(CNode węzeł, sznur imię)
Zwraca całkowitą ilość zarezerwowanego miejsca węzła na urządzeniu srfs
zidentyfikowane przez Nazwa gdzie Nazwa jest dowolnie definiowany przez program planujący
zapisujący w pliku konfiguracyjnym programu planującego. rozbrojona wartość: -1b
Przykład:
CNodeSrfsSpaceReservedGet( węzeł, "/szybko" );

Int CNodeSrfsInBwGet( CNode węzeł, sznur Nazwa )
Zwraca przepustowość zapisu (bajty/s) urządzenia srfs węzła
zidentyfikowane przez Nazwa . rozbrojona wartość: -1
Przykład:
CNodeSrfsInBwGet(węzeł, "/szybki" );

Int CNodeSrfsOutBwGet( CNode węzeł, sznur Nazwa )
Zwraca przepustowość odczytu (bajty/s) urządzenia srfs węzła
zidentyfikowane przez Nazwa . rozbrojona wartość: -1
Przykład:
CNodeSrfsOutBwGet(węzeł, "/duży" );

(5) Różne funkcje

DateTime datagodzinaGet()
pobiera aktualną datę/godzinę.

Int datetimeToSecs(DataGodzina dt)
zwraca liczbę sekund od epoki (początek czasu UNIX -
00:00:00, 1 stycznia 1970) dla podanej daty/godziny dt.

Int ZadanieAkcja( Praca praca, Int akcji, sznur moje pieniądze )
Wykonuje akcja on praca z moje pieniądze określone w zależności od
akcji. akcja może być: SYNCRUN, ASYNCRUN, DELETE, RERUN, HOLD,
ZWOLNIENIE, SYGNAŁ, MODYFIKACJA, MODYFIKACJA gdzie:
Działania Opis
=============== ==========================
SYNCRUN działa dotychczasowy praca synchronicznie,
znaczenie dotychczasowy wezwanie do
ZadanieAkcja() będzie tylko
powrót jeśli chodzi o komunikację i motywację dotychczasowy praca ma
rozpoczęty bieganie or jeśli chodzi o komunikację i motywację
an błąd ma być
napotkany.
Param wartość:
Nazwa of zastępy niebieskie) do biegać
praca pod.

ASYNCRUN działa dotychczasowy praca asynchronicznie,
znaczenie dotychczasowy wezwanie do
ZadanieAkcja() będzie powrót
natychmiast as wkrótce as
dotychczasowy biegać zażądać is
zatwierdzony by dotychczasowy PBS serwer,
i nie koniecznie jeśli chodzi o komunikację i motywację
dotychczasowy praca ma rozpoczęty
wykonanie.
Param wartość:
Nazwa of zastępy niebieskie) do biegać
praca pod.

DELETE usuwa dotychczasowy praca.
Param wartość:
"delopóźnienie=<# of sekundy>”
- opóźnienie # of sekund
pomiędzy dotychczasowy wysyłanie
of SIGTERM i SIGKILL
do dotychczasowy praca zanim
miejsce usunięte.

PONOWNE ODTWORZENIE powtarza się dotychczasowy bieganie praca,
który dotyczy kończący się
dotychczasowy Sesja lider of dotychczasowy
praca i powrót dotychczasowy praca
do dotychczasowy w kolejce stan.

UTRZYMAĆ miejsc pierwszej or jeszcze posiada
on dotychczasowy praca.
Param wartość:
„ty”, „o”, "S", „uu”, „os”,
„uos”
- rodzaj of posiada do miejsce
on stanowisko: użytkownik), Inny),
system).

ZWOLNIENIE usuwa or komunikaty
posiada umieszczony on Oferty pracy.
Param wartość:
„ty”, „o”, "S", „uu”, „os”,
„uos”
- rodzaj of posiada do usunąć
od stanowisko: użytkownik), Inny),
system).

SYGNAŁ wysyła a sygnał do dotychczasowy
wykonywania praca.
Param wartość:
„HUP”, "WYJDŹ",...

MODYFIKUJATTR modyfikuje dotychczasowy określony
atrybut of dotychczasowy praca do
dotychczasowy dany wartość, jeśli chodzi o komunikację i motywację
dotychczasowy nazwa_atrybutu is
!= „Lista_zasobów” or
„wykorzystane_zasoby”.
Param wartość:
„nazwa_atrybutu=wartość”

MODYFIKUJ modyfikuje dotychczasowy Oferty pracy
Lista_zasobów
atrybut dany dotychczasowy
nazwa_res i dotychczasowy
wartość_res:
Lista_zasobów.nazwa_res=
res_wartość
Param wartość:
„res_name=res_val”
moje pieniądze wartość zależy od akcji. Określ NULLSTR, jeśli nie ma wartości
ten parametr jest pożądany.
Wartość zwracana: SUKCES lub FAIL.
UWAGA: Wszelkie nierozpoznane akcja jest ignorowany.
Przykład:
// biegać Praca j synchronicznie
ZadanieAkcja(j, SYNCRUN, NULLSTR);

// biegać Praca j asynchronicznie on gospodarz „db”
ZadanieAkcja(j, ASYNCRUN, „baza danych”);

// usunąć Praca j
ZadanieAkcja(j, USUNĄĆ, NULLSTR);

// usunąć Praca j w a opóźnienie of 5 suchy
// pomiędzy dotychczasowy wysyłanie of SIGTERM i
// SIGKILL
ZadanieAkcja(j, USUNĄĆ, „delopóźnienie=5”);

// ponownie odtwarzać Praca j
ZadanieAkcja(j, PONOWNE ODTWORZENIE, NULLSTR);

// miejsce a użytkownik) przytrzymaj on Praca j
ZadanieAkcja(j, UTRZYMAĆ, „ty”);

// miejsce an Inny) przytrzymaj on Praca j
ZadanieAkcja(j, UTRZYMAĆ, „o”);

// miejsce a system) przytrzymaj on Praca j
ZadanieAkcja(j, UTRZYMAĆ, "S");

// miejsce a domyślnym przytrzymaj (U) on Praca j
ZadanieAkcja(j, UTRZYMAĆ, NULLSTR);

// zwolnić użytkownik) przytrzymaj od Praca j
ZadanieAkcja(j, UWOLNIENIE, „ty”);

// zwolnić Inny) przytrzymaj od Praca j
ZadanieAkcja(j, UWOLNIENIE, „o”);

// zwolnić system) przytrzymaj od Praca j
ZadanieAkcja(j, UWOLNIENIE, "S");

// zwolnić domyślnym przytrzymaj (U) od Praca j
ZadanieAkcja(j, UWOLNIENIE, NULLSTR);

// wysłać ZGŁOSZENIE sygnał do Praca j
ZadanieAkcja(j, SYGNAŁ, „WYJDŹ”);

// aktualizacja dotychczasowy komentarz atrybut of Praca
// j do "a wiadomość".
// Połączenia moje pieniądze format jest: nazwa_atrybutu=nowa_wartość
// Konsultować PBS dokumentacja dla a podstęp of praca
// atrybut Nazwy że mogą be określony.
ZadanieAkcja(j, MODYFIKUJ, „komentarz=a wiadomość");
// aktualizacja dotychczasowy Resource_List.cput atrybut of Praca
// j do 3600 towary drugiej jakości.
// Połączenia moje pieniądze format jest: nazwa_zasobu=nowa_wartość
// See zasoby_pbs* mężczyzna strona dla a podstęp of
// nazwy_zasobów że mogą be określony.
ZadanieAkcja(j, MODYFIKUJ, „cput=3600”);

QueJobFind (Que que, zabawa Int func, int cpr, Int wartość);

QueJobFind (Que que, zabawa sznur func, int cpr, ciąg wartość);

QueJobFind (Que que, zabawa DateTime func, int cpr, data i godzina wartość);

QueJobFind (Que que, zabawa Rozmiar func, int cpr,Rozmiar wartość);

gdzie CPR jest jednym z: OP_EQ, OP_NEQ, OP_LE, OP_LT, OP_GE, OP_GT. funkcjonować
to funkcja, której JEDYNYM argumentem jest typ Job. Praca jest powrót
rodzaj.

Opis: dotyczy funkcjonować do każdej pracy oferuje nasz konfigurator , i zwróć pierwszy
zadanie spełniające logiczne porównanie: funkcja (praca) CPR wartość

Przykład:

Rozmiar JobVirtualMemAvailGet(Job praca)
{
Rozmiar Sz;

sz = JobSizeResReqGet(praca, „pamięć”);
powrót(sz);
}
Int JobWallTimeReqGet(Job praca)
{
Int Wallt;

Wallet = JobIntResReqGet(praca, „czas na ścianie”);
powrót(wallt);
}

Int JobCpuTimeUsedGet(Job praca)
{
Int procesor;

procesor = JobIntResUseGet(zadanie, „procesor”);
powrót(przetwarzanie);
}

Że findQueByName (zestaw Że kolejki, sznur nazwa_q)
{
Że q;

dotrzeć do (q in kolejki) {
gdyby( QueNameGet(q) EQ nazwa_q ) {
powrót(q);
}
}
powrót(NOQUE);
}
sched_main()
{
serwer s;
Że niż;
Zestaw Że kwadrat;

// otrzymać miejscowy serwer
s = AllServersLocalHostGet();

// otrzymać dotychczasowy ogony of dotychczasowy serwer s
sq = ServerQueuesGet(s);

// otrzymać dotychczasowy kolejka o imieniu "szybki" od dotychczasowy
// miejscowy serwer
oferuje nasz konfigurator = znajdźQueByName( kwadrat, "szybki" );

// Znajdź dotychczasowy 1 praca którego czas na ścianie wymaganie
// is == 300:
QueJobFind(que, JobWallTimeReqGet, OP_EQ, 300);

// Znajdź dotychczasowy 1 praca którego E-mail adres do
// powiadom O Varso Invest praca działalność != "bayucan":
QueJobFind(que, JobEmailAddrGet, OP_NEQ,
„Bayucan”);

// Znajdź dotychczasowy 1 praca że była stworzony po
// or on 3/3/1997:
QueJobFind(que, JobDateTimeCreatedGet, OP_GE,
(3|3|1997));

// Znajdź dotychczasowy 1 praca że była stworzony po
// 3:3:44:
QueJobFind(que, JobDateTimeCreatedGet, OP_GT,
(3:3:44));

// Znajdź dotychczasowy 1 praca że była stworzony po
// 3:3:44 on 3/3/1997:
QueJobFind(que, JobDateTimeCreatedGet, OP_GT,
(3|3|1997@3:3:44));

// Znajdź dotychczasowy 1 praca którego cpu czas używany < 1600:
QueJobFind(que, JobCpuTimeUsedGet, OP_LT, 1600);

// Znajdź dotychczasowy 1 praca którego faktyczny pamięć
// wymaganie <= 300mb:
QueJobFind(que, JobVirtualMemAvailGet, OP_LE,
300MB);
}

Praca QueJobFind( Że że, zabawa Int funkcja, Int reanimacja)

Praca QueJobFind( Że że, zabawa sznur funkcja, Int reanimacja)

Praca QueJobFind( Że że, zabawa DateTime funkcja, Int reanimacja)

Praca QueJobFind( Że że, zabawa Rozmiar funkcja, Int reanimacja)

gdzie CPR może mieć jedną z następujących wartości: OP_MAX, OP_MIN, funkcjonować jest
funkcja, której jedynym argumentem jest typ Job.

Opis: Zwraca zadanie ze znalezioną wartością maksymalną lub minimalną
funkcja (praca) ponieważ ma to zastosowanie do każdej pracy w oferuje nasz konfigurator .

Przykład:
Int JobCpuTimeReqGet(Zadanie praca)
{
Int procesor;

procesor = JobIntResReqGet(praca, „procesor”);
powrót(przetwarzanie);
}
sched_main()
{
Że niż;
Praca stanowisko;

// Znajdź dotychczasowy Praca w dotychczasowy Najwyższa cpu czas
// wymóg:
praca = QueJobFind(que, JobCpuTimeReqGet, OP_MAX);

// Znajdź dotychczasowy Praca w dotychczasowy minimum cpu czas
// wymóg:
praca = QueJobFind(que, JobCpuTimeReqGet, OP_MIN);
}

Że QueFilter (Que que, zabawa Int func, int cpr, Int wartość)

Że QueFilter (Que que, zabawa sznur func, int cpr, ciąg wartość)

Że QueFilter (Que que, zabawa DateTime func, int cpr, data wartość)

Że QueFilter (Que que, zabawa Rozmiar func, int cpr,Rozmiar wartość)

gdzie CPR może mieć jedną z następujących wartości: OP_EQ, OP_NEQ, OP_LE, OP_LT,
OP_GE, OP_GT, funkcjonować to funkcja, której jedynym argumentem jest typ Job.

Opis: dotyczy funkcjonować do każdej pracy oferuje nasz konfigurator , i zwraca nową kolejkę
zawierający wszystkie zadania spełniające warunek porównania:
funkcja (praca) CPR wartość

Przykład:
Int JobWallTimeReqGet(Job praca)
{
Int Wallt;

Wallet = JobIntResReqGet(praca, „czas na ścianie”);
powrót(wallt);
}
sched_main()
{
Że niż;
Że nowyq;

// Returns a nowa oferuje nasz konfigurator zawierające cała kolekcja Oferty pracy in "To"
// w a czas na ścianie wymaganie == 300:
nowyq = QueFilter(que, JobWallTimeReqGet, OP_EQ, 300);

// Returns a nowa oferuje nasz konfigurator zawierające cała kolekcja Oferty pracy in "To"
// w an E-mail adres != "bayucan":
nowyq = QueFilter(que, JobEmailAddrGet, OP_NEQ, „Bayucan”);

// Returns a nowa oferuje nasz konfigurator zawierające cała kolekcja Oferty pracy in "To"
// stworzony po or on 3/3/1997:
nowyq = QueFilter(que, JobDateTimeCreatedGet, OP_GE,
(3|3|1997));

// Returns a nowa oferuje nasz konfigurator zawierające cała kolekcja Oferty pracy in "To"
// stworzony po 3:3:44:
nowyq = QueFilter(que, JobDateTimeCreatedGet, OP_GT,
(3:3:44));

// Returns a nowa oferuje nasz konfigurator zawierające cała kolekcja Oferty pracy in "To"
// stworzony po 3:3:44 on 3/3/1997:
nowyq = QueFilter(que, JobDateTimeCreatedGet, OP_GT,
(3|3|1997@3:3:44));

// UWAGA: Połączenia oryginalny "To" is nie zmodyfikowano
// cokolwiek.
}

Int Sortuj(Ustaw Praca s, zabawa Int klawisz, Int zamówienie)

Int Sortuj(Ustaw Praca s, zabawa sznur klawisz, Int zamówienie)

Int Sortuj(Ustaw Praca s, zabawa pływak klawisz, Int zamówienie)

Int Sortuj(Ustaw Praca s, zabawa DateTime klawisz, Int zamówienie)

Int Sortuj(Ustaw Praca s, zabawa Rozmiar klawisz, Int zamówienie)

gdzie s zestaw zadań do sortowania. klucz jest kluczem sortującym, którym jest a
funkcja, której jedynym argumentem jest typ Job, zamówienie jest sortowanie
kolejność: ASC, DESC.

Opis: sortuje elementy s , w kolejności rosnącej lub
Malejąca kolejność wartości zwróconych przez metodę klucz funkcja, jak
zastosowane do każdego elementu zbioru stanowisk pracy. The s obiekt jest modyfikowany
z tym wezwaniem. Zwraca SUKCES lub FAIL w zależności od wyniku
rodzaj.

Przykłady:
Rozmiar JobMemReqGet(Zadanie praca)
{
Rozmiar pamięć;

Członek = JobSizeResReqGet(praca, „pamięć”);
powrót(pamięć);
}

sched_main()
{
serwer mistrz;

Zestaw Praca Oferty pracy;

Int zamówienie;

// otrzymać miejscowy serwer
mistrz = AllServersLocalHostGet();

Oferty pracy = ServerJobsGet(gospodarz);
Sortuj(prace, Priorytet zadaniaPobierz, ASC);
Sortuj(prace, JobIdGet, OPIS);
zamówienie = ASC;
Sortuj(prace, JobDateTimeCreatedGet, zamówienie);
zamówienie = OPIS;
Sortuj(prace, JobMemReqGet, zamówienie);
}

Int Sortuj(Ustaw Że s, zabawa Int klawisz, Int zamówienie)

Int Sortuj(Ustaw Że s, zabawa sznur klawisz, Int zamówienie)

Int Sortuj(Ustaw Że s, zabawa pływak klawisz, Int zamówienie)

Int Sortuj(Ustaw Że s, zabawa DateTime klawisz, Int zamówienie)

Int Sortuj(Ustaw Że s, zabawa Rozmiar klawisz, Int zamówienie)

gdzie s zestaw kolejek do sortowania. klucz jest kluczem sortującym, którym jest a
funkcja, której jedynym argumentem jest typu Que, zamówienie jest sortowanie
kolejność: ASC, DESC.

Opis: sortuje elementy s , w kolejności rosnącej lub
Malejąca kolejność wartości zwróconych przez metodę klucz funkcja, jak
stosowane do każdego członka zbioru kolejek. The s obiekt jest
zmodyfikowany za pomocą tego wywołania. W zależności od tego zwraca SUKCES lub FAIL
wynik tego rodzaju.

Przykłady:
Rozmiar QueMemAvailGet(Que niż)
{
Rozmiar pamięć;

Członek = QueSizeResAvailGet(que, „pamięć”);
powrót(pamięć);
}

sched_main()
{
serwer mistrz;

Zestaw Że pytanie;
Int zamówienie;

// otrzymać miejscowy serwer
mistrz = AllServersLocalHostGet();

ques = ServerQueuesGet(gospodarz);
Sortuj (pytanie, QuePriorityGet, ASC);
Sortuj (pytanie, QueNameGet, ASC);
zamówienie = OPIS;
Sortuj (pytanie, QueMemAvailGet, zamówienie);
}

Int Sortuj(Ustaw serwer s, zabawa Int klawisz, Int zamówienie)

Int Sortuj(Ustaw serwer s, zabawa sznur klawisz, Int zamówienie)

Int Sortuj(Ustaw serwer s, zabawa pływak klawisz, Int zamówienie)

Int Sortuj(Ustaw serwer s, zabawa DateTime klawisz, Int zamówienie)

Int Sortuj(Ustaw serwer s, zabawa Rozmiar klawisz, Int zamówienie)

gdzie s zestaw serwerów do sortowania. klucz jest kluczem sortującym
funkcja, której jedynym argumentem jest typ Serwer, zamówienie jest
kolejność sortowania: ASC, DESC.

Opis: sortuje elementy s , w kolejności rosnącej lub
Malejąca kolejność wartości zwróconych przez metodę klucz funkcja, jak
stosowane do każdego członka zestawu serwerów. The s obiekt jest
zmodyfikowany za pomocą tego wywołania. W zależności od tego zwraca SUKCES lub FAIL
wynik tego rodzaju.

Przykłady:
Rozmiar ServerMemAvailGet(Serwer służyć)
{
Rozmiar pamięć;

Członek = ServerSizeResAvailGet(serv, „pamięć”);
powrót(pamięć);
}

sched_main()
{
Zestaw serwer serwer;

Int zamówienie;

Int gnić;

serwer = AllServersGet();

gnić = Sortuj(serwer, ServerMaxRunJobsGet, ASC);
Sortuj(serwer, ServerInetAddrGet, ASC);

zamówienie = OPIS;
Sortuj(serwer, SerwerMemAvailGet, zamówienie);
}

Int Sortuj(Ustaw CNode s, zabawa Int klawisz, Int zamówienie)

Int Sortuj(Ustaw CNode s, zabawa sznur klawisz, Int zamówienie)

Int Sortuj(Ustaw CNode s, zabawa pływak klawisz, Int zamówienie)

Int Sortuj(Ustaw CNode s, zabawa DateTime klawisz, Int zamówienie)

Int Sortuj(Ustaw CNode s, zabawa Rozmiar klawisz, Int zamówienie)

gdzie s zbiór węzłów do sortowania. klucz jest kluczem sortującym, którym jest a
funkcja, której jedynym argumentem jest typu CNode, zamówienie jest sortowanie
kolejność: ASC, DESC.

Opis: sortuje elementy s , w kolejności rosnącej lub
Malejąca kolejność wartości zwróconych przez metodę klucz funkcja, jak
stosowane do każdego elementu zbioru węzłów. The s obiekt jest
zmodyfikowany za pomocą tego wywołania. W zależności od tego zwraca SUKCES lub FAIL
wynik tego rodzaju.

Przykłady:
Rozmiar CNodeMyMemAvailGet(CNode cn)
{
Rozmiar pamięć;

Członek = CNodeMemAvailGet(cn, "wirtualny");
powrót(pamięć);
}

sched_main()
{
Zestaw CNode sknodować;

Int zamówienie;

sknodować = AllNodesGet();

Sortuj(snode, CNodeIdletimeGet, ASC);
Sortuj(snode, CNodeNameGet, ASC);
zamówienie = OPIS;
Sortuj(snode, CNodeMyMemAvailGet, zamówienie);
}

CNode..Get() FUNKCJE


Wartości zwracane przez funkcje CNode..Get() omówione w poprzedniej sekcji to:
uzyskiwane poprzez wysyłanie zapytań o zasoby do MOM węzła CNode przy każdej iteracji planowania.
Na przykład, CNodeLoadAveGet(węzeł) zwróci wartość uzyskaną od niektórych
zasób> zapytanie (może to być ciąg „loadave”) przesłane do MOM węzła. The
" -> Mapowania CNode..Get()” są ustanawiane wewnętrznie, ale mogą być
zmodyfikowane lub można dodać więcej mapowań za pomocą pliku konfiguracyjnego programu planującego. Konfiguracja
plik jest omówiony w pbs_sched_basl(8B).
Mapowania już ustalone są podane poniżej:

Dla wszystkich architektur:

CNode..Get() rzeczywisty wezwanie gospodarz Zasób
======================== =============
CNodeOsGet(węzeł) łuk
CNodeLoadAveGet(węzeł) ładunek
CNodeIdletimeGet(węzeł) czas bezczynności

Korzystaj z basl2cB online, korzystając z usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

Komendy systemu Linux

Ad