Professional Documents
Culture Documents
HeDieuHanh - Bài giảng
HeDieuHanh - Bài giảng
HeDieuHanh - Bài giảng
Bi ging
H iu Hnh
60 tit (45 tit l thuyt + 15 tit thc hnh)
(Version 0.11)
Bin son
L Tin Dng
H ni 8-2001
H iu hnh
trang 2/96
L Tin Dng
H iu hnh
trang 3/96
L Tin Dng
H iu hnh
trang 4/96
Description
Unit Price
X Series 230
865861Y
3,475.00
33L3123
33L3125
37L7205
C5647A
L Tin Dng
305.00
641.00
598.00
178.00
1,980.00
7,177.00
H iu hnh
trang 5/96
II. SOFTWARE
P/N
Description
Unit Price
4,349.00
2,899.00
1,120.00
1,107.76
477.25
385.65
823.25
11,161.91
L Tin Dng
H iu hnh
trang 6/96
+ Thi gian truy nhp trc tip: thi gian trc tip truy nhp ti a ch
bt k trong b nh.
+ Thi gian truy nhp tun t: Khi tn ti mt cch t chc lu tr k tip.
B nh thng c phn cp theo tc truy nhp trc tip hay k tip.
B nh c gi l thc hin nu processor c th thc hin cu lnh bt k ghi
trong . c im ca b nh ny l thi gian truy nhp thc hin v truy nhp
tun t l bng nhau. B nh trong bao gi cng l b nh thc hin.
+ Khng gian b nh
+ Gi thnh
- Phn loi b nh
+ B nh trong: C tc truy nhp cao nhng khng gian b nh nh
+ B nh ngoi: C khng gian b nh ln nhng tc truy nhp thp.
Thi gian truy nhp trc tip thng ln hn thi gian truy tun t. Loi
b nh ph bin l b nh a cng, a mm, bng t, a quang.
b. Thi gian processor
Bn thn Processor l ti nguyn quan trng. Ti nguyn thi gian y l
thi gian thc hin cu lnh ch khng phi thi gian ca cuc sng hng ngy.
Processor c dng cho nhiu tin trnh khc nhau do vic phn chia thi
gian s dng processor ca mi tin trnh phi c ti u ho, c bit l khi
chng cn dng chung ti nguyn khc: chng trnh, d liu, thit b vo ra...
Ni cch khc, thi gian processor chnh l mt ti nguyn quan trng ca h
thng.
c. Thit b ngoi vi
- a dng
- S lng ln >>1
- Tc x l << tc processor
Cc thit b tip nhn, lu tr thng tin b nh ngoi trong thi gian di
c gi l thit b ngoi vi. My in, bn phm, mn hnh, chut,
modem, .Trc y cc thit b ny thng c t xa phng t my chnh
nn gi l thit b ngoi vi. Chng cn c tn gi khc l thit b vo ra. Chng
thng c gn vi MTDT thng qua cc thit b trung gian: cc thit b iu
khin.
Ti nguyn c hai loi: Phn chia c v khng phn chia c.
Phn chia c: Cho php nhiu ngi hay chng trnh s dng n mt cch
ng thi. in hnh l b nh(trong v ngoi): c th np nhiu chng trnh
vo b nh trong, hay 1 chng trnh s dng nhiu tp trn a cng.
L Tin Dng
H iu hnh
trang 7/96
H iu hnh
trang 8/96
Cn b lp
trnh h thng
N gi s
d ng
Chng
trnh dch
Cn b k
thut
Ngi lm cng
tc qun l
Son tho vn bn
Qun l
c s d liu
L Tin Dng
H iu hnh
trang 9/96
H iu hnh
trang 10/96
L Tin Dng
H iu hnh
trang 11/96
H iu hnh
trang 12/96
f. Nguyn l bo v nhiu mc
- Chng trnh v d liu phi c bo v nhiu mc bng nhiu kho.
- V d trong Linux
+ Mc 1: Ngi s dng phi c ti khon mi c s dng my tnh.
+ Mc 2: Ch nhng ngi s dng thuc nhm A mi c truy nhp v tp
chung ca nhm A.
L Tin Dng
H iu hnh
trang 13/96
CT ng dng
Giao tip
COMMAND
MSDOS.SYS
Dch v
IO.SYS
Nhn
BIOS
H iu hnh
trang 14/96
H iu hnh
trang 15/96
H iu hnh
trang 16/96
L Tin Dng
H iu hnh
trang 17/96
- i vi cc h thng tnh ton vic gi ngt dng cho vic cc b phn khc
nhau ca h thng tnh ton bo cho processor bit v kt qu thc hin cng
vic ca mnh.
2. Phn loi ngt
C nhiu tiu ch phn loi ngt
- Phn loi theo ngt trong v ngt ngoi
+ Ngt trong l ngt do cc tn hiu ca procesor bo cho processor
+ Ngt ngoi l ngt do cc tnh hiu bn ngoi bo cho processor
- Phn loi theo s s dng
+ Ngt dnh cho HH s dng. Nu thay i x l ngt ny s lm thay i
chc nng ca h thng.
+ Ngt dnh cho ngi s dng
L Tin Dng
H iu hnh
trang 18/96
H iu hnh
trang 19/96
Chc nng
Ngt chia cho 0
Ngt trn s
Ngt thi gian
Ngt bn phm
BM Cng ngh phn mm
H iu hnh
trang 20/96
5
6
7
8
9
10
11
12
10H
19H
20H
21H
25H/26H
27H
33H
67H
- Gii thch
Cho CH = 1, dng u tin ca ma trn hin th con tr
Cho CL = 0, dng cui cng ca ma trn hin th con tr
Nh vy CH < CL v vy con tr khng hin ra mn hnh
- Nhng ngn ng Assembler vo trong mi trng PASCAL
uses crt;
begin
writeln('...');
asm
mov AH,1
mov CX,$0100
end;
readkey;
end.
L Tin Dng
H iu hnh
trang 21/96
Registers = record
case Integer of
0: (AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags: Word);
1: (AL, AH, BL, BH, CL, CH, DL, DH: Byte);
end;
Ch :
+ t cc thng s cho cc thanh ghi trc khi gi th tc.
+ Ly ra cc gi tr tr v qua cc thanh ghi sau khi gi th tc.
- V d:
Dng hm 2AH xem ngy
uses Dos;
var
date, year, month, day: string;
regs: Registers;
begin
regs.ah := $2a; { Hm $2A ly ngy }
msdos(regs);
with regs do
begin
str(cx,year); { Chuyn gi tr t s sang xu }
str(dh,month);
str(dl,day);
end;
date := day+'/'+month+'/'+year;
writeln(' Hom nay la ', date);
end.
Kt qu
Hom nay la 11/8/2001
L Tin Dng
H iu hnh
trang 22/96
14
13
12
11 10 09
OF DF IF
08 07 06 05
TF SF ZF
04 03
AF
02 01
PF
00
CF
H iu hnh
trang 23/96
- Lu tr vector ngt c
S dng th tc
procedure GetIntVec(IntNo: Byte; var Vector: Pointer);
L Tin Dng
H iu hnh
trang 24/96
var i: byte;
begin
password:= '';
{ Password c di bng 3 }
for i:= 1 to 3 do password:=password + readkey;
end;
{To chng trnh con x l ngt vi a ch gi 4 byte}
{$F+}
procedure thay_doi_break; interrupt;
begin
break_flag:=true;
end;
{$F-}
begin
clrscr;
{ lu ngt Ctrl + Break vo vng nh c tr bi p }
getintvec($1B,p);
break_flag:=false;
{ thay i ngt Ctrl + Break }
setintvec($1B,addr(thay_doi_break));
i:=0;
write('Cho biet mat khau:');
while (i<3) and (not break_flag) do begin
pw;
if(password = 'ABC') then begin
setintvec($1B,p);
exit;
end
else begin
i:=i+1;
write(#7#7#7);
end;
end;
inline($EA/$00/$00/$FF/$FF);
{ Lnh JMP FFFF:0000 }
end.
L Tin Dng
H iu hnh
trang 25/96
xor
shl
shr
- V d:
{
not
and
or
xor
shl
shr
}
|
|
|
|
|
|
Bitwise negation|integer
Bitwise and
|integer
Bitwise or
|integer
Bitwise xor
|integer
Shift left
|integer
Shift right
|integer
type
type
type
type
type
type
|integer
|integer
|integer
|integer
|integer
|integer
type
type
type
type
type
type
L Tin Dng
H iu hnh
trang 26/96
A: Word;
begin
writeln;
writeln('-------------');
A := $8FFF;
WriteWord(A);
A := A shl 2;
WriteWord(A);
A := A shr 4;
WriteWord(A);
end;
procedure TestNotAndOrXor;
var
A,B: Word;
begin
writeln;
writeln('-------------');
A:= $1234;
B:= $5678;
WriteWord(A);
WriteWord(B);
WriteWord(NOT A);
WriteWord(A AND B);
WriteWord(A OR B);
WriteWord(A XOR B);
end;
begin
TestShift;
TestNotAndOrXor;
end.
{
Ban Dau : w = 36863 =
Sau quay trai: w = 16380 =
Sau quay phai: w = 1023 =
------------A = 4660 =
B = 22136 =
NOT A = 60875 =
A AND B = 4656 =
A OR B = 22140 =
A XOR B = 17484 =
L Tin Dng
1234
5678
EDCB
1230
567C
444C
=
=
=
=
=
=
0001
0101
1110
0001
0101
0100
0010
0110
1101
0010
0110
0100
0011
0111
1100
0011
0111
0100
0100
1000
1011
0000
1100
1100
H iu hnh
trang 27/96
Hi(x)
- V d:
var
A,B: Word;
A1,A2: Byte;
procedure WriteHexWord(w: Word);
const
hexChars: array [0..$F] of Char =
'0123456789ABCDEF';
begin
Write(hexChars[Hi(w) shr 4],
hexChars[Hi(w) and $F],
hexChars[Lo(w) shr 4],
hexChars[Lo(w) and $F]);
end;
begin
A := $1234; { 4660 }
writeln;
write('A = ', A, ' = $');WriteHexWord(A);
{ function Hi(X): Byte; }
A1 := Hi(A);
{ $12 = 18 }
writeln;
write('A1 = ', A1, ' = $');WriteHexWord(A1);
{ function Lo(X): Byte; }
A2 := Lo(A);
{ $34 = 52 }
writeln;
write('A2 = ', A2, ' = $');WriteHexWord(A2);
writeln;
{ function Swap(X): (Same type as parameter); }
B := Swap(A); { $3412 = 13330 }
write('B = ', B, ' = $');WriteHexWord(B);
end.
- Hm ly a ch on ca mt bin, mt th tc hay mt hm
function Seg(X): Word;
L Tin Dng
H iu hnh
trang 28/96
- Hm ly a ch on ca on m hin thi
function CSeg: Word;
- Hm ly a ch on ca on d liu
function DSeg: Word;
- Hm ly a ch on ca on ngn xp (stack)
function SSeg: Word;
- V d:
{ CSeg, DSeg, SSeg, SPtr, Ofs, and Seg functions.}
{ function Ofs(X): Word; }
procedure WriteHexWord(w: Word);
const
hexChars: array [0..$F] of Char =
'0123456789ABCDEF';
begin
Write(hexChars[Hi(w) shr 4],
hexChars[Hi(w) and $F],
hexChars[Lo(w) shr 4],
hexChars[Lo(w) and $F]);
end;
var
i: Integer;
begin
Write('The current code segment is $');
WriteHexWord(CSeg); Writeln;
Write('The global data segment is $');
WriteHexWord(DSeg); Writeln;
Write('The stack segment is $');
WriteHexWord(SSeg); Writeln;
Write('The stack pointer is at $');
WriteHexWord(SPtr); Writeln;
Write('i is at offset $');
WriteHexWord(Ofs(i));
Write(' in segment $');
WriteHexWord(Seg(i));
end.
L Tin Dng
H iu hnh
{
CSeg
DSeg
SSeg
SPtr
i is
}
trang 29/96
- Hm ly a ch ca mt bin, mt th tc hay mt hm
function Addr(X): pointer;
- V d:
{ function Addr(X): pointer; }
{ function Ptr(Seg, Ofs: Word): Pointer; }
var
P1, P2: ^Byte;
i, j : Byte;
begin
writeln('--------');
i := 1;
P1 := Addr(i);
Writeln('i = ', P1^);
j := i + 1;
P2 := Ptr( seg(j), ofs(j));
Writeln('j = ', P2^);
end.
{
i =
j =
}
1
2
- V d:
{ function SizeOf: Integer; }
{ procedure GetMem(var P: Pointer; Size: Word);}
{ The largest block that can be safely allocated
on the heap at one time is 65,528 bytes (64K-$8). }
{ procedure FreeMem(var P: Pointer; Size: Word); }
type
NhanVien = record
L Tin Dng
H iu hnh
trang 30/96
Ten: string[40]; { 40 + 1 di k t }
DiaChi: string[40]; { 40 + 1 di k t }
DienThoai: string[20]; { 20 + 1 di k t }
Tuoi: byte; { 1 }
GioiTinh: boolean; { 1 }
end;
var
P: ^NhanVien;
begin
GetMem(P, SizeOf(NhanVien));
Writeln ('Kich thuoc bg la ', SizeOf(NhanVien), ' bytes.');
FreeMem (P, SizeOf(NhanVien));
end.
{ Kich thuoc cua ban ghi la 105 bytes.}
- V d:
{ procedure Move(var Source, Dest; Count: Word);
Copies bytes from source to dest. }
procedure WriteHexWord(w: Word);
const
hexChars: array [0..$F] of Char =
'0123456789ABCDEF';
begin
Write(hexChars[Hi(w) shr 4],
hexChars[Hi(w) and $F],
hexChars[Lo(w) shr 4],
hexChars[Lo(w) and $F]);
end;
var
A: array[1..2] of Byte;
B: Word;
i: Byte;
begin
for i := 1 to 2 do A[i] := i;
{ A[1] = 1; A[2] = 2; => A = $0201 }
Move(A, B, SizeOf(A));
{ B = 513 = $0201; }
writeln;
write('B = ', B);
write(' = '); WriteHexWord(B);
end.
H iu hnh
trang 31/96
L Tin Dng
H iu hnh
trang 32/96
L Tin Dng
H iu hnh
trang 33/96
Device Controller 1
Device Controller 2
DCn
IO Device 1
IO Device 2
IO Device m
b. Knh
Mt thit b iu khin v cc thit b ngoi vi do n iu khin to thnh
mt h thng hot ng c lp gi l knh. Mt my tnh c th c nhiu knh,
cc knh ny phi c kh nng lin h vi processor.
- Knh n v knh b:
Nu thit b iu khin lm vic trc tip vi thit b vo ra ta c knh
n.
Knh b c knh c nhiu knh n, tc l thit b iu khin li iu
khin cc thit b iu khin khc.
Device Controller
TBK 1
IO Device 11
TBK 2
IO Device
IO Device 21
IO Device 12
L Tin Dng
H iu hnh
trang 34/96
- Trao i vo ra vi knh
thc hin mt php trao i vo ra mt knh no th processor
phi to ra chng trnh trn ngn ng ca thit b iu khin (cn gi l chng
trnh knh). Tip theo processor chuyn giao chng trnh knh cng vi d liu
cn thit cho knh. Sau processor tip tc thc hin cng vic ca mnh.
Nh vy cc cng vic ca knh c thc hin song song vi cng vic
ca processor iu ny lm tng tc chung ca c h thng.
Khi knh thc hin xong cng vic ca mnh knh s bo v cho processor
di dng ngt vo/ra cng vi m kt qu thc hin cng vic (return code). Tn
hiu ngt c th c x l ngay lp tc hay phi ch i hoc thm ch b hu
b nu processor thy khng cn thit. M kt qu bao gi cng c lu tr
ch processor x l.
Khi processor dng cng vic ca mnh nh gi cng vic thc hin
ca knh (tn hiu ngt c x l), processor s ly m tr v t knh. Nu m
cho bit knh thc hin tt p th processor c th giao tip cng vic mi cho
knh (nu cn). Ngc li, processor c th yu cu knh thc hin li cng
vic. Nu sau n ln (ph thuc vo tng h iu hnh) vn khng c ta mi
nhn c thng bo li.
Ngn ng knh c th c a vo h thng khi np h iu hnh hoc
c th c cung cp cho processor ngay khi h thng hot ng.
i vi MSDOS gii quyt bng cc a cc cu lnh iu khin thit b
trong CONFIG.SYS hoc thc hin cc chng trnh cung cp ngn ng knh
trong khi h iu hnh ang lm vic.
- V d
i vi thit b ngoi vi chut
+ Ta c th a vo tp config.sys cu lnh
Device = C:\mouse\mouse.sys
H iu hnh
trang 35/96
Reset(f)
Buffer
Read(f,a)
a
H iu hnh
trang 36/96
System
a
- u im:
+ n gin
+ C h s song song cao v tc gii phng vng m ln
+ C tnh cht vn nng, thch ng vi mi phng php truy nhp
- Nhc im
+ Tn b nh
+ Tn thi gian trao i thng tin trong b nh
L Tin Dng
H iu hnh
trang 37/96
b. Phng m x l
Thng tin c x l ngay trong phng m khng ghi li vo ni khc
trong b nh. Ch th c xc nh a ch thng tin ch khng cung cp thng
tin ch khng cung cp gi tr.
Buffer
System
a ch a
- u im:
+ Tit kim b nh
+ Khng mt thi gian chuyn thng tin b nh trong, thch hp khi cn
kch thc bn ghi d liu ln.
- Nhc im
+ Tnh vn nng khng cao
+ H s song song thp
c. Phng m vng trn
Phng m vng trn thng c ba phng m
Ghi
X l
L Tin Dng
H iu hnh
trang 38/96
L Tin Dng
H iu hnh
trang 39/96
4. Qun l mn hnh
a. Gii thiu
Cc thnh phn ca thit b mn hnh. Trong my IBM PC, thit b mn
hnh gm c hai thnh phn:
1. Card mn hnh (display adapter)
2. Mn hnh hin th, cn gi tt l mn hnh (monitor)
Card mn hnh ni my tnh vi mn hnh thng qua mt chip l b iu
khin (Cathode Ray Tube Controller). Card mn hnh c cc cng vo/ra lp
trnh c, vng nh ( to) k t ROM v b nh mn hnh RAM cha thng
tin cn a ra mn hnh hin th.
Cc cng vo ra ca mn hnh:
Cng
M t
M t thm
2c0-2df EGA #2
EGA I/O Ports
3b0-3df Video Graphics Array (VGA)
VGA I/O Ports
3c0-3cf Enhanced Graphics Adapter (EGA) #1
EGA I/O Ports
3d0-3df Color/Graphics Adapter (CGA) and EGA CGA I/O Ports
b. B nh mn hnh
B nh mn hnh v mt logic c coi nh mt phn ca b nh nm v
tr A0000-BFFFF l ni lu tr thng tin hin th cho mn hnh c ch
ho v ch vn bn.
- Vi mn hnh VGA (c s dng phn ln hin nay), b nh mn hnh vn
bn bt u t v tr B8000-BFFFF (di 8000H). Trong ch ny mi k t
trn mn hnh tng ng vi 2 byte trong b nh.
+ Byte u tin s lu tr m ASCII ca k t
+ Byte tip theo lu tr thuc tnh ca k t
7
6
5
4
3
2
1
0
Blink Red Green Blue Intensity Red Green Blue
Mu nn
Mu k t
H iu hnh
trang 40/96
Fgb = 1 : mu nn c t sng
- Bng mu
Do ba bt kiu R,G,B to thnh cc mu
S th t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dng Hex
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
0aH
0bH
0cH
0dH
0eH
0fH
Mu
black
blue
green
cyan
red
magenta
brown
white
gray
bright blue
bright green
bright cyan
bright red
bright magenta
yellow
bright white
i vi mu nn ch c th c cc mu t 1 8 tc l n mu c m l
7H (White).
- Hin th mt k t
K t c v tr (y,x) tnh t (0,0) n (79,24) trn mn hnh th v tr ca n
trong b nh l
x
(y,x)
H iu hnh
trang 41/96
L Tin Dng
H iu hnh
trang 42/96
+ V d:
uses crt, dos;
var
r: Registers;
begin
r.ah := $02; { ham dat vi tri con tro }
r.bh := 0; { trang 0 }
r.dh := 10; { dong 10 }
r.dl := 40; { cot 40 }
intr($10,r);
readkey;
end.
H iu hnh
trang 43/96
+ Input:
AH = 03H
BH = video page (0-based)
+ Output:
DH,DL = current row,column of cursor
CH,CL = current start,end line of cursor
+ V d:
uses crt, dos;
var
r: Registers;
begin
clrscr;
r.ah := $02; { ham dat vi tri con tro }
r.bh := 0; { trang 0 }
r.dh := 10; { dong 10 }
r.dl := 40; { cot 40 }
intr($10,r);
r.ah := $02;
r.bh := 0;
intr($10,r);
write('x');
writeln;
writeln('vi tri hien thoi cua con tro la (',
r.dh,' , ', r.dl, ')');
writeln('start line = ', r.ch, ', end line = ', r.cl);
readkey;
end.
+ V d:
uses crt, dos;
var
r: Registers;
i,j: byte;
begin
L Tin Dng
H iu hnh
trang 44/96
clrscr;
for i := 1 to 9 do
for j := 1 to 80 do
write('.');
for i := 10 to 25 do
for j := 1 to 80 do
write('!');
r.ah := $06; { ham cuon trong cua so }
r.al := 10;
r.ch := 6; { dong 6 goc trai}
r.cl := 20; { cot 20 goc trai}
r.dh := 20; { dong 20 goc phai}
r.dl := 60; { dong 60 goc phai }
r.bh := $40; {mu nn=mu xem thm thuc tnh kt)
intr($10,r);
readkey;
end.
H iu hnh
trang 45/96
- Li gii
uses crt,dos;
type
MH = Array[0..4000] of Byte;
var
A: MH absolute $B800:$0000;
f: file of MH;
begin
clrscr;
writeln('Xin chao cac ban da den voi mon HDH');
writeln('Ban khoe chu');
assign(f,'mh.hex');
rewrite(f);
write(f,A); { dua bo nho man hinh ra tep }
close(f);
while keypressed do readkey; readkey;
clrscr;
writeln('Bam mot phim bat ky');
while keypressed do readkey; readkey;
reset(f);
read(f,A); { dua tu tep ra bo nho man hinh }
while keypressed do readkey; readkey;
close(f);
end.
L Tin Dng
H iu hnh
trang 46/96
5. Qun l bn phm
a. Gii thiu
Bn phm c iu khin thng qua 1 b iu khin bn phm l b Vi
X L 8048 (i vi PC chun) hoc 8042 (i vi my AT). Mi khi c s kin
bm hoc nh phm th b iu khin ny c nhim v bo cho ROM-BIOS bit
x l. Nu mt phm c bm lu th b iu khin lp li phm ny sau
nhng khong xc nh. Mi ln bm th cc vi mch ca bn phm to ra mt s
1 byte gi l m qut (scan code) c trng cho phm tng ng. Bn phm to ra
mt m scan khc khi mt phm c nh.
C th: Khi bm mt phm, bn phm to ra mt m scan, khi nh phm
bn phm to ra mt m scan khc bng m scan lc bm cng thm 128 (cho bt
7 ca m scan lc bm bng 1).
|
Keyboard Scan Codes
|
|------------------------------------------------------------------------------|
|Hex Dec Key |Hex Dec Key |Hex Dec Key
|Hex Dec Key
|Hex Dec Key
|
|------------+-------------+---------------+----------------+------------------|
|01
1 Esc |12 18 E
|23 35 H
|34 52 . >
|45 69 NumLock
|
|02
2 1 ! |13 19 R
|24 36 J
|35 53 / ?
|46 70 ScrollLock|
|03
3 2 @ |14 20 T
|25 37 K
|36 54 Shft(Rt)|47 71 Home [7] |
|04
4 3 # |15 21 Y
|26 38 L
|37 55 * PrtSc |48 72 Up
[8] |
|05
5 4 $ |16 22 U
|27 39 ; :
|38 56 Alt
|49 73 PgUp [9] |
|06
6 5 % |17 23 I
|28 40 " '
|39 57 spacebar|4a 74 K |
|07
7 6 ^ |18 24 O
|29 41 ` ~
|3a 58 CapsLock|4b 75 Left [4] |
|08
8 7 & |19 25 P
|2a 42 Shft(L)|3b 59 F1
|4c 76
[5] |
|09
9 8 * |1a 26 [ { |2b 43 \ |
|3c 60 F2
|4d 77 Right[6] |
|0a 10 9 ( |1b 27 ] } |2c 44 Z
|3d 61 F3
|4e 78 K +
|
|0b 11 0 ) |1c 28 Enter|2d 45 X
|3e 62 F4
|4f 79 End [1] |
|0c 12 - _ |1d 29 Ctrl |2e 46 C
|3f 63 F5
|50 80 Down [2] |
|0d 13 + = |1e 30 A
|2f 47 V
|40 64 F6
|51 81 PgDn [3] |
|0e 14 bksp|1f 31 S
|30 48 B
|41 65 F7
|52 82 Ins [0] |
|0f 15 Tab |20 32 D
|31 49 N
|42 66 F8
|53 83 Del [.] |
|10 16 Q
|21 33 F
|32 50 M
|43 67 F9
|
|
|11 17 W
|22 34 G
|33 51 , <
|44 68 F10
|
|
|------------------------------------------------------------------------------|
H iu hnh
trang 47/96
L Tin Dng
H iu hnh
trang 48/96
{ m scan ca k t }
ch2 := Mem[$0040 : (head + 1)];
write('Ky tu ''', chr(ch1), ''' co ma ascii = ', ch1);
write(' va ma scan = ', ch2);
writeln;
head := tail; { thay cho lnh readkey; }
until (ch1 = 13); { cho n khi gp phm Enter }
end.
c. Chuyn i cc m scan
Khi ROM-BIOS nhn c m scan qua cng 60H th n s tin hnh
chuyn sang m 2 byte. Trong qu trnh chuyn i ROM-BIOS lun kim tra
trng thi cc phm SHIFT, CTRL, ALT v cc phm Capslock, Numlock tr
kt qun ng. Trng thi cc phm c bit ny c ROM-BIOS lu trong 2
byte nm ti a ch $0040:$0017 (hay 0417) v $0040:$0018 (hay 0418).
ROM-BIOS cng kim tra 1 s t hp phm c bit c tc dng nh l cc lnh
yu cu ROM-BIOS thc hin mt cng vic no . V d nh Ctrl Alt
Del yu cu khi ng li my.
L Tin Dng
H iu hnh
trang 49/96
L Tin Dng
H iu hnh
trang 50/96
end.
+ Output:
AL = ASCII { bng 0 cho cc phm c bit }
AH = Scan Code
+ Output:
ZF = ZR = 1: Nu khng c k t no
ZF = NZ = 0: Nu trong b m c k t
15
Thanh ghi c
14 13 12 11 10 09
OF DF IF
08 07 06 05
TF SF ZF
04 03
AF
02 01
PF
00
CF
L Tin Dng
H iu hnh
trang 51/96
+ Trc khi gi li chng trnh x l ngt trn phi khi phc li thanh ghi
c bng lnh PushF (push flags) hay c m my l $9C.
- V d: chng trnh c m scan bn phm
uses dos,crt;
var
kb: procedure;
ch: char;
{$F+}
procedure keyclick; interrupt;
begin
if (Port[$60] < $80) then writeln('Scan = ',Port[$60]);
{ chi lay ma scan khi bam phim, khong lay ma nha phimm }
inline($9C); { PushF push flags }
kb; { gi li th tc x l ngt c }
end;
{$F-}
begin
getintvec($9,@kb);
setintvec($9,addr(keyclick));
repeat ch := readkey;
until ch = #27;
setintvec($9,@kb);
end.
dos,crt;
procedure;
char;
byte;
L Tin Dng
H iu hnh
trang 52/96
- Bi tp: Trong lc thc hin cng vic gii phng trnh bc 2 (c th trong
lc nhp d liu) lc ngi s dng bm ESC th thot khi chng trnh. Bit
m ASCII ca ESC = 27 = 1Bh v m scan = 1. Gi s th tc gii phng
trnh bc 2 Giai_PTB2 c sn.
L Tin Dng
H iu hnh
trang 53/96
uses dos,crt;
var
kb: procedure;
ch: char;
function check : boolean;
var
tail: Word absolute $0040:$001C;
x: word;
begin
{ b nh bn phm t 0040:001E - 0040:003D }
x := tail - 2;
if (x < $001E) then x := $003C;
if (Mem[$0040 : x] = $1B) AND
(Mem[$0040 : (x + 1) ] = $01) then
check := true
else
check := false;
end;
{$F+}
procedure keyclick; interrupt;
begin
inline($9C); { PushF push flags }
kb;
if(check) then
begin
writeln('Ban da bam Esc');
setintvec($9,@kb);
halt;
end;
end;
{$F-}
begin
getintvec($9,@kb);
setintvec($9,addr(keyclick));
writeln('Chuong trinh bat phim');
writeln('Bam Enter hoac ESC de thoat');
repeat ch := readkey;
writeln('Bam Enter hoac ESC de thoat');
until ch = #13;
writeln('Ban da bam Enter');
setintvec($9,@kb);
end.
L Tin Dng
H iu hnh
trang 54/96
6. Qun l tp
a. Cc khi nim
- Tp: C hai c trng ca tp
+ Lu tr d liu b nh ngoi: Tn ti cho ti khi ngi s dng xo khi
b nh ngoi. Khng b mt d liu khi tt my tnh.
+ C nhiu ngi s dng: (nhu cu chia s tp)
Tp thc hin: Nhiu ngi cng mun dng mt ng dng no
Tp ca nhn h iu hnh:
Tp vn bn: text, nh, m thanh
Th mc: gm nhiu tp
- Tp gm c Tn tp v phn m rng (khng bt buc)
+ Ngi s dng c th hiu c
+ Phn m rng cho tp dng
Nhm cc tp cng kiu theo mt quy c
Tp ca h iu hnh
+ Biu tng cng l thnh phn ca phn m rng gip ngi s dng qun
l tt hn
- Thuc tnh ca tp
+ Ngi s hu, nhm s hu
+ Thuc tnh n, h thng, lu tr(archive), ch c
+ Thi gian ln truy nhp cui cng, thi giansa i cui cng
+ Quyn iu khin, mt khu
+ Kch thc hin ti, kch thc ti a
+ Cc ng dng c lin kt, vn hnh (operation)
- T chc tp
+ T chc tun t theo byte: d liu c t chc lu tr, c v ghi mt
cch tun t tng byte. Cch t chc ny c tnh vn nng, mi ng dng
u c th s dng tp.
+ T chc tun t theo bn ghi: d liu c t chc lu tr, c v ghi mt
cch tun t tng bn ghi vi kch thc c nh.
+ T chc cy cc bn ghi: d liu c t chc lu tr, c v ghi theo cy
cc bn ghi theo trng kho.
L Tin Dng
H iu hnh
trang 55/96
- Truy nhp tp
+ Truy nhp tun t: Vic c / ghi theo th t t u tp n cui tp
+ Truy nhp ngu nhin: C th truy nhp tun t hoc c / ghi theo bt k
trnh t no.
- Kiu tp
+ Tp thng thng: Gm cc tp text (dng ASCII) v tp nh phn dng
lu tr d liu.
+ Th mc: Cha mt tp cc tp
+ Tp c bit: c truy nhp bi thit b
- Cc thao tc vi tp
+ To tp
+ Xo tp
+ M tp
+ ng tp
+ c tp
+ Ghi d liu (c th ghi ln d liu c)
+ M rng (ghi d liu vo cui tp, khng lm mt d liu c)
+ Di chuyn con tr c/ghi d liu
+ c/Thit lp thuc tnh tp
+ i tn tp
- Cu trc th mc
+ Th mc gc: Dos (C:\), Unix (/)
+ ng dn
L Tin Dng
H iu hnh
trang 56/96
Dng ch ra ni lu tr tp
ng dn tuyt i: ch ra tp t th mc gc
v d: C:\TP\Bin\Turbo.exe
ng dn tng i: ch ra tp t th mc hin ti
V d: lnh DIR ..\BGI (nu ang trong C:\TP\Bin)
b. Trao i d liu vi tp
H Qun tr CSDL
Ngi
s
dng
c th
-Giao din tt
-Khng nn
Truy nhp vt l
c th
- nn cao
-C tnh cht
vn nng
-Tn ti cc
macro
Thit b ngoi vi
L Tin Dng
H iu hnh
trang 57/96
H iu hnh
trang 58/96
b. phc v c/ghi a
Ta s dng ngt 13H c/ghi a
- c mt Sector: Ta s dng ngt 13h, hm 02h
+ Input:
DL = S hiu a (0 = A...; 80H = HD0; 81H = HD1)
DH = S hiu u t
CH = track (cylinder) number (0 n)
CL = S hiu sector (1 n)
AL = S sector cn c
ES:BX => a ch vng nh
Ch : Gi tr Sector gm 6 bit v Cylinder l 10bit:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Cylinder
Sector
Th tc m ho Cylinder v Sector
Function CylSecEncode(Cylinder, Sector : Word) : Word;
Begin
CylSecEncode := (Lo(Cylinder) shl 8)
or (Hi(Cylinder) shl 6) or Sector;
End;
+ Output:
Nu c li: Carry Flag=CY=1 v m li trong AH
Nu khng li: AH = 0 v ES:BX => a ch vng nh
+--------------------------------------------------------------------------------+
|Err# | Description
|
|_____|__________________________________________________________________________|
| 00H | no error on last operation
|
| 01H | bad command: invalid request to controller
|
| 02H | bad address mark
|
| 03H | write protect: attempted to write on write-protected diskette
|
L Tin Dng
H iu hnh
trang 59/96
- Bng m li
Gi tr
ngha
00
Thnh cng
01
Lnh khng hp l
02
Khng tm thy du a ch trn a.
03
Mun ghi ln a c bo v chng ghi (M)
04
Khng tm thy sector
05
Ti lp khng c (C)
06
a mm ly ra (M)
07
Bng tham s b hng (C)
08
DMA chy li (M)
09
DMA ngoi phm vi 46 K
0A
C sector b li
10
CRC hay ECC li
11
ECC iu chnh d liu sai (C)
20
Li do b iu khin a.
40
Li khng tm c track
80
Li ht thi gian
AA
a khng sn sng (C)
BB
Li khng xc nh (C)
CC
Li lc ghi (C)
E0
Li thanh ghi trng thi (C)
FF
Thao tc d tht bi
(C = ch dng cho a cng; M = ch dng cho a mm)
- Th tc c mt sector
L Tin Dng
H iu hnh
trang 60/96
L Tin Dng
H iu hnh
trang 61/96
+ Phn 2: cha chng trnh mi (Boot Strap Loader), cn thit cho a khi
ng
Tham s
Chng trnh mi
55AA
Phn ny c du hiu l ch k gm 2 byte 55AA.
- Cu trc c th nh sau:
No
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Offset
0
3
B
D
E
10
11
13
15
16
18
1A
1C
20
24
25
26
27
2B
36
3Eh
1Feh
L Tin Dng
Leng
3
8
2
1
2
1
2
1
1
2
2
2
4
4
1
1
1
4
1110
8
448
2
ngha
JMP
Tn h thng format a t
S byte trn mt sector
S sector / cluster
Ghi a ch ca FAT th nht trong a logic
S lng bng FAT
S phn t ti a th mc gc
= 0; <> 0 : Ghi s lng sector ca a t nu < 32 MB
Byte Media: F8 nu l HD, F0: FDD 1.44
S sector dnh cho mt bng FAT
S sector dnh cho mt Track
S u t
Ghi a ch tuyt i ca Boot Sector trong a vt l
= 0; <> 0 : tng s sector ca a >= 32 MB
a ch vt l a t A: 00H, C: 80H, D: 81H
D tr
Du hiu 29H
Ghi s hiu ca a t
Tn a t
D tr: FAT1632 32 32 (32 l du cch)
on m thc hin
Ch k (55h AAh)
H iu hnh
trang 62/96
- V d:
00:
00
EB
10:
02
20:
2
FAT
41
30:
20
01
02
3C
90
JMP
00
02
512
Root
Dir
0C
34
03
4D
04
53
00
00
00
80
3411009
C:
20
20 20 20
Tn a t (rng)
05
06
07 08 09 0A 0B
0C
0D
0E
0F
57
49
4E 34 2E 31 00
02
40
01
00
M S W I N 4 . 1
512
64
/c FAT
F8
D1
00 3F 00 40 00
3F
00
00
00
209
63
Sec/
Sec/
64
63 hidden sectors
FAT
Track
Head
(/c Boot Sector)
HD
00
29
1E 13 DA 13 20
20
20
20
20
ch
k
Serial Number
Tn a t (rng)
20
46
41 54 31 36 20
20
20
FAT16
OEM ID
MSWIN4.1
Bytes per sector
512
Sectors per cluster
64
Reserved sectors at beginning
1
FAT Copies
2
Root directory entries
512
Total sectors on disk
(Unused)
Media descriptor byte
F8 Hex
Sectors per FAT
209
Sectors per track
63
Sides
64
Special hidden sectors
63: Boot Sector nm (0,1,1)
Big total number of sectors
3411009
Physical drive number
128
Extended Boot Record Signature
29 Hex
Volume Serial Number
13DA131E Hex
Volume Label
(rng)
File System ID
FAT16
L Tin Dng
H iu hnh
trang 63/96
+ M ngun
uses crt,dos;
const hexs: array[0..15] of char = '0123456789ABCDEF';
Type SectorType = array[0..511] of byte;
function ReadSector(var buf: SectorType;
Drive, Cylinder, Head, Sector: Byte) : Boolean;
begin
end;
var
buf: SectorType;
i,j: word;
Begin
clrscr;
ReadSector(buf,$80,0,1,1); { Boot Sector }
Writeln('Thong tin ve Boot Sector');
Write('Ten HDH : ');
for i := $03 to ($03 + 7) do write(chr(buf[i])); Writeln;
Write('So byte / sector : ', buf[$0B] + buf[$0C]*256);
Writeln;
Write('So sector / cluster : ', buf[$0D]); Writeln;
Write('So bang Fat : ', buf[$10]); Writeln;
Write('So phan tu toi da o thu muc goc : ', buf[$11] +
buf[$12]*256); Writeln;
Write('So byte / Fat : ', buf[$16] + buf[$17]*256); Writeln;
Write('So sector / cylinder : ', buf[$18] + buf[$19]*256);
Writeln;
Write('So head : ', buf[$1A] + buf[$1B]*256); Writeln;
readkey;
end.
L Tin Dng
H iu hnh
trang 64/96
d. Th mc gc (Directory)
- Th mc c hai loi:
+ Th mc gc (Root): l thnh phn thit yu mi h iu hnh.
+ Th mc con (SubDirectory)
Th mc bao gm cc phn t, mi phn t nu c s dng s tng
ng vi mt tp trong th mc.
Trong MSDOS th mi phn t gm 32 byte c chia thnh 8 trng
- Cu trc mt phn t trong th mc (32 byte)
No
1
2
3
4
5
6
7
8
Offset
0
8
B
C
16H
18
1A
1C
Leng
8
3
1
1010
2
2
2
4
ngha
Tn tp (nu nh 8 k t th ly k t <space> in vo)
Phn m rng
Thuc tnh tp attribute
D tr
Thi gian (Gi, Pht, Giy) to/cp nht cui cng
Ngy (Nm, Thng, Ngy) to/cp nht cui cng
Starting Cluster: ghi cluster u tin ca tp
Kch thc tp (tnh theo byte)
+------------------------------------------------------------------------------+
|
Directory Entry Layout
|
|------------------------------------------------------------------------------|
|Offset Size Contents
|
|______ ____ __________________________________________________________________|
|
+-------------------------------+
|
| +0
8 |'F' 'I' 'L' 'E' 'N' 'A' 'M' 'E'| left-justified, blank-padded
|
|
+-----------+-------------------+
|
| +8
3 |'E' 'X' 'T'|
left-justified, blank-padded
|
|
+---+---+---+
|
|+0bH
1 |atr|
file attribute
|
|
+------------ - - ----+
|
|+0cH
0aH |
reserved
|
|
|
+-------+---- - - ----+
|
|+16H
2 | time |
time created or last modified in filetime format|
|
+-------|
|
|+18H
2 | date |
date created or last modified in filetime format|
|
+----------------+
|
|+1aH
2 |Starting Cluster|
ghi cluster u tin ca tp (link into FAT) |
|
+----------------+
|
|+1cH
4 |
file size
|
file size in bytes
|
|
+---------------+
|
+------------------------------------------------------------------------------+
L Tin Dng
H iu hnh
trang 65/96
Trong
- Byte s 0 ng vai tr c bit nh sau:
00: phn t ny cha c s dng
0E: phn t ny c s dng nh b xo
2E20 (.<space>): phn t th nht ca th mc con
2E2E (..): phn t th hai ca th mc con
+ V d
0
0
1
Arc
1
Sys
1
Hid
1
R/O (Read Only)
H iu hnh
trang 66/96
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Gi
Pht
Giy (bc 2)
S nm k t nm 1980
Thng
Ngy
+------------------------------------------------------------------------------+
|
File Time/Date Format
|
|------------------------------------------------------------------------------|
|
|
| 1 1 1 1 1 1
Load word at DIR_ENTRY+16H into a
|
|+5-4-3-2-1-0-9-8-7-6-5-4-3-2-1-0+ 16-bit register and perform mask
|
||
hour | minute
| sec/2 | and shift operations to extract
|
|+-------------------------------+ components of the file time.
|
| +-------+ +---------+ +-------+
|
|
|
|
5+---> 2-second increments (0-30 valid) (t & 001fH)|
|
|
6+--------------> minute (0-59 valid)
((t & 07e0H) >> 5)|
|
5+-------------------------> hour (0-23 valid)
((t & 0f800H) >> 11)|
|
|
| 1 1 1 1 1 1
|
|+5-4-3-2-1-0-9-8-7-6-5-4-3-2-1-0+
|
||
year
| month |
day
| Use word at DIR_ENTRY+18H. After 16-bit
|
|+-------------------------------+ masks and shifts, add 1980 (07bcH) to year.|
| +-----------+ +-----+ +-------+
|
|
|
|
5+---> day (0-31)
(d & 001fH)|
|
|
4+------------> month (1-12 valid)
((d & 01e0H) >> 5)|
|
7+-----------------------> year (0-127 valid)
((d & f800H) >> 9)|
|
=> t 1980 n 2107
|
+------------------------------------------------------------------------------+
L Tin Dng
H iu hnh
trang 67/96
elmt = record
filename: array[0..7] of char;
ext: array[0..2] of char;
attb: byte;
reserved: array[0..9] of byte;
Dt: longint;
firstCluster: word;
size: longint;
end;
procedure show(e: elmt);
var
i: byte;
t: DateTime;
begin
if(e.firstCluster <> 0) then
L Tin Dng
H iu hnh
trang 68/96
fillchar(buf,sizeof(buf),$11);
with r do begin
dl := Drive; dh := Head;
cx := CylSecEncode(Cylinder, Sector);
al := 14; { so sector = 14 vi 224 * 32 = 14 * 512}
ah := 2; { doc o dia }
bx := ofs(buf); es := seg(buf);
end;
intr($13,r);
if(r.ah <> 0) then ReadSector := false
else ReadSector := true;
end;
var
t: Datetime;
buf: RootType;
i,j: word;
{
DateTime = record
Year,Month,Day,Hour,Min,Sec: Word;
end;
}
begin
clrscr;
writeln('Cho dia A:'); readln;
ReadSector(buf,0,0,1,2);
while(buf[i].filename[0] <> #0) do
begin
show(buf[i]);
i := i + 1;
end;
readkey;
end.
+ Kt qu:
Cho dia A:
A
FUZZY
TMP
L Tin Dng
.TXT
.TXT
.VN
21/ 9/2001
19/ 6/2001
6/ 1/2001
8:46:18
16:37:38
17: 5:20
16
2444
34
H iu hnh
trang 69/96
L Tin Dng
H iu hnh
trang 70/96
F8 FF FF 7F 15 01 FF FF 17 00 FF FF FF FF B6 00
277
<EOF>
<EOF> <EOF>
8
9
10
11
12
13
14
15
25 00 2C 00 14 17 FF FF FF FF FF FF FF FF FF FF
37
44
5908
<EOF> <EOF> <EOF> <EOF> <EOF>
H iu hnh
trang 71/96
+ V d: ghi 2 phn t
2n
: 123h => 0123 => o => 2301
2n + 1: 456h => 4560 => o => 6045
ghi vo a 236145
+ V d: c 2 phn t
c 3 byte, ta c 123456
2n
: 1234 => o => 3412 => AND 0FFF => 412
2n + 1: 3456 => o => 5634 => AND FFF0 => 563
False
odd(i)
a := a shr 4
a := a AND $0FFF
Byte1
B
Byte2
Byte3
A
B
C
Entry th nht
D
E
F
Entry th hai
- V d:
Gi tr cc byte ca 50 phn t u tin ca Fat 12 l
F0
09
11
19
21
29
31
FF
A0
20
A0
20
A0
20
L Tin Dng
FF
00
01
01
02
02
03
03
0B
13
1B
23
2B
40
C0
40
C0
40
C0
00
00
01
01
02
02
05
0D
15
1D
25
2D
60
E0
60
E0
60
E0
00
00
01
01
02
02
07
0F
17
1F
27
2F
80
00
80
00
80
00
00
01
01
02
02
03
H iu hnh
trang 72/96
Fat 12 h 16
FF0
009
011
019
021
029
031
FFF
00A
012
01A
022
02A
032
003
00B
013
01B
023
02B
004
00C
014
01C
024
02C
005
00D
015
01D
025
02D
006
00E
016
01E
026
02E
007
00F
017
01F
027
02F
008
010
018
020
028
030
L Tin Dng
H iu hnh
trang 73/96
k1 := buf[i] shr 4;
k2 := buf[i] and $0F;
write(hexs[k1]:3, hexs[k2]);
end;
writeln;
writeln('Fat 12 o he 16');
for i:=0 to 49 do
begin
if(i mod 8 = 0) then writeln; { 8 * 3/2= 12 }
p := i*3 div 2;
a := MemW[seg(buf[p]) : ofs(buf[p])];
if odd(i) then a := a shr 4
else a := a and $0FFF;
k1 := a shr 8;
k2 := (a and $00F0) shr 4;
k3 := a and $000F;
write(hexs[k1]:3,hexs[k2],hexs[k3]);
end;
readkey;
end.
L Tin Dng
H iu hnh
trang 74/96
f. Master Boot
L sector u tin ca a cng (cylinder 0, head 0, sector 1) v c np
vo b nh ti 0000: 7000 thc hin.
- Cu trc Master Boot
+ Phn 1: Chng trnh nhn bit cu trc
+ Phn 2: Bng phn chng (Partition Table)
Chng trnh nhn bit cu trc
Bng phn chng
55AA
Phn ny c du hiu l ch k gm 2 byte 55AA.
a cng c chia thnh cc phn, mi phn c s dng nh mt a
t c lp gi l a logic. Thng tin v cc phn ny nm trong bng phn
chng.
- Cu trc bng phn chng: bng phn chng c bt u t a ch 1BE
gm 4 phn t mi phn t 16 byte.
+------------------------------------------------------------------------------+
|Offset Size Contents
|
|______ ____ __________________________________________________________________|
|
+---- - - - - - - - - - - - - - - - - - - - - - - - - - ----+
|
| +0
1beH | code to load and execute boot sector of active partition |
|
|
+---- - - - - - - - + - - - - - - - - - - - - - - - - - ----+
|
|+1beH
10H |
| partition 1 entry (see below)
|
|
+---- - - - - - ----|
|
|+1ceH
10H |
| partition 2 entry
|
|
+---- - - - - - ----|
|
|+1deH
10H |
| partition 3 entry
|
|
+---- - - - - - ----|
|
|+1eeH
10H |
| partition 4 entry
|
|
+---- - + - - - ----+
|
|+1feH
2
| 55 aa |
partition table signature (0aa55H)
|
|
+-------+
|
|
|
+------------------------------------------------------------------------------+
+ a ch vt l u
3
2
1
0
Sys Head Sec Cyl
Sys = 00 th y l a logic cha d liu
Sys = 80 th y l a logic cha h thng
L Tin Dng
H iu hnh
trang 75/96
Head: u t u tin
2 phn t Sec v Cyl c phn phi nh sau
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
Cyl
Sec
Cyl
Nh vy s bit dnh cho trng Cyl l 10
v dnh cho sec l 6.
V d: Ta c 2 byte l FF v 4D ta phi tnh Sec=?, Cyl=?
Kt qu cho ta Sec = 63 v Cyl = 845
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
FF
4D
1
1
1
1
1
1 1
1
0
1
0
0 1
1
0
1
Cyl
63
Cyl
Cyl = 11 0100 1101 = 84510
+ a ch vt l cui
3
2
1
0
Type Head Sec Cyl
Type = 00 : cm truy nhp
Type = 01 : h thng Dos 12 (dng cho FAT 12)
Type = 04 : h thng Dos 16 (cho a <= 5M)
Type = 06 : h thng Dos 16 (cho a >= 5M)
Type = 0C : h thng Dos 32
Type = 50 : h thng DM (Disk Management) Readonly
Type = 51: h thng DM (Disk Management) Read/Write
Type = 05 : M rng, dng to ra a logic v cu trc
ca a logic ging nh cu trc ca a vt l, nhng cc
thnh phn con ca a m rng (05) th khng c dng lm
a khi ng.cc
Type = 0F : M rng.
+--------------------------------------------------------------+
|
Extended DOS Partition
|
|--------------------------------------------------------------|
| _ Each drive table can also contain another type-5 entry
|
|
to point to yet another drive table:
|
|
+--------------------+ 0M
|
|
+-----| master boot sector | Volume #1
|
|
| | +--------------------|
|
|
| +->| DOS boot sector
|
(drive C:) |
|
|
\ fat, dir & data
\
|
|
+---->|--------------------| 32M
|
|
+-----| Extension table
| Volume #2
|
|
| | +--------------------|
|
|
| +->| DOS boot sector
|
(drive D:) |
|
|
\ fat, dir & data
\
|
|
+---->|--------------------| 64M
|
|
| Extension table
| Volume #3
|
L Tin Dng
H iu hnh
trang 76/96
|
|
|
|
+--------------------------------------------------------------+
- V d:
00
80
Sys
00
00
00
01
01
02
01
03
00
04
06
05 06 07 08 09 0A 0B 0C 0D 0E 0F
3F FF 4D 3F 00 00 00 41 0C 34 00
=3411009
Head Sec(-2b) Cyl(+2b) BIGDOS 63 63 845
63
00
00
00
00 00 00 00 00 00 00 00 00 00 00 00
Khng s dng
00
00
00
00 00 00 00 00 00 00 00 00 00 00 00
Khng s dng
00
00
00
00 00 00 00 00 00 00 00 00 00 00 00
Khng s dng
relSec = (CylNo*SecsPerTrack*Heads)+(HeadNo*SecsPerTrack)+(SecNo - 1)
L Tin Dng
H iu hnh
trang 77/96
L Tin Dng
H iu hnh
trang 78/96
s1
s2
s3
s4
s5
s6
s7
sn-1
sn
sn+1
Kt thc
c chp nhn
ngt
Sn sng
thot
Thc hin
iu phi
kt thc mt s kin hoc
mt tn hiu vo/ra
ch i mt s kin hoc
mt tn hiu vo/ra
Ch i
L Tin Dng
H iu hnh
trang 79/96
+
+
+
+
Bt u
Kt thc
Tin trnh 2
Bt u
- Thc hin song song vt l: cng mt thi im 2 tin trnh cng c thc
hin.
Cc im cn ch :
+ Loi ny ch c th thc hin trong ch nhiu processor.
L Tin Dng
H iu hnh
trang 80/96
+ Hai tin trnh song song vt l c th s dng song song thit b ngoi vi
v processor do cch lm vic ca h thng hon ton khc so vi ch
n processor.
- Thc hin song song an xen
nng cao hiu qu ca processor, cc tin trnh ln lt c phc v
an xen ln nhau.
Tin trnh
B
C
B
A
Thi gian
H iu hnh
Ngh
Ngh
Hot ng
Ngt hoc li gi h thng
Ct gi trng thi trong PCBB
Ngh
Khi phc trng thi t PCBA
Hot ng
S thay i thc hin tin trnh
L Tin Dng
H iu hnh
trang 81/96
B1
A2
B2
An
Bm
B1
Information
A2
B2
Information
An
Bm
H iu hnh
trang 82/96
- S dng b nh
H thng s s dng mt phn b nh lu tr cc thng bo. Mi tin
trnh cn nhn thng bo ch vic r sot trong hm th ca h thng.
+ u im: lu tr c lng thng tin ln vi thi gian lu tr lu.
+ Nhc im: tnh th ng cao.
- Gi thng bo qua cng vo/ra
+ u im: cc tin trnh c th d dng ly thng tin t cng m khng b
hng ro b nh ngn cn.
+ Nhc im: dung lng thng tin cha cc cng khng ln, thi gian
lu tr thng bo b hn ch.
- S dng chng trnh th k (Monitor)
Chng trnh th k (Monitor) l chng trnh ca h thng, n c cung
cp mi thng tin nhng khng c kh nng iu khin h thng. Thng qua
chng trnh ny, tin trnh c th d dng xc nh c tin trnh kia u.
+ u im: Tnh ch ng cao.
c. Loi song song phn cp
L loi tin trnh m trong qu trnh hot ng n sn sinh ra mt tin
trnh na hot ng song song vi chnh n.
A1
A2
B1
B2
An
Bm
Khi tin trnh con hot ng th hai tin trnh ny khng bit g v nhau
L Tin Dng
H iu hnh
trang 83/96
A2
B1
Ti
B2
Nguyn
An
Bm
Hai tin trnh ny khng phn bit tin trnh chnh v tin trnh con, m l
hai tin trnh c lp. Mi tin trnh sau khi s dng ti nguyn th phi tr li
cho h thng v tip tc hot ng c lp.
V d: chng trnh chi c: Ti nguyn chung l bn c. Gi s n lt
tin trnh th nht, tin trnh th nht chim ti nguyn chi, khi ra quyt nh
xong th tr li bn c cho h thng. Tin trnh th hai phi kim tra xem tin
trnh th nht i cha? nu xong ri th mi n lt n (thc hin nh tin
trnh th nht).
5. M t tin trnh song song
Ta dng k php nhn to
L Tin Dng
H iu hnh
trang 84/96
S1
S2
, sn
Sn
H iu hnh
trang 85/96
Nh vy bin OUT = 4 v IN = 7
Tin trnh A
Tin trnh B
OUT = 4
Abc.txt
Prog.doc
Prog.pas
IN = 7
H iu hnh
trang 86/96
L Tin Dng
ParBegin v ParEnd c
H iu hnh
trang 87/96
TT2:
REPEAT
while (turn <> 2) do ;
vao_doan_gang_2; { on gng ca tin trnh 2 }
turn := 1; { chuyn ti nguyn gng cho tt1)
thuc_hien_viec_khac_2;
{ phn cn li ca tin trnh 2 }
UNTIL FALSE;
ParEnd;
End.
L Tin Dng
H iu hnh
trang 88/96
TT2:
REPEAT
while (c1 > 0) do ;
c2 := 1;
vao_doan_gang_2; { on gng ca tin trnh 2 }
c2 := 0;
thuc_hien_viec_khac_2;
{ phn cn li ca tin trnh 2 }
UNTIL FALSE;
ParEnd;
End.
- Gii thch
C1 v C2 i din cho vic s dng ti nguyn gng th nht v ti nguyn
gng th hai.
+ Ban u c hai bin u c gi tr bng 0 th hin ti nguyn gng ang
trng thi sn sng phc v.
+ Gi s tin trnh 1 c phc v trc, tin trnh 1 b qua vic ch i
while (c2 > 0) do ;
L Tin Dng
H iu hnh
trang 89/96
ParBegin
TT1:
REPEAT
c1:=1;
while(c2=1) do Begin
if(tt = 2) then Begin
c1:=0;
while(tt =2) do;
c1:=1;
End;
End;
vao_doan_gang_1;
c1:=0; tt:=2;
thuc_hien_viec_khac_1;
UNTIL FALSE;
TT2:
REPEAT
c2:=1;
while(c1=1) do Begin
if(tt = 1) then Begin
c2:=0;
while(tt =1) do;
c2:=1;
End;
End;
vao_doan_gang_2;
c2:=0; tt:=1;
thuc_hien_viec_khac_2;
UNTIL FALSE;
ParEnd;
End.
- u im:
+ Gii thut ny c tnh cht vn nng p dng cho mi cng c v mi h
thng.
+ Tn dng, pht huy kh nng ti a ti nguyn gng.
- Nhc im
+ phc tp t l vi s lng tin trnh v s ti nguyn gng.
+ Tn ti hin tng ch i tch cc. Mc d khng lm g c nhng vn
chim thi gian processor.
Nguyn nhn l do mi tin trnh phi lm vic vi nhiu bin, trong c
nhiu bin khng phi ca mnh (v d: mun xc lp bin c1 phi kim tra bin
c2 v bin tt).
L Tin Dng
H iu hnh
trang 90/96
L Tin Dng
H iu hnh
Global
0
1
1
0
1
...
trang 91/96
Lc1
1
0
...
Lc2
1 (ch i)
0
1 (ch i)
...
...
- u im:
Khc phc c phc tp ca thut ton, phc tp thut ton khng
ph thuc vo s lng tin trnh.
- Nhc im:
Vn cn hin tng ch i tch cc.
9. K thut n bo
y l cng c ph thuc vo h thng do Dijkstra xut, vi t tng
nh sau:
- H thng s dng bin n bo nguyn c bit (Semaphore) s. Ban u s
nhn mt gi tr bng kh nng phc v ca ti nguyn gng. H thng c hai
php thao tc trn s l P(s) v V(s).
P: Proberen (ting H Lan) c ngha l gim
V: Verhogen c ngha l kim tra
- Ni dung ca P(s) nh sau:
+ Gim s i mt:
s := s 1
L Tin Dng
H iu hnh
trang 92/96
S
TT1
TT2
1
P(s)
0
Lm TT1
P(s)
-1
ch i
-1
TT1 xong
ch i
0
V(s)
LmTT2
0
TT2 xong
1
V(s)
V s>0 nn khng cn tin trnh no
cn ti nguyn gng
- u im:
Chng c hin tng ch i tch cc.
L Tin Dng
H iu hnh
trang 93/96
L Tin Dng
H iu hnh
trang 94/96
- Qun l b nh
10. LT: 6 Tit, TH:
Qun l tin trnh LT: 12 Tit, TH:Ti liu tham kho
- Ti liu tham kho
[1] Nguyn Thanh Tng. Gio trnh H iu hnh, 1995.
[2] A.S. Tanenbaum. Operating Systems Design and Implementation, 1997.
[3] Abraham Silberschatz. Principes des systmmes d exploitation, 1994.
[4] Peter Norton. Cm nang lp trnh h thng cho IBM PC, 1992.
[5]
[6]
[7]
[8]
L Tin Dng
H iu hnh
trang 95/96
H iu hnh
trang 96/96
L Tin Dng