Documente Academic
Documente Profesional
Documente Cultură
al Republicii Moldova
UNIVERSITATEA TEHNIC A MOLDOVEI
Catedra Tehnologii Informaionale
Chiinu 2007
1
Introducere
La momentul de fa nu exist o definiie clar, acceptat de
toi i succint a termenului sistem de operare. Muli ncearc s
propun o definiie a acestui termen prin enumerarea funciilor pe
care trebuie s le ndeplineasc un sistem de operare, ns trebuie de
luat n considerare acel fapt, c nu toate sisteme de operare propuse
pentru vnzare asigur aceste funcii n ntregime. Conform
cerinelor moderne un sistem de operare trebuie s ndeplineasc
urmtoarele funcii:
S asigure ncrcarea n memorie a programelor
utilizatorului i s le execute;
S asigure dirijarea memoriei. n cel mai simplu caz
aceasta se reduce la indicarea programului unic ncrcat
n memorie adresei, la care se termin memoria
accesibil pentru el, i se ncepe segmentul de memorie
ocupat de sistem;
S asigure lucrul cu diverse mijloace de pstrare a
informaiei, cum sunt benzi magnetice, lente, discuri
optice etc.
S asigure acces mai mult sau mai puin standardizat la
diverse dispozitive periferice;
S asigure o careva interfa pentru utilizator.
Alegerea tipului sistemului de operare poate prezenta o
problem nu foarte simpl. Unele aplicaii nainteaz cerine stricte,
crora le corespund numai un numr restrns de sisteme. De
exemplu, problemele de dirijare a dispozitivelor industriale i de
cercetare care lucreaz n timp real, ne oblig s alegem ntre SO
specializate i unele sisteme de uz general. Altele, de exemplu
servere bazelor de date, cer asigurarea unei protecii nalte i
productivitii. i, n final, exist asemenea aplicaii, cum sunt
automatizarea lucrului de oficiu al unei organizaii mici, care acord
posibilitatea de a alege fr careva restricii un sistem de operare sau
de a crea unul nou.
ORG
100h
jmp
Start1
ORG
07C00h
Datele din sectorul boot vor fi ncrcate la adresa 0000:7C00, vom
scrie cod pentru aceast adres.
Start:
Start1:
jmp Begin
; EB 3C 90
; Tabel pentru compatibilitate cu DOS
nop
OEMName DB 29h,63h,7Eh,26h,49h,49h,48h,43h
SectSize
DW 00200h
ClustSize
DB 001h
ResSecs
DW 00001h
FatCnt
DB
002h
RootSiz
DW
000E0h
TotSecs
DW
00B40h
Media
DB
0F0h
FatSize
DW
00009h
TrkSecs
DW
00012h
HeadCnt
DW
00002h
HidnSec
DW
00000h
Datele despre dischet pentru compatibilitate cu DOS:
AbsSectNum
AbsHeadNum
Begin:
; Citire nucleu
mov
mov
mov
KernelSEG:100h
mov
nucleului)
nextsect: push
call
DW
DW
0
0
; Ram de ncadrare
ax,KernelSEG
es,ax
di,100h ; Punct de intrare nucleudx,33
dx es di
ReadSect
9
pop
di es dx
add
di,512
inc
dx
cmp
dx,160
jne
nextsect
call
far KernelSEG:0100h
; ReadKey
int
20h
; Citire sector (DX=numr sector)
Citirea unui sector far MS DOS nu este simpl. Numrul absolut
al sectorului trebuie transformat n numrul dispozitivului de citirescriere (DCS), numrul pistei i a sectorului.
; ES:DI unde vom citi
PROC
ReadSect
Push
di es
; nceput calcule sector/pist/DCS
push
cs
pop
ds
mov
cx,[TrkSecs]
mov
si,dx
; tmp=(Sect/Sectors);
movax,si
xor
dx,dx
xzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzxxxc
mov
di,axf
; Sec=Sect-(tmp*Sectors)+1;
mov
ax,di
imul
cx
mo
]]
rxf div cx
10
=]
=dx,si
sub
dx,ax
inc
dx
mov
[AbsSectNum],dx
; Hea=tmp & 1;
mov
ax,diZaz3
\saaaaaaaa3 ecdfwzxgfzfz and
ax,1
mov
[AbsHeadxzz\xd sxNum],ax
; Trk=(Sect-(Hea*Sectors)-(Sec-1))/(Sectors*2);
imul
cx
push
ax
mov
ax,si
pop
dx
sub
ax,dx
mov
dx,[AbsSectNum]
dec
dx
sub
ax,dx
mov
dx,cx
shl
dx,1
push
ax
11
push
dx
xor
dx,dx
pop
bx
pop
ax
div
bx
; AX = AbsTrackNum
; Terminare calcule
mov
cx,ax
mov
al,cl
shr
cx,2
and
cl,0C0h
mov
ch,al
and
cx,0FFC0h
mov
ax,[AbsSectNum] ;-5-4-3-2-1-0-9-8-7-6-5-4-3-21-0or
cl,al
; CX = |c|c|c|c|c|c|c|c|C|c|S|s|s|s|
s|s|
pop
es bx
; ES:BX = Unde vom pune
mov
dx,[AbsHeadNum]
mov
dh,dl
; Numr DCS
mov
dl,0
; Numr disc 0 = A
mov
al,1
; Numr de sectoare citite
mov
ah,2
; Numr funcie
int
13h
ret
ENDP ReadSect
END Start
Procese
Una din concepiile de baz, care servete pentru nelegerea
corect a structurii sistemelor de operare (SO), este concepia
procesului. Acest termen a fost pentru prima dat utilizat n anii 60
de ctre elaboratorii SO MULTIX i se folosete pe larg n teoria SO.
Exist mai multe definiii a termenului proces, dintre care
menionm:
1. Programul ce se execut;
12
15
Memoria
Principal
Lista
proceselor
i
j
Registru de baz
Registru de hotar
Context
Procesul
Date
Alte
registre
b
h
.
.
.
Codul
programei
b
Procesul
Indexul
procesului
Contorul
programului
Registre
procesorului
i
Context
Date
Codul
programei
sunt
Descrierea
O parte din spaiul de adrese al utilizatorului, care permite
introducerea schimbrilor. Aici se conin datele programului,
stiva i codul programului ce se modific.
Programul ce trebuie executat.
De fiecare program sunt legate una sau mai multe stive de
sistem. Stiva se utilizeaz pentru pstrarea parametrilor,
adreselor de apel a procedurilor i serviciilor de sistem
Datele necesare SO pentru dirijarea procesului.
mov
mov
; CX 0000
; DX
mov
; BP 0000
0000
Simulm starea de lucru a lucrrii, adic punem la dispoziia
lucrrii toate registrele, stiva i indicatorii (flags). La comutarea
lucrrii, lucrarea nou va ncepe execuia cu registrele date.
mov
; Stabilim prioritatea
mov
; Stabilim prioritatea
lucrrii
lucrrii
Stabilim prioritatea 1 (normal) a lucrrii i prsim procedura de
ncrcare. Lucrarea nou se va autolansa, atunci cnd i va veni
rndul.
Sarcina lucrrii:
Creai discul de ncrcare a sistemului de operare i nscriei acest
ncrctor n boot sectorul. Dup ncrcarea sistemului de operare s
se afieze pe ecran Sistemul de operare al studentului . . .
Scriei o procedur de ncrcare a unei lucrrii.
ntrebri de control:
1. Ce funcii ndeplinete sistemul de operare?
2. Dai definiia termenului monitorul de ncrcare. Ce funcie
ndeplinete el?
3. Care este diferena dintre monitorul de ncrcare i monitorul de
consol?
4. Ce reprezint bootstrap-ul?
5. Cum se petrece ncrcarea unui sistem de operare?
6. Care sunt avantajele programrii modulare a sistemului de operare?
7. Dai o definiie a termenului proces.
8. Ce prezint blocul de control al procesului?
9. Ce reprezint imaginea procesului?
10. Enumerai atributele procesului.
11. Pentru ce este necesar descriptorul lucrrii? Care este structura lui?
25
Descrierea
Finisarea normal
Depirea timpului
alocat procesului
limit
Volumul
insuficient
de
memorie
Eroare aritmetic
Ateptare excesiv
Eroare de intrare - ieire
Instruciune greit
; ntreruperea 020h
mov
call
call
jmp
dx,[cs:di+3]
FreeMemory
_ei
int08new
30
Cauza
Utilizeaz
Ca rspuns la un eveniment
asincron exterior
Prelucrarea erorii sau a unei
situaii anormale
Apelarea unei funcii a SO
33
Memoria de baz
Limita stivei
Vrful stivei
Baza stivei
Liber
Se utilizeaz
Blocul de memorie
rezervat pentru
stiva
35
PSP
0100H
Programul
FFFEH
Fig.3.2. Structura unui program COM
FFFFH
Stiva
36
2000h: FFF 8h
IP
2000h: FFFAh
2000h: FFFCh
2000h: FFFEh
CS
F
00h
Tratarea ntreruperii
Restabilire
2000h: FFF 8h
IP
Pentru comutarea
lucrrii
este
necesar:
2000h: FFF Ah CS
2000h: FFF Ch F
Salvarea registrelor
2000h:
2000h:
FFFFFF
8h Eh IP00h
2000h: FFFAh
CS
2000h: FFFCh
F
2000h: FFFEh
00h
Tratarea ntreruperii
Restabilire
Comutarea
stivei
3128h: FFF 8h
IP
3128h: FFFAh
3128h: FFFCh
3128h: FFFEh
CS
F
00h
37
38
Eligibil
Dispecerare
Time-out
Producerea
evenimentului
Activizarea
ntrerupt
ntreruperea
Blocat
Activ
Ateptarea unui
eveniment
Eliberarea
memoriei
Finisat
call
mov
mov
mov
call
ret
_di
al,254
[cs:di],al
dx,[cs:di+3]
_ei
cmp
je
mov
mov
47
Descrierea
Se genereaz n urma unor situaii , ce apar ca rezultat
al ndeplinirii comenzilor. De exemplu: mprirea la
zero, ncercarea efecturii unei comenzi incorecte sau
adresrii la un segment de memorie, la care utilizatorul
nu are drept de acces.
Se genereaz de timer-ul sistemului. Aceast
ntrerupere permite SO s-i execute funciile periodic,
peste intervale de timp stabilite.
Se genereaz de controlerul I/O. Semnalizeaz
finalizarea normal a operaiei de I/O sau apariia unor
erori.
Se genereaz ca rezultat al apariiei situaiilor de
incendiu , de exemplu: scderea brusc a intensitii
curentului sau eroarea controlului paritii.
START
Selectarea
urmtoarei
instruciuni
Ciclu de
execuie
interzicerea
ntreruperilor
Executare
a
instruci
unii
permisiunea
ntreruperilor
ciclu
ntreruperilor
Verificarea prezenei
ntreruperilor i
prelucrarea lor
STOP
52
Descriere: returneaz
INT(AL); adic ncarc n
0000:[(AL*4)+2].
; Salvm 08h
mov
mov
int
mov
mov
ds
ax,cs
ds,ax
dx,[kernel]
; adresa
ah,025h
al,008h
021h
ds
; Blocarea
ds
bx,bx
ds,bx
bx,[cs:kernel]
; Adresa procedurii
[ds:0020h],bx
[ds:0022h],cs
ds
; Permitem
kernel
pushf
call
; ntreruperea 008h
[Dword Ptr cs:oldofs08]
di
bx
ax
es
ds
si
[cs:int08],0
; dac comutarea
kernelend
; atunci nu comutm.
si,sp
ax,ss
es,ax
; ES:SI=SS:SP
cs
ds
lea
di,[ds:firsttask]
de nceput a structurii TTASK
mov
al,[ds:numtask]
Numrul lucrrii
xor
ah,ah
Numrul lucrrii
push
dx
mov
dx,515
mul
dx
raport cu nceputul firsttask
pop
dx
add
di,ax
absolut a topului stivei n
; DI = adresa
; AL =
; AX =
; AX = Deplasare n
; DI = Deplasarea
; structura TTASK
mov
[Word Ptr ds:di+5],ss
mov
[Word Ptr ds:di+7],sp
; Lum n consideraie prioritile
dec
[Word Ptr ds:di+9]
cmp
[Word Ptr ds:di+9],0
jne
kernelend
mov
ax,[Word Ptr ds:di+11]
mov
[Word Ptr ds:di+9],ax
kernel_01:
add
di,515
;
SP=DI+515
mov
sp,di
mov
ax,ds
; SS=DS
mov
ss,ax
Acest fragment de cod repartizeaz prioritile pentru prioriti
nalte nu au loc cteva comutri ale lucrrii i lucrarea curent este
executat mai mult timp.
; Salvm restul registrelor n structura TTASK
push
si
; SP
push
es
; SS
push
cx
; CX
push
dx
; DX
56
push
bp
; BP
push
ax
mov
dx,515
mul
dx
add
di,ax
; DI = Deplasarea absolut a
topului stivei n structura TTASK
pop
ax
cmp
[Byte Ptr ds:di],255
je
nexttask
Controlm, dac lucrarea dat este ncrcat. Dac nu trecem la
urmtoarea.
cmp
je
nexttask
; lucrarea
temporar oprit
Controlm, dac lucrarea dat este temporar oprit. Dac da
trecem la urmtoarea.
mov
mov
add
[ds:numtask],al
ax,di
ax,(515-10)
57
mov
sp,ax
urmtoarei lucrri (cea din
; n SP avem stiva
; structura TTASK)
push
pop
ds
ss
; SS:SP=ES:SI
pop
pop
pop
pop
pop
pop
si
ds
es
ax
bx
di
ax
al,20h
20h,al
ax
instruciunea
terminare
58
ENDP
iret
kernel
59
,0
; setai regimul video al monitorului
AL, Numrul regimului video
10h
Rezoluia
ecranului
40 25
40 25
80 25
80 25
80 25
Regimul i numrul
culorilor
Alb negru
Color, 16 culori
Alb-negru
Color, 16 culori
Monocrom
Numrul
paginilor video
07
07
03
03
0-3
Rezoluia ecranului
80 60
132 25
132 43
132 50
132 60
mov
monitorului
mov
int
AH,5
AH,1
;dimensiunea cursorului
CH, Linia de sus al scanrii
; biii 4-0
CL, linia de jos al scanrii
;biii 4-0
10h
AH,2
; poziia cursorului
, Numrul paginii video
DH, Numrul liniei
63
64
5 4
f n
3
br
t
2 1 0
simboluri
Culoarea simbolurilor
Culoarea de fon
Pata de luminozitate (Blink) sau
culoarea aprinsa a simbolurilor
Opiunile planului
exterior (culoarea
simbolurilor)
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
negru
albastru
verde
acvamarin
rou
roz aprins
maro
gri
gri-nchis
albastru-deschis
verde-deschis
acvamarin deschis
rou-deschis
roz deschis
galben
alb
Opiunile fonului
mov ,8
; Citirea simbolului i atributelor lui din
poziia curent a cursorului
mov , Numrul de pagini video
int
10h
La ieire aceast funcie returneaz urmtoarele valori ale registrelor:
atributele simbolului;
L codul ASCII-al simbolului.
mov
,9
mov
mov
mov
cerute
65
mov
int
mov
mov
mov
mov
int
curente
,0h
p
d
ret
Goto00
EndP
; dure Clrscr
N
push
push b
push
push d
mov h,6
; Deplasarea ecranului n sus
;Numrul de linii pentru deplasare: 0 ntregul ecran se umple cu
spaii
mov al,0
mov ,0
; Colul stng de sus (0,0)
; Numrul liniei colului drept de jos: 24 ntreg ecran n regimurile
0-3,7
mov dh,24
; Numrul coloanei colului drept de jos: 79 ntregul ecran n
regimurile 2,3,7
mov dl, 79
; Atributul ecranului: 7 albnegru
Clrscr
68
Clrscr
mov
int
p
p
p
p
ret
EndP
bh,7
10h
d
; dure ErrorOut
; Intrare:
;
lea
, Adresa nceputului liniei n memorie
;
mov , Numrul de simboluri pentru afiare
ErrorOut
69
BIBLIOGRAFIA
1. Barron D.W. Computer Operating Systems, Chapman and
Hall, London, 1971
2. ., , . , ,
1974
3. .., , .
, , 1974
4. ., , . , 2002
70