KOILLINEN KORKEAKOULU
ietojenkäsittelyopin laboratorio
1«KNlUINEF^KOÄKCAKeum TIETOJENKÄSITTELYOPIN
ÄÄ&ikllyAeTQ
ERÄÄN
PIENTIETOKONEEN KÄYTTÖJÄRJESTELMÄN RAKENNE JA
OMINAISUUDET
Diplomityö
Pirkko Schildt Ko, Ktu 23552
1979-11-15
EKNILLINEN KORKEAKOULU
ietojenkäsittelyopin laboratorio
ALKULAUSE
Tämän työn puitteissa on pyritty laatimaan suhteel
lisen tiivis ja yhtenäinen esitys DEC : n PDP-11 koneilla käytössä olevasta käyttöjärjestelmästä RSX-1 IM .
Työ on ollut luonteeltaan lähinnä kirjallisuustut
kimus , olemassaolevan materiaalin muokkausta uuteen, toivottavasti systemaattisempaan muotoon.
Työn tarkoituksena oli luoda suomenkielinen kuvaus RSX-11M:n piirteistä niille henkilöille, jotka halua
vat tutustua RSX-11M:ään tai jotka haluavat muodostaa RSX-11M : stä kokonaisnäkemyksen siihen jo jonkinverran tutustuttuaan.
Työn välittömänä tavoitteena on ollut luoda perusma
teriaali TKK : n tietojenkäsittelyopin Käyttö
järjestelmät II -kurssin syksyn -79 luennoille ja yleisemminkin laajentaa ja syventää RSX-11M tietoutta korkeakoulun piirissä.
Tämän työn valvojana on toiminut vt. prof. Reijo Sulonen. Haluan kiittää häntä työni ohjauksesta ja kannustavasta suhtautumisesta yritykseen! .
Tekn. yo. Heikki Arppea ja tekn. yo. Jussi Mykkästä saan kiittää oman RSX-tietämykseni kartuttamisesta ja työtäni koskevista arvokkaista mielipiteistä.
Myös aviomieheni, Lasse Schildt, ansaitsee kiitokseni kaikesta siitä rohkaisusta ja tuesta, jota olen saanut koko opiskeluni ajan.
Työni olen kirjoittanut puhtaaksi käyttäen TKO- laboratorion PDP-11/3^: n UNIX-käy11öjärjestelmän tekstinkäsittelyjärjestelmää Nroff.
Otaniemessä, marraskuun 15. päivänä 1979 ScÅJ/otf
Pirkko Schildt
DIPLOMITïü EKNILLINEN KORKEAKOULU
ONEINSINÖÖRIOSASTO
.99 Tietojenkäsittelyoppi 15. 11. 1979
irkko Schildt
rään pientietokoneen käyttöjärjestelmän akenne ja ominaisuudet
979, 105 s. + 7 liitettä
yön valvoja: vt. professori Reijo Sulonen
iivistelmä
Työssä tarkastellaan RSX-11M käyttöjärjestelmää käsittelyn painopisteen ollessa käyttöjärjestelmän sisäisen rakenteen puolella, joskin myös järjes
telmän käyttöominaisuuksia on pyritty arvioimaan.
RSX-11M on tarkoitettu PDP-11 sarjan proses
soreille. Työssä on erityisesti pyritty selvittä
mään prosessikäsitettä RSX-ympäristössä, prosesso
rin hallintaa, muistin hallintaa, oheislaitteiden käsittelyä ja tiedostojärjestelmää.
Järjestelmään liittyvä tukiohjelmisto ja järjes
telmän huoltoon ja ylläpitoon liittyvät asiat on käyty läpi esittelynomaisesti .
Työhön liittyy jonkinverran esimerkkejä, joilla on pyritty havainnollistamaan käsiteltyjä asioita.
Esimerkit ovat kuitenkin luonteeltaan vain teoriaa havainnollistavia, eivätkä pyri opettamaan RSX-
11M : n käyttöä.
Työn tuloksena syntynyttä materiaalia on tarkoitus käyttää Tietojenkäsittelyopin laboratorion käyttö- järjestelmäopetuksessa.
KOILLINEN KORKEAKOULU
ietojenkäsittelyopin laboratorio
SISÄLLYSLUETTELO
1 . JOHDANTO
1.1 RSX-11M käyttöjärjestelmä 1
1.2 PDP-11 laitteisto 4
1.3 TKK/TKO : n järjestelmä 6
1.4 Yhteenveto 7
2. PROSESSORIN HALLINTA
2.1 Prosessikäsite 8
2.2 Prosessin tilat 14
2.3 Prosessoriajan jako 18
2.4 Prosessien synkronointi ja kommunikointi 20
2.5 Keskeytysten käsittely 23
2.6 Systeemikutsut 29
2.7 Kellojono ja sen käsittely 33
2.8 Yhteenveto 34
3. MUISTIN HALLINTA
3-1 Muistinhallintayksikkö ja osoitteen-
muodostus 36
3.2 Käyttöjärjestelmän muistinkäsittely 40 3-3 Prosessikohtainen muistinkäsittely 46
3.4 Yhteenveto 54
EKNILLINEN KORKEAKOULU
ietojenkäsittelyopin laboratorio
4. YMPÄRYSLAITTEIDEN HALLINTA
4.1 Syöttö/Tulostustoiminnan periaatteet
RSX-11M:ssä 55
4.2 Ympäryslaitteiden käsittelyyn liittyvät
tietorakenteet 58
4.3 Syöttö/Tulostustoimintaan liittyvät
käsittelyalgoritmit 6 3
4.4 Laitekäsittelyohjelmat (I/O Drivers) 65 4.5 Syöttö/Tulostustoimintaan liittyvät
systeemikutsut (QIO) 68
4.6 Yhteenveto 71
5. TIEDOSTOJÄRJESTELMÄ
5.1 Tiedosto 72
5.2 Tiedostojärjestelmä 75
5.3 Tiedosto-operaatiot 79
5.4 Tiedostojen käyttö (FCS ) 82
5.5 Yhteenveto 87
6. TUKIOHJELMISTO
6.1 Komentotulkki 88
6.2 Ohjelmoinnin ja testauksen apuvälineet 91
6.3 Tiedostojen käsittely 95
6.4 Yhteenveto 97
EKNILLINEN KORKEAKOULU
ietojenkäsittelyopin laboratorio
7. JÄRJESTELMÄN YLLÄPITO
7.1 Systeemin generoiminen 98
7.2 Varmuuskopiointi ja taltioiden käyttö 100 7.3 Käyttäjätunnukset ja -tilastointi 102 7.4 Laitteiston kunnon seuranta- ja
testausohjelmat 104
7.5 Yhteenveto 105
EKNILLINEIJ KORKEAKOULU
ietojenkäsittelyopin laboratorio
LIITELUETÏELO
1. SEND/RECEIVE -systeemikutsues imerkin
ohjelmalistaukset s. 22
2. Systeemikutsujen eri muotoja havainnollis
tavien esimerkkien ohjelmalistaukset s. 31
3• Kellojonoon liittyvän esimerkin ohjelma-
listaus s. 33
4. RSX-11M: n systeemi taulukot s. 35
5. Impäryslaitteiden käsittelyyn liittyvien
tietorakenteiden kuvaukset s. 62
6. Tiedostojen käsittelyyn (FCS ) liittyvän esimerkin ohjelmalistaus ja esimerkki-
tiedoston vedostus s. 86
7. Osa systeemin generoinnissa syntyneestä
konsolilistauksesta s. 99
KK/TKO/PSc 1979-11-15 -1 -
JOHDANTO
. 1 RSX-11H käyttöjärjestelmä
RSX-11M käyttöjärjestelmä on pienille - keskisuurille koneille tarkoitettu tosiaikainen moniajojärjestelmä.
R S X- 11M : n peruspiirteet ovat : - moniohjelmointi
- tapahtumaohjattu prosessoriajan jako - tosiaikaisuus
- usean käyttäjän järjestelmä - levymuistipohjaisuus.
RSX-11M käyttöjärjestelmä soveltuu käytettäväksi PDP-11 sarjan prosessoreilla aivan pienimpiä lu
kuunottamatta. Se tarvitsee vähintään 16 Ksanaa muistia, jolloin käyttäjän ohjelmille jää 8 Ksanaa.
RSX-11M käyttöjärjestelmiä on olemassa kolmea tyyp
piä: R S X-1 1M, RSX-11S ja RSX-11D. RSX-11S on R S X- 11M : n osajoukko, joka on tarkoitettu vain proses
sien suoritukseen. RSX-11S ei sisällä tiedostojärjes
telmää , ladattavia prosesseja eikä ohjelmoinnin ja testauksen apuvälineitä. R3X-11S generoidaan RSX-11M: n alaisuudessa ja myös ohjelmiston kehittely tapahtuu RSX-1 1M: 11ä. RSX-11D on RSX-11M:ää vanhempi ja keskimäärin jonkinverran isommille koneille tar
koitettu käyttöjärjestelmä.
RSX-11M: n suunnittelutavoitteet sisälsivät mm. seu- raavat ominaisuudet :
- tosiaikaisuus 8 Ksanan kokoisella käyttöjärjes
telmällä, joka on käytettävissä 16 Ksanan muis- tikoosta alkaen
- sopivuus kaikille PDP-11 sarjan prosessoreille, useimmille prosessorioptioille (kuten muis
tinhallinta, liukulukuyksikkö), oheislaitevali- koiman täydellisyys
- järjestelmän ja prosessien synkronoinnin to
teutus prosessien prioriteetteja käyttämättä
- järjestelmän yhteisten tietokantojen käytön synkronointi prosessien prioriteetteja käyt
tämättä
- useiden käyttäjien prosessien rinnakkainen suo
ritus ja ohjelmien kehittely
- tukiohjelmien tarjoaminen käyttäjille ainakin seuraavilta aloilta: tiedostojärjestelmä, kääntäjät, ohjelmoinnin ja testauksen apuväli
neet, järjestelmän ylläpito.
KK/TKO/PSc 1979-1 1-1 5 -2-
RSX - 1 111 : n ominaisuudet tyydyttänevät edelläesitetyt tavoitteet. Järjestelmän tosiaikaisuuteen ja moni- ohjelmointiin liittyvät piirteet on toteutettu ta- pahtumaperustaisesti : Prosessi saa prosessoriaikaa, kunnes tapahtuu merkittävä tapahtuma, joka voi olla esim. korke amman prioriteetin omaavan prosessin liit
tyminen aktiivisten prosessien jonoon tai s/t- toirnintaan liittyvä tapahtuma. Merkittävän tapahtu
man jälkeen korkeimman prioriteetin omaava aktiivinen prosessi saa prosessoriaikaa. Aktiivisia, ajovalmii
ta prosesseja voi olla yhtaikaa useita. Proses
soriaikaa nämä prosessit saavat vuorotellen, merkittävien tapahtumien välisen ajan kerrallaan.
Korkeimman prioriteetin omaavat prosessit saavat no
peimman palvelun; näin voidaan toteuttaa to
siaikaisuus, järjestelmä pystyy tarvittaessa reagoimaan nopeasti.
RSX-11M:n usean käyttäjän järjestelmään liittyviä piirteitä ovat lähinnä käyttäjätunnusjärjestelmä salasanoineen ja tiedostojen ja muistin suojaus.
Tiedostojärjestelmä käsittää myös käyttäjäkohtaiset tiedostohakemistot, jotka mahdollistavat usean käyttäjän tiedostojen organisoinnin.
RSX-11M on levymuistipohjäinen järjestelmä.
Systeemilevyllä säilytetään mm. järjestelmän kuva (system image), joka tuodaan muistiin järjestelmää ladattaessa. Järjestelmän kuva on muistin kuva, joka sisältää käyttöjärjestelmän perusosan ja järjestelmään kuuluvat kiinteät prosessit. Kiin
teiden prosessien lisäksi järjestelmään liittyy jouk
ko ladattavia systeemiproses seja (system tasks), jot
ka tuodaan muistiin tarvittaessa. Näitä ovat mm.
tiedostojärjestelmä, komentotulkki ja oh je Irais ton- kehitysvälineet. Systeemin kirjastot säilytetään pääosin levyllä, josta ne tarvittaessa liitetään käyttäjän prosesseihin.
RSX-11M:n ominaisuudet ovat joiltakin osin riippu
vaisia siitä, onko käytettävissä muistinhallintayk- sikkö vai ei. Muistinhallintayksiköllä varustettua järjestelmää kutsutaan "mapped"- systeemiksi ja vas
taavasti systeemiä, johon ei kuulu muistinhallinta- yksikköä kutsutaan "unmapped"-systeemiksi. Muisti jaetaan osiin, partitioihin, joita mapped- systeemeissä on kahta tyyppiä: järjestelmä- ja käyttäjäpartitiot. Järjestelmäpart itioihin voidaan sijoittaa useita prosesseja yhtaikaa; järjestelmä huolehtii muistin jakamisesta. Käyttäjäpartitioon voidaan sijoittaa vain yksi prosessi kerrallaan, mut
ta käyttäjäpartitio voidaan jakaa korkeintaan seitsemään alipartitioon. Jokaiseen alipartitioon
KK/TKU/PSc
1979
-11-15
-3
-voidaan myös sijoittaa yksi prosessi ja kaikkia ali- partitioita voidaan käyttää yhtaikaa silloin, kun pääpartitio ei ole käytössä.
Mapped-systeemeissä prosessi voidaan ladata mihin tahansa riittävän suureen partitioon ja prosessin virtuaalinen kantaosoite on aina nolla.
Unmapped-systeemeissä prosessin on aina sijaittava tietyssä partitiossa ja sillä on absoluuttinen kan
taosoite, joka annetaan prosessille linkityksen yhteydessä.
RSX-11M ei sisällä eräkäsittelyä tukevia piirteitä, eikä ole puhtaasti osituskäyttöjärjestelmä, joskin siihen voidaan liittää jonkinverran aikajakoisuutta.
RSX-11M ei myöskään ole tarkoitettu ympäristöön, jos
sa järjestelmältä vaaditaan korkeatasoisia suojaus- ominaisuuksia .
Tärkeimmät sovellutusalueet RSX-11M:lle lienevät tietojen keruu, prosessin ohjaus, tuotannon ohjaus ja lääketieteellisissä tai tutkimuslaboratorioissa ta
pahtuva tietojenkäsittely.
RSX-11M järjestelmä on ominaisuuksiltaan varsin moni
puolinen ja suorituskykyinen pienkoneen käyttöjärjes
telmäksi. Useimmat pienkonejärjestelmät esim. sal
livat vain 1 - 2 yhtaikaista käyttäjää, kun taas RSX-11M on usean käyttäjän järjestelmä. Myös osituskäyttöjärjestelmät sallivat luonnollisesti useampia yhtaikaisia käyttäjiä, mutta tosiaikaisuu
teen liittyvät piirteet yleensä osituskäyttö- järjestelmistä vastaavasti puuttuvat.
Käyttäjien keskuudessa RSX-11M järjestelmää pidettäneen keskinkertaisena - hyvänä järjestelmänä.
Suhteellisesti eniten ongelmia tuntuu aiheuttaneen järjestelmän installointi , myyjän järjestämän koulu
tuksen ja dokumentoinnin taso. Järjestelmän raken
teen monimutkaisuus vaikeuttaa myös järjestelmään tu
tustumista ja sen monipuolisten piirteiden hyväksikäyttöä.
KK/ÏKG/PSc 1 979-1 1-1 5 -4-
.2 PDP-11 laitteisto
RSX-11M on suunniteltu Digital Equipment Corporatio
nin (DECin) PDP-11 sarjan tietokoneille. PDP-11 sar
ja käsittää useita erikokoisia prosessoreja, mikro
tietokoneista keskisuuriin tietokoneisiin. Kaikilla sarjan prosessoreilla on mm. seuraavat yhteiset omi
naisuudet:
- sananpituus 16 bittiä, joka jakaantuu kahteen 8 bitin tavuun.
- 8 yleisrekisteriä, R 0 - R 7, joista R 6 : st a käytetään pino-osoittimena (SP) ja R 7 :ä ä oh j e 1- malaskurina (PC).
- käskyvalikoima käsittää 0,1 ja 2 operandisia käskyjä, joista useimmista on olemassa sekä ta
vu- että sanamuoto. Osoitusmuotoja on useita.
- muistin laajennus muistinhallintayksikön avulla 128 Iisanaan .
- oheislaitteiden asynkroninen käsittelytapa.
- vektoroidut keskeytykset.
- keskeytysten automaattinen priorisointi.
PDP-11 sarjan prosessoreista RSX-11M on käytettävissä kaikilla niillä, joissa on UNIBUS.
RSX-11M-käyttojärjestelmän vaatima minimikokoonpano on :
- PDP-11/23 -prosessori - 16 Ksanaa muistia - kello
- 1 RKO5 levyasema - konsoli
- jokin apumuistilaite (1 RKO 5, De etape, kaset- tinauha tai levykkö).
PDP-11 sarjan arkkitehtuuri rakentuu pitkälti UMIBUS-väylän pohjalle. UHIBUS-väylä liittää järjestelmän eri osat toisiinsa ja sitä käytetään osoitteiden, tiedon ja ohjaustiedon välitykseen.
KUVA 1.1 UNIBUS-väylä
PDP-11 System Simplified Block Diagram
KK/TKû/PSc 1 979-1 1-1 5 5-
Laitteiden välinen kommunikointi on kaksisuuntaista ja asynkronista. UkIBUS-väylä on kerrallaan yhden laitteen kontrolloima ja kullakin laitteella on eri
tyinen UNIBUS-prioriteetti, joka määrää kontrollin- saantijärjestyksen. UUIBUS-väylä käyttää 18-bitin osoitteita, kuten prosessoritkin laitteistotasolla.
PDP-11 : n muis yksikköä 2 p muistinhallint 1. 128 Ksana varattu UNIBUS muistin käyt Ksanaa. Pieni sijaitsevat k ovat parillisi
t o a a i e n
u
a
iavaruus on tenssiin 16 yksikön kanss
. iiuistialu n laiterekis itävissä oi osoitet tava itenkin aina
i t a e e te ev Ук
1 man mui st i n h a11i n ta
a vua 1 . 32 K s an a a ja 2 pot e nss i in 1 8 t a vua n yli n 4 K san a a on a ina r eill e » j ote n У1 e e ns ä a ma k s imi kok o on 124 s ikkö on tav u » k ä s kyt s anao s oi tt eis s a 7 j o tka
KU VA 1.2 PDP-1 1 : n osoitteet
HIGH BYTE IOW BYTE
J--- .______ ,_____ J_
High & Low Byte
000003
000000
000002
037777 037774 037776 WORD ORGANIZATION
e-BiT Byte
BYTE- ORGANIZATION
000001
000002 000003 000004
037773 037776 037777
Word and Byte Addresses
KK/TKG/PSc 1 979-1 1-1 5 -6-
.3 TKK/TKO:n järjestelmä
Tämän diplomityön taustana oleva käytännön RSX- tietämys on saavutettu lähinnä TKK:n tietojenkäsit
telyopin laboratorion käytössä olevan РВР-11/3^:п ja siinä käytetyn RSX-11M ¥3-1:n parissa.
Työhön käytettynä ajanjaksona laitteiston kokoonpano oli pääosan ajasta seuraava:
- 1 1 /34 keskusyksikkö - kello
- muistinhallintayksikkö - 96 Ksanaa muistia
- RK05F 5 Иtavun kiinteälevyasema - RK05J 2,5 Mtavun vaihtolevyasema - 2 RL01 5 Mtavun vaihtolevyasemaa - konsolipääte (LA3Ú-CJ)
- rivikirjoitin (LA1808) - 1 - 2 muuta päätettä.
Käytössä ollut RSX-11M V3-1 on käsittänyt suunnilleen kaikki RSX-11M:n piirteet. Laitteistokokoonpanosta ja historiallisista syistä johtuen ei kuitenkaan esim. RMS - Record Management Services - ohjelmisto eikä osa tukiohjelmista, kuten esim. FLX - File Transfer - ohjelma ole kuulunut järjestelmään.
TKO-laboratorion käytössä olevaa järjestelmää käytetään lähinnä opetus- ja tutkimustoimintaan ja tästä johtuen osa tosiaikaisuuteen liittyvistä piir
teistä ja järjestelmän toiminnan varmistukseen liit
tyvistä toiminnoista on jäänyt melko vähälle huomiolle, joskin nämäkin ominaisuudet ovat tarvit
taessa käytettävissä.
KK/TKü/PSc 1979-11-15 -7-
.4 Yhteenveto
RSX-11M on pienkoneen tosiaikainen käyttöjärjestelmä, joka soveltuu PDP-11 sarjan prosessoreille.
Käyttöjärjestelmä on levymuistipohjäinen. Proses
soriaikaa jaetaan merkittävien tapahtumien rajaamissa paloissa.
PDP-11 sarjan prosessoreiden sananpituus on 16 bit
tiä. Rekistereitä on kahdeksan. Muistiavaruus on muistinhallintayksikön avulla laajennettavissa 128 Iisanaan. Laitteiden välinen kommunikointi tapahtuu UNIBUS-väylää pitkin.
KK/TKO/PSc 1979-11-15 -8-
PRUSESSORIN HALLINTA
.1 Prosessikäsite
Prosessilla (task) tarkoitetaan R3X- 1 1M ympäristössä suoritettavaa perusyksikköä.
Suoritettavan prosessin kuva (task image) syntyy nor
maalisti seuraavien vaiheiden kautta : 1. lähdekielisen ohjelman kirjoittaminen.
2. ohjelman kirjoittaminen tekstitiedostoksi editorin avulla.
3• objektitiedoston luominen ao. kielen kääntäjän avulla tekstitiedostosta.
4. prosessin kuvan muodostaminen linkittäjän avulla objektitiedostosta.
Prosessin kuva sisältää prosessin otsikkotietoalueen (task header), pinon ja joukon nimettyjä alueita, ohjelmasektioita.
Prosessin otsikkotietoalue sisältää prosessin tar
vitsemia osoite- ja tilatietoja.
KUVA 2.1 Prosessin kuva levyllä (yksinkertaistettuna)
koodi- ja data-alue
pino ,
otsikkotietoalue checkpoint-alue label
KK/TKU/PSc 1979-11-15 -9-
Label sisältää prosessin ulkoisia tietoja, jotka liittyvät prosessin ja siihen liittyvien kirjasto- ohjelmien kokoon, sijaintiin levyllä ym., tiedot laitenumeroiden asettamisesta ja overlay-rakenteeseen liittyviä asioita.
Checkpoint-alue on alue, jolle prosessi talletetaan, jos se joudutaan syrjäyttämään. Checkpoint-alue voi joissakin tapauksissa kuulua prosessin kuvaan, mutta yleisimmin kaikki prosessit käyttävät järjestelmälle yhteisesti määriteltyä checkpoint-tiedostoa.
Label- ja Checkpoint-osia ei tuoda muistiin prosessia luettaessa, vaan lukeminen aloitetaan otsikko- tietoalueesta.
Utsikkotietoalue jakaantuu kahteen osaan: kiinteään ja muuttuvaan. Kiinteä osa sisältää esim. tiedot ohjelmalaskurin ja pino-osoittimen alkuarvosta, systeemidirektiivien käyttämän tilasanan (Directive Status Word) ja prosessin tarvitsemia osoitteita.
Muuttuva osa taas sisältää esim. rekistereiden arvot silloin, kun prosessi ei ole ajossa.
Kun prosessi tuodaan käyttöjärjestelmään, luodaan prosessin kontrollilohko, joka liitetään järjestelmän tuntemien prosessien joukkoon, (System Task Directo
ry, STD).
Prosessin kontrollilohko (Task Control Block, TCB) on 28 sanan pituinen tietoalue, joka sisältää mm.
prosessin nimen, koon, osoitteen, tapahtumaliput ja osoitekentät, joiden avulla TCB liitetään muiden prosessien TCB:hin.
TCB sisältää kaikki ne parametritiedot prosessista, jotka systeemi tarvitsee voidakseen käynnistää prosessin .
Kuvassa 2.2 on esitetty kontrollilohkoon kuuluvat kentät. Kenttien nimet ovat järjestelmän konvention mukaisia.
KK/TKU/PSc
1979
-11-15
-10-KUVA 2.2 Task Control Block
T.LNK
T . IOC T . PRI T.CPCB
T . NAM
T.RCVL - T.ASTL
T.EF LG T . UCB T.TCBL T.STAT T . ST2 T . S Ï 3
T . LBN T.DPRI T . LDV
T . PCB T.MXSZ T.ACTL T .ATT T . OFF
T.SRCT unused T.RRFL
UTILITY LINK WORD
TASK PRIORITY, I/O PENDING COUNT POINTER TO CHECKPOINT PCB
TASK NAME
RECEIVE QUEUE LISTHEAD AST QUEUE LISTHEAD TASK LOCAL EVENT FLAGS UCB ADDRESS FOR "TI :"
TASK LIST THREAD WORD 1. STATUS WORD
2. STATUS WORD 3. STATUS WORD
LBN OF TASK LOAD IMAGE, TASK'S DEFAULT PRIORITY UCB ADDRESS OF LOAD DEVICE PCB ADDRESS OF TASK PARTITION MAXIMUM SIZE OF TASK IMAGE ACTIVE TASK LIST THREAD WORD ATTACHMENT DESCRIPTOR LISTHEAD OFFSET TO TASK IMAGE IN PARTITION SREF WITH EFN COUNT
RREF LISTHEAD
KK/TKO/PSc 1979-11-15 -
11
-Prosessien kontrollilohkot muodostavat järjestelmän tuntemien prosessien joukon, STD:n.
STD sijaitsee fyysisesti käyttöjärjestelmän dynaami
sella muistialueella. Kaikkien installoitujen prosessien TCB:t kuuluvat STD:hen. Aktiivisten prosessien TCB:t STD:ssä liitetään myös yhteen ja nämä muodostavat aktiivisten prosessien joukon (Ac
tive Task List, ATL).
Luvun 2 lopussa on liitteenä kuva, joka pyrkii selvittämään RSX-11II:n systeemitaulukoita : järjestel
mään liittyviä tietorakenteita ja niiden liittymistä toisiinsa .
Järjestelmän tuntemien prosessien joukosta ja ak
tiivisten prosessien joukosta saa tietoja MCR:n komennoilla TAS, TAL ja ATL.
KK/TKU/PSc 1979-11-15 -12-
ESIilE RKKI 2.1: liCR : n komento TAS
System Task Directory voisi sisältää seuraavat pro
sessit :
>TAS
♦ LDR. LDR 248
TKTN 03.7 SYSPAR 248
♦..DMO 03.1 GEN 160
♦♦♦MCR 02 SYSPAR 160
♦♦.мои 03.02 GEN 160 ...SYS 01 GEN 160 F11ACP M0235 FCPPAR 149
♦♦.PLT V02 GEN 110 SHF... 03 SYSPAR 105
♦..INI 03 GEN 100 ...INS 03 GEN 100 ...SAV 03.9 GEN 100
♦..UFD V0407 GEN 100 PRT... 08.04 GEN 70
♦..AT. 04.17 GEN 65
♦..EDI MH GEN 65
...ERF 01 GEN 61
. . .ACS 01 GEN 50 ...BOO 03.2 GEN 50
ERRLOG 01 GEN 50
. ♦ .LOA 03 GEN 50 ...UNL 02 GEN 50, . ♦ .MAC МНЮ GEN 50, . . . TKB M29 GEN 50, . . .FOR MOI GEN 50, ...RAT $FORT GEN 50, . . .PAS 770907 GEN 50,
ACNT 00 GEN 50.
. . .LBR 05.01 GEN 50, CRF... VOI GEN 50, ...HEL 01.15 GEN 50.
.♦.BYE 01.6 GEN 50.
♦..BRO V02.3 GEN 50.
♦.♦RNO M0101 GEN 50.
..♦FTB 01 GEN 50.
♦..PIP M1331 GEN 50.
000000 lbo:-00000000 FIXED 010000 lbo:-00006762
040000 LB0:-00006161 010000 LB0,‘~00006526 040000 LB0:-00006043 010000 LBO:-00006550 026000 LBO:-00006262 016400 LBO:-00000467 010000 LB0:-00007141 040000 LBO:-00006325 040000 LBO:-00006433 040000 LBO:-00006731 040000 LB0:-0O007040 010000 LBO:-00007145 040000 LB0:-00006065 075200 LBO:-00005145 040000 LB0:-00006021 040000 L.BO : -00007177 040000 LBO:-00004715 040000 LBO:-00007215 040000 LBO:-00007047 040000 LB0:-00007103 155700 LBO:-00004345 140500 LBO:-00004472 047700 LBO:-00007713 140700 LBO:-00007550 170300 LBO:-00010103 037600 LBO:-00006362 046200 LB0:~00005336 040000 LBO:-00005023 040000 LBO:-00006201 040000 LBO:-00006012 040000 LBO:-00006466 053600 LB0:-00003461 135700 SYÖ :-00002775 060600 lbo:-00001466
Kustakin prosessista on kerrottu prosessin nimi, ver
sio, partitio, prioriteetti, prosessin koko, laite, jolta prosessi on ladattu muistiin, osoite ko. lait
teella ja prosessin tila muistin suhteen.
KK/TKO/PSc 1979-11-15 -13-
ESIMERKKI 2.2: MCR : n komento A TL
Aktiivisten prosessien joukko voisi sisältää seu- raavat prosessit :
>ATL
. LDR. 047006 LDR 046752 00000000--00000000 F'Rl - 248. DF'RI - 248.
status: -chk fxd stp pro
TI -
coo:
IOC - 0. EFLG - 000001 000000 PS - 170000 PC - 041604 REGS 0-6 000162 003340 177777 061322 047324 061270 046720♦ .♦MCR 061630 SYSPAR 063734 00064000-00074000 PRI - 160. DPRI - 160.
status: stp -pmd pro nsd cal.
TI - TT1: IOC - O. EFLG - 000001 040000 PS - 170000 PC - 122276 REGS 0-6 000000 120470 121766 120424 122414 000000 120362
...SYS 061270 GEN 047324 00135000-00145000 PRI - 160. DPRI - 160.
status: -chk ckd -pmd pro mcr
TI - TT1: IOC - 0. EFLG - 000001 040000 PS - 170017 PC - 120634 REGS 0-6 000000 131574 075273 000000 000000 000000 001026
FU ACP 062260 FCPPAR 063670 00074000-00122000 PRI - 149. DPRI - 149.
status: stp acp -pmd prv nsd cal
TI -
coo:
IOC - 0. EFLG - 000002 040003 PS - 170000 PC - 121406 REGS 0-6 062272 000000 000012 050144 047534 044022 120252Kustakin aktiivisesta prosessista on kerrottu jonkin
verran enemmän tietoja, esim. TCB: n osoite , PCB : n osoite, partition rajat, TCB: n tilaliput ja prosessin tapahtumaliput .
MCR: n komennolla TAL voidaan listata System Task Directoryn tiedot samassa muodossa kuin oheisessa ATL: n listauksessa.
KK/TKÜ/PSc 1 979-1 1-1 5 -14-
. 2 Prosessin tilat
Prosessi käy elinkaarensa aikana
KUVA 2.3 Prosessin tilakaavio
läpi tietyt tilat .
prosessin
instalLoi nti prosessin poistaminen
DORMANT
prosessi n suorituksen päättyminen
prosessin suorituspyyntö
prosessi n keskeytymine ACTIVE,
READY-TO-RUN
ACTIVE BLOCKED prosessin
odotus päättyy
prosessi jää odottamaan prosessi saa
prosessorin prosessi Xmenettää
\ prosessorin
RUNNING
KK/TKO/PSc 1 979-1 1-1 5 -15-
Proscssin tilat ovat passiivinen (DORMANT), aktiivi
nen - ajovalmis (ACTIVE, READ1-TO-RUN ) , aktiivi
nen - odottava (ACTIVE, BLOCKED) ja ajossa oleva (RUNNING).
Passiivisella prosessilla tarkoitetaan prosessia , joka on installoitu 1. prosessin kontrollilohko (Task Control Block) on liitetty järjestelmäm tuntemien prosessien joukkoon (System Task Directory), mutta prosessi ei ole aktiivinen. Passiivinen prosessi ku
luttaa hyvin vähän muistia, mutta sen aktivoiminen käy tarvittaessa nopeasti, koska prosessin kuvan osoite sisältyy prosessin kontrollilohkoon ja proses
si voidaan hakea levyltä suoraan tämän osoitteen perusteella. lleensä järjestelmässä on passiivisia prosesseja huomattavasti enemmän kuin aktiivisia prosesseja .
Aktiivisella prosessilla tarkoitetaan prosessia, jolle on kohdistettu suorituspyyntö ja jonka suoritus ei ole vielä päättynyt.
Aktiivinen prosessi voi olla joko ajovalmis (READi- TO-RUN) tai odottava (BLOCKED). Ajovalmiin prosessin kontrollilohko on liitetty järjestelmän aktiivisten prosessien joukkoon ja se kilpailee prioriteettinsä perusteella prosessoriajasta . Odottava prosessi ei kilpaile prosessoriajasta, koska se ei ole valmis suoritukseen. Odottava prosessi odottaa tyypillisesti synkronointiehtoa tai muuta resurssia kuin proses
soria.
Prosessin siirtyminen tilasta toiseen tapahtuu prosessin tilaan vaikuttavien tapahtumien seuraukse
na. Näitä tapahtumia ovat esim. käyttäjän järjestelmälle antamat prosessia koskevat komennot tai prosessin suorittamat systeemikutsut.
Prosessin tuominen järjestelmään tapahtuu instal
loimalla prosessi (MCR: n komento INStall). Tällöin luodaan prosessin kontrollilohko, joka liitetään muiden kontrollilohkojen joukkoon. Prosessi on ins- talloinnin jälkeen passiivisessa tilassa.
Prosessin poistaminen järjestelmästä tapahtuu M C R: n komennolla REMove. Tällöin prosessin kontrollilohko poistetaan järjestelmän tuntemien kontrollilohkojen joukosta.
KK/TKÛ/PSc 1979-11-15 -16-
Prosessin siirtyminen passiivisesta tilasta aktiivi
seen tilaan voi tapahtua käytännössä useammalla eri tavalla. Periaatteessa on aina kyseessä prosessin suorituspyyntö, joka voidaan antaa HCR:n komennolla RUN tai systeemikutsuilla RUN tai REQUEST.
Prosessin suorituksen päättyminen aiheuttaa prosessin siirtymisen aktiivisesta tilasta passiiviseen tilaan.
Suorituksen päättyminen voi aiheutua seuraavista syistä:
- prosessin suorittama systeemikutsu TASK EXIT
EXIT IF EVENT FLAG NOT SET RECEIVE DATA OR EXIT
RECEIVE Bi REFERENCE tietyssä tilanteessa ABORT TASK
- operaattorin antama MCR:n komento ABürt
- sellaisen synkronisen prosessorikeskeytyksen ta
pahtuminen, jolle ei ole määritelty palveluru- tiinia .
Tilasiirtymät prosessin aktiivisen tilan sisällä, ajovalmiista tilasta odottavaan tilaan ja päinvastoin, tapahtuvat seuraavien ehtojen vallites- s a :
Siirtyminen ajovalmiista tilasta odottavaan tilaan:
- prosessin itsensä suorittamat systeemikutsut SUSPEND
WAITFOR, kun ehto ei ole tosi
- käyttöjärjestelmän suorittama prosessin keskeyt
täminen ja levylle siirtäminen (checkpointing) muistitilan vapauttamiseksi korkeamman priori
teetin omaavalle prosessille. Tämä voi myös ta
pahtua prosessin odottaessa päätteelle suoritet
tavan s/t-toiminnon päättymistä.
Siirtyminen odottavasta tilasta ajovalmiiseen tilaan:
- toisen prosessin prosessille suorittama sys
teemikutsu RESUME
- operaattorin antama MCR:n komento RESume
- käyttöjärjestelmän suorittama keskeytetyn prosessin palauttaminen muistiin, kun tarvittava muistitila vapautuu korkeamman prioriteetin omaavalta prosessilta tai prosessin syöttötietojen lukeminen päätteeltä loppuu.
- WAITFOR, kun ehto muuttuu todeksi.
Prosessin saapuminen käyttöjärjestelmän prosessien joukkoon ja sieltä poistuminen tapahtuu aina pas
siivisen tilan kautta ja operaattorin antamien MCR:n komentojen INStall ja REMove perusteella. Nämä MCR:n komennot ovat usean käyttäjän järjestelmissä
KK/iKU/PSc 1 979-1 1-1 5 -17-
etuoikeutettuja komentoja, joita voivat suorittaa vain etuoikeutetut käyttäjät. "Rivikäyttäjän"
käytettävissä on kuitenkin HCR: n komento RUN, joka käsitetään tarvittaessa komennoiksi 1ЫStall , RUH ja REMove. Jos prosessin kontrollilohkoa ei löydy järjestelmän tuntemien prosessien joukosta, prosessi siis installoidaan, sille annetaan suorituspyyntö ja suorituksen jälkeen se poistetaan välittömästi.
KK/TKO/PSc 1 979-1 1-1 5 -18-
.3 Prosessoriajan jako
Prosessoriajan jako RSX-11M:ssä perustuu tapahtumiin ja prosessien prioriteetteihin . Merkittävän tapahtu
man jälkeen valitaan seuraavaksi suoritettavaksi prosessiksi korkeimman prioriteetin omaava aktiivi
nen, ajovalmis prosessi. Ajoituspolitiikkaan voidaan valinnaisena optiona ottaa mukaan myös jonkinverran aikajakoisuutta, joskaan aikajakoisuus ei kuulu RSX-11M:n peruspiirteisiin.
RSX-11M on tapahtumaohjattu järjestelmä.
Kun prosessi on saanut haltuunsa prosessorin, se voi käyttää prosessoriaikaa, kunnes tapahtuu merkittävä tapahtuma (significant event).
Merkittäviä tapahtumia ovat:
- syöttö- tai tulostustoiminnan päättyminen - prosessin päättyminen
- SEND DATA systeemikutsu
- SEND BY REFERENCE systeemikutsu - RECEIVE BY REFERENCE systeemikutsu - ALTER PRIORITY systeemikutsu
- DECLARE SIGNIFICANT EVENT systeemikutsu - kellojonon alkion poistaminen
- Round-Robin aikaviipaleen päättyminen.
Prosessien käytettävissä olevat prioriteettitasot ovat välillä 1 - 250. Merkittävän tapahtuman jälkeen järjestelmä tutkii aktiivisten prosessien listaa (ATL) ja valitsee suoritettavaksi ensimmäisen suori
tettavissa olevan prosessin. Prosessien kontrolli- lohkot on liitetty aktiivisten prosessien listaan prioriteetin mukaiseen järjestykseen.
Round-Robin ajoituspolitiikka on RSX-11M:n valin
nainen ominaisuus, jonka käyttö ja aikaviipaleen pi
tuus määritellään systeemin generointivaiheessa.
Periaatteena Round-Robin ajoituksessa on, että saman prioriteetin omaavat prosessin jakavat keskenään ta
san sen proses soriajan , jonka kyseisen prioriteetti- ryhmän prosessit yhteensä saavat. Ilman Round-Robin ajoitusta käyttöjärjestelmällä on taipumus antaa prosessoriaikaa useammin prosessille, jonka TCB si
jaitsee STD:ssä ensimmäisenä. (Saman prioriteetin omaavat prosessit ovat STD:ssä installointi- järjestyksessä.)
KK/TKü/PSc 1 979-1 1-1 5 -19-
Eräs RSX-1 1Ы: n prosessoriajan jakoon vaikuttava omi
naisuus on prosessien keskeytettävyys (checkpoint
ing). Prosessin keskeyttämisellä tarkoitetaan muistissa olevan prosessin tilapäistä kirjoittamista levylle tähän tarkoitukseen varatulle alueelle, jotta korkeamman prioriteetin omaava prosessi voidaan si
joittaa muistiin. Prosessin keskeytettävyyden tar
koituksena on taata, että keskeyttänyt korkeamman prioriteetin omaava prosessi voidaan tuoda muistiin.
Jotta prosessi olisi keskeytettävissä, se on eksplisiittisesti määriteltävä keskeytettäväksi prosessiksi, (Task Builderin optio CHECKPOINTABLE = YES. )
Prosessien muistitilan jakamisella (RSX-ympäristössä käytetään termiä swapping, jolla ei kuitenkaan tar
koiteta aivan samaa kuin termillä yleensä) tar
koitetaan yhteisen muistialueen jakamista useamman, lähes saman prioriteetin omaavien prosessien kesken.
Myös muistitilan jakaminen on systeemin generoinnin yhteydessä valittavissa ja määriteltävissä oleva omi
naisuus. Muistitilan jakaminen perustuu prosessille määriteltävään muistiprioriteettiin . Kun prosessi tuodaan muistiin, muistiprioriteetti saa alkuarvok- seen prosessin prioriteetin ja määritellyn muistiprioriteettivakion summan. Tietyin, systeemin generoinnin yhteydessä määritellyin aikavälein dekrementoidaan muistiprioriteettia yhdellä kunnes prosessin prioriteetti on tasolla prosessin prioriteetti - nuistiprioriteettivakio tai kunnes jo
kin odottava prosessi on keskeyttänyt kyseisen prosessin. Muistiprioriteettikäsitteen käyttöönotto mahdollistaa sellaisten odottavien prosessien, joiden prioriteetti on sama tai jopa muistiprioriteettiva
kion verran alhaisempikin, toimesta tapahtuvan muistissa olevan prosessin keskeyttämisen. Muis
tiprioriteetti vaikuttaa vain muistinkäyttöön;
prosessin prioriteetti muiden järjestelmän resurssien suhteen ei muutu. Jotta muistissa oleva prosessi yleensä voitaisiin keskeyttää, sen on tietysti oltava keskeytettävissä. Muistin jako-ominaisuutta kannat
taa käyttää lähinnä suurissa järjestelmissä, joissa tehdään paljon ohjelmankehitystyötä.
KK/TKO/PSc 1 979-1 1-1 5 -20-
.4 Prosessien synkronointi ja kommunikointi
Prosessin synkronointi RSX-11M:ssä perustuu ta- pahtumalippujen käyttöön (event flags). Kullekin prosessille on määritelty 64 tapahtumalippua, jotka on numeroitu 1 - 64. (Event Flag number, EFN).
KUVA 2.4 Tapahtumalippujen jako
EFN :
järjestelmän yhteiset prosessin paikalliset tapahtuma liput tapahtumaliput
<--- X--- p
57 56 33 32 25 24
järjestelmän käyttöön varatut tapahtuma li put
Prosessi voi käsitellä järjestelmän yhteisiä ja omia paikallisia tapahtumalippujaan. Toisen prosessin paikallisiin tapahtumalippuihin prosessi ei mitenkään pääse käsiksi.
Tapahtumalippujen käsittely tapahtuu erityisillä sys
teemikutsuilla.
Näitä ovat :
- CLEAR EVENT FLAG - READ ALL EVENT FLAGS - SET EVENT FLAG
- WAIT FOR SINGLE EVENT FLAG
- WAIT FOR LOGICAL 'OR' OF EVENT FLAGS.
Useat muutkin systeemikutsut käsittelevät implisiit
tisesti tapahtumalippuja. Prosessi voi kunkin sys
teemikutsun yhteydessä määritellä itse käytettävän tapahtumalipun numeron.
EXITIF: prosessin suoritus päättyy ellei määritelty tapahtumalippu ole asetettu.
MARK TIME: tapahtumalippu nollataan systeemikutsua suoritettaessa ja asetetaan määritellyn ajanjakson
KK/TKO/PSc 1 979-1 1-1 5 -21 -
kuluttua.
QUEUE I/O REQUEST: tapahtumalippu nollataan kun I/O- pyyntö asetetaan jonoon ja asetetaan kun S/T päättyy.
SEND DATA: tapahtumalippu asetetaan, kun tietolohko asetetaan jonoon.
SEND BY REFERENCE: tapahtumalippu asetetaan lähettävälle prosessille, kun vastaanottava prosessi suorittaa RECEIVE BY REFERENCE systeemikutsun.
Prosessien välinen kommunikointi on RSX-11M:n puit
teissa mahdollista useammalla eri tavalla. Kommuni
kointi voi tapahtua joko lähettämällä tietoa suoraan tai lähettämällä tieto tiedon sijainnista.
Tiedon lähettäminen suoraan toteutetaan systeemikut
suilla SEND/RECEIVE DATA. Lähetettävä tieto si
joitetaan 13- sanan mittaiseen tietopuskuriin, jonka käyttöjärjestelmä asettaa dynaamiselle muistialueel
leen (Dynamic Storage Region, DSR) jonoon vastaanot
tavalle prosessille. Jonoa käsitellään fifo- periaatteella. Vastaanottavalle prosessille välite
tään paitsi tietopuskuri, myös tieto lähettävästä prosessista. Tiedon välityksen synkronointia ei ole sisällytetty SEND/RECEIVE DATA - systeemikutsuihin, vaan jos synkronointia tarvitaan, se on rakennettava itse tapahtumalippujen avulla.
Tiedon välityksessä käytetyt yhteiset muistialueet voivat olla joko staattisia tai dynaamisia. Tieto sijaitsee muistialueella, joka on kaikkien kommuni
koivien prosessien osoitettavissa, ts. muistialue on liitetty kunkin prosessin muistiavaruuteen. Staat
tinen muistialue on olemassa luontihetkestään siihen asti, kunnes se eksplisiittisesti tuhotaan. Staat
tinen muistialue on luotava ennen minkään kommuni
koivan prosessin linkittämistä ja se on sijoitettava omaan muistin osaansa, partitioon, jonka tyypiksi on määriteltävä COMMON.
Dynaamisella muistialueella tarkoitetaan muistialuet
ta, jonka prosessi voi dynaamisesti luoda muistin hallintaan liittyvien systeemikutsujen avulla. Muis
tialueiden välittäminen prosessilta toiselle voi ta
pahtua systeemikutsujen SEND/RECEIVE BY REFERENCE avulla tai prosessi voi viitata toisen prosessin luomaan muistialueeseen yksinkertaisesti alueen nimen perusteella edellyttäen, että alue on nimetty ja prosessi tuntee alueen nimen. Dynaamisiin muisti
alueisiin liittyviä asioita käsitellään perusteel
lisemmin muistinhallintaa käsittelevässä luvussa 3»
KK/TKO/PSc 1979-11-15 -22-
Todella suurien tietomäärien siirtoon ainoa käytettävissä oleva keino on yhteisten (data-)tiedostojen käyttö. Tiedoston suojausmekanis- mit ja tiedonsiirron synkronointi on pitkälti raken
nettava itse .
ESIMERKKI 2.3: Prosessien kommunikointi SEND/RECEIVE systeemikutsujen avulla.
Kommunikoivat prosessit ovat nimeltään SEND ja RE
CEIV. SEND lähettää prosessille RECEIV tietopuskurin ja jää odottamaan. RECEIV vastaanottaa SENDin lähettämät tiedot, käsittelee ne ja lähettää tieto- puskurin takaisin SENDille.
Ohjelmista on pyritty tekemään mahdollisimman yksin
kertaisia havainnollisuuden säilyttämiseksi, joten ne eivät sisällä esim. virhetarkistuksia. Jotta ohjel
mat pysyisivät kohtuullisen kokoisina, ei niissä myöskään ole kovin runsaasti kommentteja.
Ohjelmien listaukset ovat liitteenä seuraavilla sivuilla.
Ajoesimerkki:
>RUN SEND
TASK! SEND JAA ODOTTAMAAN,
RECEIV ON VASTAANOTTANUT TIEDOT?
•t 2 3 4 5
9 10 И i2 13
ÏASKI SEND ON VASTAANOTTANUT TIEDOT;
?_ 4 6 8 10
18 20 22 24 26
RECEIV LOPETTAA,.,
12 14
8
16
MACRO Ml110 03-0CT-79 16:37 1PAGE 1 LIITE 1-1
1 .TITLE SEND
2 .LIST TTM
3 .NLIST ВЕХ
4 .NLIST SYM
5 ♦MCALL QIOW$C ,SDAT$C » RGST$C
6 .MCALL SPNDSS,RCVD$C,EXIT$S,USIGSS
7 8 9
10 000000 000001 obuff: . WORD 1,2,3,4,5,6,7,8.»9.,10.,11.,12.»13.
11 000032 ibuff: ♦ BLKW 15.
12 000036' ARGBL.K -IBUFF+4
13 000070 012 MSGi : .ASCII <12>/TASKI SEND JAA ODOTTAMAAN./
14 000033 SIZ1='.- MSGI
15 000123 124 EDSTRGÎ .ASCII /TASKI SEND ON VASTAANOTTANUT TIEDOT:
16 000170 045 .ASCIZ /%N%8D%N%5D/
17 000203 msgbuf: . BLKB 100.
13 . EVEN
19 « ENABL L.SB
20 »
21 î
2p 000350 start: SDAT$C RECEIV,OBUFF 9 LÄHETETÄÄN TIETO
23 000356 RQSTSC RECEIV 9 KÄYNNISTETÄÄN RECEIV
24 000364 QIOWSC 10. UVB, 5,5, » , »•ÍMSG1,SIZ1,40>
25 000372 SPNDSS 9
26 27 28
9 JA ODOTETAAN...
000400 RCVDSC ,IBUFF
9
9 VASTAANOTETAAN TIETO 29 000406 012700 MOV *MSGBUF,RO 9 JA TULOSTETAAN
30 000412 012701 MOV tEDSTRG,R1 9
31 000416 012702 MOV ÍARGBLK,R2 9
32 000422 004767 JSR PC,$EDMSG 9
33 000426 GIOUSC 10 . UVB ,5,1 , , » , <ÍMSGBUF» 100.,40>
34 000434 EXIT$S 9
35 000350' . END START
0FtS DETECTED J О
TUAL MEMORY USED: 1971 UORDS ( 8 PAGES) 'AMIC MEMORY: 16962 WORDS ( 65 PAGES) i psed time: oo:oo:36
d,lp:=send
IV MACRO Ml 110 03 -OCT-79 1
б:зз
PAGE 1LIITE 1-2
1 ♦TITLE RECEIV
2 ♦ LIST TTM
3 .NLIST BEX
4 .NLIST SYM
5
♦MCALL QIOWSC,SDAT$C, RCVDSC6
? 8 9 10
♦MCALL RSUMSCуEXIT $Sу USIGSS y
000000 ibuff: . BLKW 15 ♦
У У
11 000004" OBUFF == IBUFF + 4
12 000036 122 MSG2 : ♦ASCII /RECEIV LOPETTAA.../
13 000022 SIZ2=. -MSG2
14 000060 122 EDSTRGÎ ♦ASCII /RECE IV ON VAS TAANOTTANUT TIEDOTî 15 000120 045 .ASCIZ /%N%8DXN%5D/
16 000133 msgbuf: ♦ BLKB 100.
17 ♦ EVEN
18 ♦ENABL LSB
19 У
20 У
21 У
22 000300 start: RCVDSC y IBUFF У VASTAANOTETAAN 23 000306 012700 MOV ♦ MSGBUFy RO у JA TULOSTETAAN
24 000312 012701 MOV ♦ ED3TRG y Rl У
25 000316 012702 MOV ♦OBUFFyR2 У
26 000322 004767 JSR PC y SEDMSG У
27 000326 QIOW$C 10.WVB y 5 y 1 У У У У•íMSGBUF у 100 ♦ у 40>
28 000334 012700 MOV ♦ OBUFFy RO У KERROTAAN ARVOT
29 000340 012701 MOV ♦ 13.y RI У
30 000344 061020
io $:
ADD (RO)y(RO)i У31 000346 077102 SOB RI y 10$ У
32 000350 SDAT $C SEND yOBUFF У LÄHETETÄÄN TIETO
33 000356 RSUM$C SEND у HERÄTETÄÄN SEND
34 000364 QIOWSC 10♦WVB y 5 y 1 У У У У<MSG2 y SIZ2 у 40>
35 000372 EXITSS
36 000300" ♦ END START
DRS detected: о
гиAL MEMORY USEDî 1805 WORDS ( 8 PAGES) tMIC MEMORY: 16962 WORDS < 65 PAGES)
■■'SED time: 00:00:40
hv,lp:=:receiv
TIETO
КAHDEL
KK/TKO/PSc 1979-11-15 -23-
.5 Keskeytysten käsittely
Keskeytykset ovat kahta perustyyppiä:
- prosessorin aiheuttamat keskeytykset
- ulkoisten laitteiden aiheuttamat keskeytykset.
Seuraavassa käsitellään käyttöjärjestelmän keskeytys
ten käsittelyä. Käyttäjä voi myös määritellä omia keskeytyspalvelurutiinejaan, mutta niihin ei puututa tässä yhteydessä.
Prosessorikeskeytykset ovat yleensä synkronisia ja ne voidaan käsittää ohjelmiston aiheuttamiksi. Ulkoiset keskeytykset ovat asynkronisia, oheislaitteiden aiheuttamia keskeytyksiä.
Ulkoisilla laitteilla on laitteisto-osoitin laite
kohtaiseen sanapariin muistissa. Sanapari sisältää prosessorin uuden tilasanan ja laitteen keskeytys pal- veluohjelman osoitteen.
KUVA 2.5 Laitteistokohtainen sanapari
keskeytyspalveluosoite uusi P S W
Keskeytyksen sattuessa ei siis tarvitse käydä lävitse kaikkia mahdollisia keskeytyksen aiheuttajia vaan tiedetään heti, mikä laite keskeytti. Kun prosessori keskeytetään, prosessorin tilasana (Processor Status Word, PS, PSW) ja ohjelmalaskuri (Program Counter, PC) työnnetään pinoon. Uusi PC ja PS otetaan ylläkuvatusta laitekohtaisesta sanaparista, joka si
jaitsee muistissa keskeytysvektoreille varatulla alueella. Käsky RTI (Return from Interrupt) palaut
taa alkuperäisen PS:n ja PC:n.
Ulkoisiin keskeytyksiin liittyy prosessorin priori- teettitaso PR4, PR5, PR6 tai PR7. Prioriteettitaso PR4 on näistä matalin ja PR7 korkein. Ulkoiset keskeytykset ovat täten priorisoitavissa ja ne voidaan tarvittaessa peittää; keskeytykset sallitaan vain, jos keskeyttäjän prioriteetti on suurempi kuin prosessorin nykyinen prioriteetti.
KK/TKO/PSc 1979-11-15 -24-
Prosessorikeskcytyksiä ei voida peittää, vaan ne käsitellään aina välittömästi. Tärkein proses- sorikeskeytyksen aiheuttaja on käsky EMT (Emulator Trap ) .
Keskeytyksen käsittely käyttöjärjestelmässä suori
tetaan seitsemän rutiinityypin avulla.
Nämä rutiinityypit ovat :
- Interrupt Service Routines - Trap Service Routines
- The Interrupt Save Routine (INTSV) - The Directive Save Routine (DIRSV) - The Interrupt Exit Routine (INTXT) - The Directive Exit Routine (DIRXT) - The Fork Processor (FORK).
Keskeytysten käsittelyrutiinit voivat olla suori
tuksessa kolmella eri prioriteettitasolla : priori- teettitasolla 7, keskeytyksen aiheuttajan prioriteet
titasolla ja Fork-tasolla 1. prioriteetitasolla 0.
Toimenpiteet, joihin keskeytyksen sattuessa ryhdytään, riippuvat keskeytyksen lajista ja siitä, missä systeemin tilassa oltiin, kun keskeytys sattui.
Systeemin tilaa osoittaa STKDP (Stack Depth Indica
tor):
STKDP = 1 : käyttäjätilassa STKDP <= 0 : systeemitilassa.
Pääsääntöisesti prosessorikeskeytyksiä ilmenee vain käyttäjätilassa, mutta laitekeskeytyksiä sattuu sekä käyttäjä- että systeemitilassa.
Keskeytysten käsittelytapa ratkaistaan seuraavasti :
1 Käyttäjä
-L -L d .
Systeemi
Ulkoinen 1 2
Prosessori 3 4
Keskeytys :
KK/TKO/PSc 1 979-1 1-1 5 -25-
(1) Käyttäjätilassa tapahtuva ulkoinen keskeytys
- Prosessorin tilasana (PS) ja ohjelmalaskuri (PC) työnnetään pinoon.
- Aloitetaan keskeytys palvelurut iini .
- Jos keskeytyksen palvelu kestäisi yli 100 mikrosekuntia (järjestelmän konventio), ei koko keskeytyksen käsittelyä voida hoitaa prioriteettitasoila 7 eli keskeytykset kiel
lettynä, vaan on siirryttävä keskeytyksen aiheuttajan prioriteettitasolle. Tämä tapahtuu rutiinin Interrupt Save (IU TSV) avulla. INTSV tallettaa rekisterit RЦ ja R5, dekrementoi STKDP:n arvoa, vaihtaa pinon systeemipinoksi, jos STKDP:n arvo on nolla, ja lataa uuden prioriteettiarvon, joka annetaan INTSV:n kutsussa.
(2) Systeemitilassa tapahtuu ulkoinen keskeytys
- Hoidetaan kuten (1). INTSVrssä ei kuitenkaan tarvitse koskaan vaihtaa pinoa, koska ollaan jo systeemitilassa.
(3) Käyttäjätilassa tapahtuu prosessorikeskeytys
- Prosessorin tilasana (PS) ja ohjelmalaskuri (PC) työnnetään pinoon.
- Aloitetaan keskeytyspalvelurutiini .
- Jos keskeytys on käsky EMT, työnnetään sys
teemikutsun (direktiivin) parametrit käyttäjän pinoon ennen EMT:n suorittamista.
- Keskeytyspalvelurutiini kutsuu Directive Save rutiinia (DIRSV), joka suorittaa periaatteessa samat toimenpiteet kuin IЫ T S V, mutta tallettaa kaikki rekisterit.
(4) Systeemitilassa tapahtuu prosessorikeskeytys Vain kaksi keskeytystyyppiä ovat sallittuja:
TRAP-käsky ja jännitehäiriö.
TRAP-käsky simuloi FORK-prosessin luomista ja varmistaa systeemin tietokantojen käsittelyn pe
räkkäisesti. Jännitehäiriö on itseasiassa ul
koinen keskeytys, joka ei ole koskaan peitettävissä ja käsitellään siksi kuten proses
sorikeskeytys. Kiellettyjen keskeytysten sat
tuessa järjestelmän toiminta lopetetaan. TRAP- käsky n ja jännitehäiriön käsittelyyn ei niiden erikoistapauksen luonteen vuoksi puututa tässä.
KK/TKÛ/PSc 1979-11-15 -26-
Pal ve lua odottavien keskeytysten lukumäärän yläraja on myös riippuvainen keskeytyslajista. Proscs- sorikeskeytyksiä voi olla palvelua jonottamassa vain yksi, koska prosessorikeskeytys tapahtuu pääsääntöisesti käyttäjätilasta ja järjestelmä on käyttäjätilassa vain, jos systeemitilassa ei ole mitään tekemistä. Systeemitilassa voi tapahtua vain ulkoisia keskeytyksiä. Palveltavien keskeytysten jonon pituus on siis käyttäjätilassa korkeintaan yk
si, mutta systeemitilassa useampiakin keskeytyksiä voi olla odottamassa.
Systeemitilassa on useampien peräkkäisten keskeytys
ten käsittelyn ongelmat rekursion ja tietokantojen suhteen ratkaistu järjestämällä operaatiot pe
räkkäisiksi. Systeemin tietokannoilla tarkoitetaan järjestelmään kiinteästi kuuluvia tietorakenteita, jotka sisältävät tiedot prosesseista, muistin käytöstä ja oheislaitteista.
Järjestelmän tavoitteena on toimia keskeytettävissä mahdollisimman suuren osan ajasta. Järjestelmä ei ole keskeytettävissä, jos keskeytystä käsitellään prioriteettitasolla 7, keskeyttäjän prioriteetti on alempi kuin suoritettavan keskeytyksen prioriteetti tai systeemi päivittää tietokantaansa, jonka kon- sistenssia ei voida ylläpitää kieltämättä keskeytyk
siä.
Usein keskeytysten käsittely vaatii enemmän aikaa kun edellä mainittu 100 mikrosekunttia. Kun prosessi on vaihtanut prioriteettinsä keskeyttäjän prioriteetti- tasolle, se voi jatkaa suoritustaan tällä tasolla 500 mikrosekuntia. Työväline, jolla keskeytystenkäsitte- lyrutiinit jaetaan ei-keskeytettäviin ja keskeytet
täviin osiin, on FORK PROCESSOR.
Fork on sisäinen aliohjelma, joka järjestää systeemin tietokantoihin tapahtuvat operaatiot peräkkäisiksi.
Peräkkäisrakenteena käytetään aliohjelmaan liittyvää listaa, FORK LIST, jota käsitellään fifo-periaat- teella.
Keskeytysten käsittelyohjelmille asetetaan seuraavat vaatimukset: muut rekisterit, paitsi R4 ja R5 on säilytettävä ja palautettava, jos niitä käytetään, keskeytyksettä voidaan suorittaa korkeintaan 20 käskyä ja kaikki muutokset systeemin tietokantoihin suoritetaan FORK PROCESSORin kautta. Keskeytyksen käsittelyohjelman on kutsuttava FORKia, kun se haluaa siirtyä keskeytettävästä tilasta ei-keskeytettävään tilaan tai muuttaa systeemin tietokantaa.
KK/TKO/PSc 1979-11-15 -27-
FORKin kutsuminen tapahtuu IЫ T S V : n kautta. FORK tar
vitsee myös erityisen FORK BLOCKin, jonka se liittää FORK LISTaan. FORK LIST on siis lista niistä sys- teemirutiineista, jotka odottavat suorituksensa päättämistä tai pääsyä systeemin tietokantoihin.
Itseasiassa FORK LIST on toissijainen keskeytysjono, jota käsitellään fifо-periaatteella silloin, kun sys- teemipino on tyhjä. FORK BLOCK sisältää kutsuvan prosessin R4,R5 ja PC:n, jotka tiedot riittävät prosessin uudelleen käynnistämiseksi. FORK sijoittaa FORK BLOCKin FORK LISTaan ja kutsuu INTXTiä.
Systeemitilasta poistuminen tapahtuu keskeytyslajista riippuen joko rutiinin Interrupt Exit (INTXT) tai Directive Exit (DIRXT) kautta. Poistumisrutiinit poistavat peräkkäin kaikki alkiot systeemipinosta ja sen jälkeen FORK LISTasta. Järjestelmän pyrkimyksenä on saattaa kaikki keskeneräiset työt päätökseen niin pian kuin mahdollista. Kun systeemipino ja FORK LIST on käsitelty palataan käyttäjätilaan.
INTXT inkrementoi STKDP:n, palauttaa rekisterit R4 ja R5 ja suorittaa paluun. Jos paluun pitäisi tapahtua käyttäjätilaan, tarkistetaan ensin, onko FORK LIST tyhjä. Jos FORK-lista ei ole tyhjä, talletetaan re
kisterit R0 - R3 ja kutsutaan DIRXTiä.
DIRXT käynnistää FORK LISTassa olevat työt uudelleen yksitellen, valitsee uuden suoritettavan prosessin, jos ajoitusosoitin (rescheduling pointer, RQSCH) on asetettu ja palaa korkeimman prioriteetin omaavaan prosessiin, jonka tiedot löytyvät systeemipinosta.
Käyttöjärjestelmän rakenne on luonteeltaan pe
räkkäinen, joten erityisiä synkronointimekanismeja ei tarvita. Rutiinit, jotka on laadittu järjestelmän konventioiden mukaisesti suorittavat systeemin tietokannan päivitykset peräkkäin, eikä niiden tar
vitse erikseen huolehtia tietokannan varaamisesta yk
sityiseen käyttöönsä.
KK/TKO/PSc 1979-11-15 -28-
KUVA 2 .6 Keskeytysten käsittely kaaviona
keskeytys
yli 100ys
<y l L ä tarvitaa
INTXT/DIRXT keskeytyksen
käsittely PRO
kutsutaan INTSV/DIRSV
kutsutaan FORKia
keskeytyksen käsittely PR laite keskeytyksen käsittely PR7
tulo palvelu-- rutii niin
< RT1 )
KK/TKU/PSc 1979-11-15 -29-
.6 Systeemikutsut
Systeemikutsuilla (sys teemidirekt iiveillä) tarkoite
taan käskyjä, joilla prosessi pyytää käyttöjärjestel
mältä palveluja.
Systeemikutsu on makro, jolla on mahdollisesti ar
gumentteja .
Systeemikutsujen toteutus koostuu kahdesta osasta : 1. Parame tril ohkon (Directive Parameter Block, DPB)
luominen.
2. EMT 377 - käskyn suoritus, joka aiheuttaa prosessorikeskeytyksen, jonka käyttöjärjestelmä palvelee.
Systeemikutsun parametrilohko sisältää kutsun tunnis
tamiseksi tarvittavat tiedot ja muut mahdolliset ar
gumentit. DPB voidaan tallettaa pinoon tai prosessin data-alueelle.
KUVA 2.7 Systeemikutsun parametrilohko
DPBSZ DIC
direktiivin argumentit
DPBSZ
DPB: n koko DIC
Direktiivin identifikaatio koodi
Direktiivin identifikaatiokoodi, DIC, on aina pariton luku. Jos DPB luodaan prosessin data-alueelle, sen osoite työnnetään pinoon direktiivin kutsussa. Jos DPB työnnetään kokonaan pinoon, jää pinon päällimmäiseksi sana, joka sisältää DICin. DIC on aina pariton, kun taas osoite on aina parillinen, joten pinon päällimmäinen sana sisältää aina tiedon parametrilohkon sijainnista.
KK/TKO/PSc 1979-11-15 -30-
Direktiivin identifikaatiokoodille, DICille, varattu tila, 1 tavu, rajoittaa mahdollisten direktiivien määrän 128 : aan. Tällä hetkellä niistä on käytetty hieman yli 50.
Direktiivin kutsu on muotoa : XXXX$Y.
XXXX korvataan direktiivin nimellä ja Y määrittelee direktiivin muodon . Direktiiveistä on yleensä toteu
tettu kolme erilaista muotoa :
Y muoto
tyhjä DPB prosessin data-alueella, direktiivin suoritus
DIR$ direktiivillä S DPB pinossa
C DPB pinossa data-alueella
XXXX$-muoto vain luo direktiivin parametrilohkon, muoto on siis tarkoitettu käytettäväksi data-alueella määrittelynä. XXXX$-muoto on erityisen hyödyllinen, jos samaa direktiiviä käytetään useamman kerran.
Makron suoritus tapahtuu koodialueella olevan DIR$-makron avulla, joka suorittaa direktiivin prosessoinnin toisen osan : EMT 377 - käskyn.
XXXX$S-muoto työntää direktiivin parametrilohkon pi
noon ja suorittaa EMT 377 - käskyn. XXXX$S-muoto luo DPB : n vasta suoritusaikana, kun muut muodot luovat sen jo käännösvaiheessa. Jos prosessin on oltava vapaakäyntinen, on direktiiveistä käytettävä XXXX$S- muotoja.
XXXX$C-muoto tuottaa direktiivin parametrilohkon erilliseen ohjelmasektioon $DPB$$. DPB: n luomisen jälkeen palataan kutsussa määriteltyyn ohjelmasek- tioon, työnnetään DPB: n osoite pinoon ja suoritetaan EMT 377 - käsky. XXXX$C-muodon käyttö on suositelta
vaa, mikäli ohjelman ei tarvitse olla vapaakäyntinen ja makro suoritetaan vain kerran.
KK/TKO/PSc 1 979-1 1-1 5 -31-
ESIME RKKI 2.4: Systeemikoraento jen eri muodot
Prosessit DIRE, DIRES ja DIREC havainnollistavat sitä, miten eri muodot laventuvat käännösvaiheessa, eli miten eri systeemikutsut itseasiassa on toteutet
tu .
Kaikki ohjelmat kirjoittavat rivin tekstiä rivikir- joittimelle käyttäen QlO-makroa.
QIO$-muodolla luodaan direktiivin parametrilohko ohjelman data-alueelle ja direktiivin prosessoinnin toinen osa, EMT 377 -käsky suoritetaan DIR$-direlctiivillä.
QlU$S-muoto työntää parametrit pinoon ja suorittaa lopuksi EMT 377 -käskyn.
QIO$C-muoto taas luo parametrilohkon omaan oh je 1- masektioonsa ja parametrilohkon osoite työnnetään pi
noon ennen EMT 377 -käskyn suoritusta.
Ohjelmalistauksessa ne rivit, joiden alussa on rivi- numerointi, ovat varsinaisia ohjelmarivejä.
Rivinuinerottomat rivit ovat kääntäjän tuottamaa koodia.
1 2 3 4 5 ó 7 8 9 10 11 12 13 14 15 16 17 18
19
20 21 22 23 24
25 26 27 28 29 30 31 32 33 34
MACRO МНЮ 03-0СТ-79 13Î38 PAGE 1 LIITE 2-1
SYSTEEMIDIREKTIIVI QI0$
.TITLE DIRE .LIST MED .LIST TTM
.MLIST BEX .NLIST SYM 000000 000000'
i
.MCALL
.MCALL
G10*tWTSE*»DIR*»EXIT*S
? GIO -- QUEUE I/O REQUEST
î WTSE - WAIT FOR SINGLE EVENT FLAG 5 DIR - DIREKTIIVIN SUORITTAMINEN
; EXIT - TASK EXIT ALUNSC
000002 start: ALUNSC 5 » LP t0
000000 007 .BYTE 7,4
000002 000005 . WORD 5
000004 114 .ASCII /LP/
000006 000000 .WORD 0
000002 012746 MOV #***f-<SP>
000006 104377 EMT "CK377>
000010 DIR* »WRITE
000010 012746 MOV »WRITE » -<SP) 000014 104377 EMT "0<377>
000016 103412 DCS ERRl
000020 DIR* »WAIT
000020 012746 MOV »WAIT » - < SP) 000024 104377 EMT ~0<377>
000026 126727 CMPB IOST ? »IS♦sue
000034 001010 BNE ERR2
000036 EXIT $S
000036 012746 MOV (PC) + » -(SP)
000040 063 .BYTE 51. » 1
000042 104377 EMT ~0<377>
f ERROR ROUTINES 000044 012700 ERRl : MOV » 11 RO 000050 016701 MOV $DSW tR1
000054 000004 IOT
000056 012700 ERR2Î MOV »2 » RO
000062 016701 MOV IOSTrRl
000066 000004 IOT
IRE MACRO МНЮ 03-0CT-79 PAGE 2 LIITE 2-2
36 9 -
37 9 DATA
38 9
39 000070 write; QIO$ 10.WVB » 5 » 1 » »IOST » »
000070 001 * BYTE 1 » 12.
000072 OOOOOOG . WORD 10.WVB
000074 000005 ♦ WORD 5
000076 001 . BYTE 1 »0
000100 000124' ♦ WORD IOST
000102 000000 ♦ WORD
000104 000130' .WORD BUFF
000106 000025 .WORD BSIZ
000110 000060 .WORD 60
000112 000000 .WORD 0
000114 000000 .WORD 0
000116 000000 .WORD 0
40 9
41 000120 wait; WTSE* 1
000120 051 .BYTE 41 . »2
000122 000001 .WORD 1
42 9
43 000124 iost; . BLKW 2
44 9
45 000130 124 buff; .ASCII /TAMA ON ESIMERKKI
46 000025 BSIZ-. -BUFF
47 .EVEN
48 9
49 000002' .END START
:rrors DETECTED: О
VIRTUAL MEMORY USED Î 1295 WORDS ( 6 PAGES) DYNAMIC MEMORY; 1Ó962 WORDS ( 65 PAGES) 'lapsed time; oo;oo;43
11RE»LP;-DIRE
AMA ON ESIMERKKIRIVI
URES MACRO МНЮ 03-0СТ-79 1 з : 4 5 PAGE 1 LIITE 2-3
1 2 3 4
6 .LIST
7 .NL 1ST
8 ,NL1ST
9 .MCALL
10 11 12
13 .MCALL
14 9
15 9--- ---—
16 000000 start: ALUNSC
000000 007 .BYTE
000002 000005 .WORD
000004 114 .ASCII
000006 000000 .WORD
000000 012746 MOV
000004 104377 EMT
17 000006 Q10$S
000006 005046 CL.R
000010 005046 CLR
000012 005046 CLR
000014 012746 MOV
000020 012746 MOV
000024 012746 MOV
000030 005046 CLR
000032 012746 MOV
000036 005046 CLR
000040 112716 MOVB
000044 012746 MOV
000050 012746 MOV
000054 012746 MOV
000056 001 .BYTE
000060 104377 EMT
18 000062 103414 BCS
19 000064 UTSESS
000064 012746 MOV
000070 012746 MOV
000072 051 . BYTE
000074 104377 EMT
20 000076 126727 C MP В 21 000104 001010 B NE
pp 000106 E XIT $ S
000106 012746 MOV
000110 063 .BYTE
000112 104377 EMT
SYSTEEMIDIREKTIIVI OIO$S
♦ TITLE DIRES .LIST MED TTM
ВЕХ SYM
Q10$S » WTSE$S, EXIT$S
i QIO - QUEUE I/O REQUEST
; UTSE - LIAIT FOR SINGLE EVENT FLAG î EXIT - TASK EXIT
ALUN$C
5 » LP » О
71 4 5 /LP/
О
t$$$,-(SP)
~0<377>
tI0.WVB,t5,tl,,tIOST,,<tMES,tSIZ,t60 -(SP)
-(SP) - ( SP )
#60»-(SP) tSIZ,-(SP) tMES,-(SP) - ( SP )
Ф108Т,-(SP) -(SP)
•tl > (SP)
»5,-(SP)
»10.WVB,-(SP) (PC) + ,-(SP) 1,12.
"0<377>
ERR'1 tl
tl,-(SP) (PC)+,-(SP) 41 . , 2
~0<377>
IOST,tIS.SUC ERR2
(PC) + ,-(SP >
51 . , 1
"0<377>