Professional Documents
Culture Documents
Hệ Điều Hành: Giảng viên: Ths Phạm Thanh Bình Bộ môn Kỹ thuật máy tính & mạng
Hệ Điều Hành: Giảng viên: Ths Phạm Thanh Bình Bộ môn Kỹ thuật máy tính & mạng
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Hệ điều hành 1 - 1
Nội dung:
Giới thiệu chung
Tiến trình và luồng
Sự bế tắc
Quản lý bộ nhớ
Quản lý vào/ra
Hệ thống file
1
Chương 1:
GIỚI THIỆU CHUNG
2
Bài 1.2 – Lịch sử hệ điều hành
Thế hệ máy tính đầu tiên (1945-1955) dùng
đèn chân không và bảng cắm:
Chưa có hệ điều hành!
3
Thế hệ máy tính thứ hai (1955-1965) sử
dụng transistor
Các hệ điều hành tiêu biểu:
+ FMS (the Fortran Monitor System)
+ IBSYS, hệ điều hành của IBM cho máy
7094.
4
Thế hệ máy tính thứ ba (1965-1980) sử
dụng IC và đa chương trình
Các hệ điều hành tiêu biểu:
+ OS/360
+ MULTICS
+ UNIX
5
Thế hệ máy tính thứ tư (1980 đến nay) -
Các máy tính cá nhân (PC)
Các hệ điều hành tiêu biểu:
+ CP/M
+ DOS
+ Windows
+ Linux
Personal Computer
6
Bài 1.3 – Phân loại hệ điều hành
Các hệ điều hành cho máy tính lớn
Các hệ điều hành cho máy chủ
Các hệ điều hành đa xử lý
Các hệ điều hành cho máy tính cá nhân
Các hệ điều hành thời gian thực
Các hệ điều hành nhúng
Các hệ điều hành cho thẻ thông minh
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 1 - 13
Sơ đồ khối
Họ vi xử lý Intel x86
Tổ chức Bộ nhớ trong
7
Sơ đồ khối:
Nhập Xử lý Xuất
Lưu trữ
Có 4 khối chính:
Khối xử lý: Bộ vi xử lý, bộ nhớ trong...
Khối nhập dữ liệu: Bàn phím,chuột...
Khối xuất dữ liệu: Màn hình, máy in...
Khối lưu trữ: Đĩa cứng, đĩa mềm, đĩa CD...
8
Bên trong máy tính
9
Khối xử lý
Đây là phần quan trọng nhất của một máy tính,
bao gồm 3 bộ phận chính:
Bộ vi xử lý – CPU
Bộ nhớ trong
Các mạch vào ra
Ngoài ra còn có hệ thống các dây dẫn, cáp nối
để liên kết giữa các bộ phận trên (hệ thống
Bus)
Sơ đồ khối xử lý:
Bus
10
Các thành phần của khối xử lý
Bộ vi xử lý – CPU (Central Processing Unit): Là
bộ não của máy tính, nó xử lý các thông tin và
điều khiển mọi hoạt động của máy tính.
Bộ nhớ trong: Là bộ nhớ có khả năng liên lạc trực
tiếp với bộ vi xử lý,là nơi lưu trữ dữ liệu phục vụ
cho quá trình xử lý.
Các mạch vào ra: Để điều khiển việc giao tiếp với
thiết bị ngoại vi.
11
Họ vi xử lý Intel x86
Bộ vi xử lý đầu tiên thuộc dòng này là 8086, ra
đời năm 1978, là bộ vi xử lý 16 bit đầu tiên của
Intel.
8088 ra đời sau 8086, về cơ bản nó cũng giống
như 8086, nhưng có giá thành rẻ hơn vì chỉ có bus
dữ liệu 8 bít, và tốc độ cũng thấp hơn
Tiếp theo là các bộ vi xử lý 80186, 80286, 80386,
80486, 80586 (Pentium), PII, PIII, P4, Core Duo...
Các bộ vi xử lý ngày càng trở nên mạnh mẽ hơn
với độ dài các thanh ghi lớn hơn, tốc độ đồng hồ
cao hơn, bề rộng bus lớn hơn...
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 1 - 23
Bộ vi xử lý 8086
8086 có cấu trúc đơn giản, dễ tìm hiểu
Hầu hết các lệnh của nó đều được các bộ vi
xử lý sau này kế thừa
Các chương trình viết cho 8086 vẫn có thể
chạy trên các bộ vi xử lý hiện đại hơn
12
14 thanh ghi cơ bản của 8086
(Mỗi thanh ghi dài 16 bít)
Nhóm các thanh ghi dữ liệu (Thanh ghi công dụng chung):
AX AH AL
BX BH BL
CX CH CL
DX DH DL
CS
DS
SS
ES
13
Nhóm các thanh ghi con trỏ và chỉ số:
SI
DI
SP
BP
IP
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 1 - 27
14
Thanh ghi trạng thái (Thanh ghi cờ -
Flag):
Thanh ghi này dùng để xác định trạng thái
của bộ vi xử lý. Mỗi bít trên thanh ghi cờ có
một tên riêng, có một công dụng riêng trong
việc phản ánh trạng thái
15
Bộ nhớ trong có 2 loại: ROM và RAM
RAM (Random Access Memory): Bộ nhớ
truy cập ngẫu nhiên, có thể đọc và ghi dữ
liệu lên đó. Dữ liệu trên RAM sẽ mất đi khi
tắt máy.
ROM (Read Only Memory): Bộ nhớ chỉ
đọc, không thể thay đổi nội dung của nó.
Khi tắt máy thì dữ liệu trên ROM vẫn được
giữ nguyên.
16
Tổ chức bộ nhớ trong hệ thống 8086
17
Địa chỉ logic
Các thanh ghi của 8086 chỉ dài 16 bít,
không thể chứa được địa chỉ dài 20 bít. Do
đó người ta phải sử dụng một phương pháp
đánh địa chỉ khác, gọi là địa chỉ logic
Bộ nhớ được chia thành từng đoạn, mỗi
đoạn có chiều dài tối đa 64 KB, các đoạn
được đánh số lần lượt là 0, 1, 2,...
Các ô nhớ trong đoạn cũng được đánh số
lần lượt là 0, 1, 2,... (cực đại là 65535)
18
Ví dụ:
Một ô nhớ có địa chỉ segment:offset =
10A2:34B4h, hãy xác định địa chỉ vật lý
của nó
Giải:
Bước 1: Dịch địa chỉ segment về bên trái 4 bít
(tương đương với dịch 1 kí hiệu hex).
Ta thu được: 10A20h
Bước 2: Lấy giá trị thu được ở bước 1 đem
cộng với địa chỉ offset:
10A20h
+ 34B4h
13ED4h
19
Sự phân chia không gian nhớ
F0000h ROM BIOS
E0000h
D0000h
C0000h
} Để dành
B0000h
A0000h } Bộ nhớ hiển thị
90000h
...
20000h
10000h
} Bộ nhớ cơ sở: 10 đoạn (640 KB)
00000h 64 KB
20
Thực hiện quá trình ROM SCAN
Kiểm tra các ổ đĩa xem đĩa nào là đĩa khởi
động
Đoạn mã trên sector đầu tiên của đĩa khởi
động sẽ được chạy: Nạp các file của hệ điều
hành vào bộ nhớ
Hệ điều hành được nạp và chạy
Hệ thống Monolithic
Hệ thống phân lớp
Hệ thống Client-Server
21
Hệ thống Monolithic
Cấu trúc này thực chất là không có cấu trúc
nào cả.
Hệ điều hành là một tập hợp của các
chương trình con. Mỗi chương trình có thể
gọi một chương trình khác bất cứ khi nào nó
muốn.
22
Ví dụ: Cấu trúc hệ điều hành THE
Lớp Chức năng
5 Hệ thống điều hành
4 Các chương trình của người dùng
3 Quản lý vào/ra
Liên lạc giữa tiến trình và hệ thống giao
2
tiếp
1 Quản lý bộ nhớ
Phân phối Processor và thực hiện đa
0
chương trình
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 1 - 45
Hệ thống Client-Server
Hệ điều hành được chia nhỏ thành các bộ
phận, mỗi bộ phận sẽ điều khiển một chức
năng của hệ thống, như dịch vụ file, dịch vụ
tiến trình, dịch vụ thiết bị cuối, hay dịch vụ
bộ nhớ…
Nhờ vậy mỗi phần sẽ trở nên nhỏ hơn và dễ
quản lý hơn.
23
Để yêu cầu một dịch vụ, ví dụ như đọc một
block của file, một tiến trình của người
dùng (tiến trình khách – client process) sẽ
gửi yêu cầu tới tiến trình phục vụ (server
process), nó sẽ thực hiện công việc và gửi
kết quả trở lại.
24
Các tính chất cơ bản của hệ điều hành
25
Gọi ngắt bằng Assembly
Dùng lệnh INT:
INT <Số hiệu ngắt>
26
B1: Thiết lập giá trị phù hợp cho các thanh
ghi
B2: Gọi tên chương trình xử lý ngắt
Hiện 1 kí tự:
thanh ghi AH =2
thanh ghi DL= kí tự cần hiển thị
Gọi chương trình xử lý ngắt số 21h
27
Ví dụ: Hiện kí tự „M‟ ra màn hình
_AH = 2;
_DL = „M‟;
geninterrupt(0x21);
Bài tập 1:
Hiện ra màn hình các chữ cái từ A-Z.
28
Cách 2:
Sử dụng các cấu trúc và hợp REGS:
(xem trang sau)
Hàm gọi ngắt:
int86(SốHiệuNgắt, Regs đầu vào, Regs đầu ra);
int86x(SốHiệuNgắt, Regs vào, Regs ra, SRegs);
29
Ví dụ: Đặt thanh ghi AH bằng 2
(cách 1 dùng struct, cách 2 dùng union)
C1:
struct BYTEREGS bien;
bien.ah=2;
C2:
union REGS bien;
bien.h.ah=2;
30
Bài tập:
Nhập 1 kí tự từ bàn phím rồi hiện nó ra
màn hình
• B1: AH=1
Gọi ngắt 21h
Kí tự nhập vào sẽ được cất ở thanh ghi AL
• B2: Hiện kí tự trong AL ra màn hình
Bài tập:
Nhập một kí tự từ bàn phím rồi hiện nó ra
màn hình ở đầu dòng tiếp theo.
+ Kí tự CR: mã 13 (0Dh): đưa con trỏ về đầu
dòng.
+ Kí tự LF: mã 10 (0Ah): đưa con trỏ xuống
dòng.
31
B1: nhập 1 kí tự từ bàn phím
B2: Hiện kí tự CR
B3: Hiện kí tự LF
B4: Hiện kí tự đã nhập
Bài tập 3:
Hiện chuỗi “Hello” ra màn hình
+ Chuỗi cần hiển thị phải kết thúc bằng dấu $
+ DS=địa chỉ segment của chuỗi
+ DX=địa chỉ offset của chuỗi
+ AH=9
+ Gọi ngắt 21h
32
BTVN:
Nhập 1 kí tự từ bàn phím rồi hiện nó ra
màn hình theo mẫu:
Nhap 1 ki tu: g
Ki tu vua nhap la: g
Hết Phần 1
33
HỆ ĐIỀU HÀNH
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Hệ điều hành 2 - 1
Chương 2:
1
Bài 2.1 – Các khái niệm
Thực hiện tuần tự và song song
Tiến trình là gì?
Khối mô tả tiến trình
Các hình thức tổ chức tiến trình
Luồng là gì?
Phân biệt tiến trình và luồng
2
Thực hiện song song: Có thể chạy nhiều
chương trình cùng một lúc
3
Làm cách nào để phân biệt được tiến trình
này với tiến trình khác trong hệ thống?
4
Hệ điều hành phải có công cụ để quản lý
các tiến trình
Mỗi hệ điều hành thường có một tập hợp
các hàm quản lý tiến trình như Khởi tạo tiến
trình, Huỷ tiến trình...
Ví dụ:
Chương trình “Windows Task Manager”
5
Các hàm quản lý tiến trình trên Windows
Luồng là gì?
Trong một chương trình có thể có nhiều
công việc cần làm
Các công việc đó cũng có thể được thực
hiện song song, mỗi công việc sẽ ứng với
một luồng (Thread)
Hệ điều hành cũng có các hàm quản lý
luồng: Khởi tạo luồng, Huỷ luồng... (tương
tự như quản lý tiến trình)
6
Phân biệt tiến trình và luồng
Các tiến trình sử dụng các không gian nhớ
độc lập
Các luồng có thể sử dụng chung không
gian nhớ của chương trình (biến toàn cục),
và có thể có vùng nhớ của riêng nó (biến
cục bộ)
...
BÀI TẬP
7
Bài 2.2 – Các trạng thái của một tiến trình
8
Bài 2.3 – Điều độ tiến trình
Tài nguyên găng
Điều độ tiến trình
Các giải thuật điều độ
9
Điều độ tiến trình
Điều độ tiến trình (theo nghĩa tổng quát)
là sự tổ chức thực hiện các tiến trình theo
một giải thuật nào đó, nhằm tránh sự xung
đột giữa các tiến trình về mặt tài nguyên
10
Điều độ tiến trình (theo nghĩa hẹp) là sự tổ
chức, phân phối tài nguyên CPU cho các
tiến trình theo một giải thuật nào đó, nhằm
đảm bảo tốc độ thực hiện của các tiến trình
và hiệu quả sử dụng CPU
11
Các giải thuật điều độ
FCFS (First-Come First-Served )
Đến trước phục vụ trước
SJF (Shortest Job First)
Ưu tiên tiến trình ngắn nhất
SRTN (Shortest Remaining Time Next)
Ưu tiên tiến trình có thời gian còn lại ít nhất
Round-Robin
Xếp hàng vòng tròn
...
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 2 - 23
BÀI TẬP
Mục đích:
Tìm hiểu về lập trình ngắt để chạy song
song hai chương trình
Tránh xung đột khi hai chương trình sử
dụng chung một tài nguyên
12
BÀI TẬP LỚN
Mỗi nhóm SV tự chọn 1 đầu bài lập trình
gọi hàm API của Windows (ưu tiên cho các
hàm liên quan tới tiến trình, luồng, bộ nhớ,
ổ đĩa, thiết bị…)
Viết báo cáo gồm 2 nội dung cơ bản:
1. Cách thức gọi hàm API bằng công cụ mà
SV sử dụng
2. Sản phẩm: Ảnh chụp chương trình chạy và
mã nguồn có đủ chú thích.
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 2 - 25
13
Ôn tập:
Khái niệm ngắt
Phân loại ngắt
Các bước xử lý ngắt
Ngắt kép và các giải pháp xử lý
Tìm hiểu ngắt thời gian và ngắt bàn phím
Lập trình ngắt
14
Quá trình ngắt được mô tả trong hình dưới đây:
Chương trình bị ngắt
15
Số hiệu ngắt Chức năng
0 – 1Fh Ngắt của BIOS
20h – 3Fh Ngắt của DOS
40h – 7Fh Dự trữ
80h – F0h Dùng cho chương trình BASIC
trong ROM
F1h – FFh Không sử dụng
Giải thích:
Chương trình xử lý ngắt có thể là một bộ phận của
BIOS hay của DOS, cũng có thể do người sử dụng tự
viết.
Ta cần phân biệt rõ hai khái niệm: “Ngắt” và “Chương
trình xử lý ngắt”. Không phải số hiệu ngắt nào cũng
có có chương trình xử lý ngắt tương ứng.
Khi một ngắt có số hiệu từ 0 – 1Fh xuất hiện thì chúng
sẽ được xử lý bởi các chương trình viết sẵn nằm trong
ROM BIOS (chủ yếu là giải quyết các yêu cầu vào/ ra
cơ bản).
Còn nếu ngắt có số hiệu từ 20h – 3Fh thì sẽ do hệ điều
hành DOS xử lý.
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 2 - 32
16
Phân loại ngắt:
Để phân loại cần dựa trên một tiêu chí nào đó,
ở đây ta sẽ phân loại ngắt dựa trên cách thức
phát sinh ngắt, tạm chia làm hai loại sau:
Ngắt mềm
Ngắt cứng
Ngắt mềm
Ta gọi một ngắt là ngắt mềm nếu nó được phát sinh
khi có lời gọi ngắt bằng lệnh INT trong chương
trình.
Cú pháp của lệnh INT là:
INT <Số hiệu ngắt>
Ví dụ:
INT 21h ;Gọi ngắt 21h của DOS
INT 13h ;Gọi ngắt 13h của BIOS
17
Ngắt cứng
Một ngắt cứng phát sinh khi có một thiết bị phần
cứng gửi tín hiệu yêu cầu ngắt tới bộ vi xử lý.
Ví dụ:
Khi ta gõ một phím trên bàn phím hay bấm chuột,
sẽ có tín hiệu ngắt gửi tới bộ vi xử lý để yêu cầu xử
lý hành động vừa thực hiện.
Các ngắt được kích hoạt từ thiết bị ngoài (bàn phím,
chuột...) giống như ví dụ trên được gọi là Ngắt cứng
ngoài. Còn nếu ngắt phát sinh bởi các kinh kiện bổ
trợ nằm trên mainboard thì được gọi là Ngắt cứng
trong (hay ngắt cứng nội bộ).
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 2 - 35
18
Ngắt kép và các giải pháp xử lý
Ngắt kép là hiện tượng xuất hiện đồng thời
nhiều tín hiện ngắt gửi về CPU
19
Thiết lập mức ưu tiên cho các ngắt
Ví dụ: Sử dụng IC 8259 để điều khiển ngắt.
Các tín hiệu ngắt không được đưa trực tiếp tới
CPU mà phải đưa qua IC điều khiển ngắt 8259
IC điều khiển ngắt sẽ phân loại chúng rồi chuyển
tới CPU theo các mức ưu tiên khác nhau
Các đường tín hiệu ngắt: IRQ 0, IRQ 1,... IRQ 15
20
Chắn ngắt
Ví dụ: Sử dụng các lệnh CLI và STI để điều khiển
ngắt
CLI (Clear Interrupt Flag): xoá cờ ngắt IF=0
Sau lệnh này thì các ngắt cứng sẽ bị chặn (không
còn tác dụng)
STI (Set Interrupt Flag): Thiết lập cờ ngắt IF=1
Sau lệnh này thì các ngắt cứng có tác dụng trở lại
21
Tìm hiểu ngắt thời gian 8h
IC 8253 chuyên làm nhiệm vụ phát sinh
ngắt này
Cứ khoảng 55 ms (1/18.21 s) thì IC này lại
gửi một tín hiệu ngắt tới CPU
Ta có thể viết chương trình xử lý cho ngắt
này, chương trình đó sẽ tự động được chạy
cứ sau ~55 ms
22
Lập trình ngắt
Chương trình xử lý ngắt của BIOS-DOS
Chương trình xử lý ngắt của người dùng
23
Các công việc mà hệ thống phải thực
hiện khi có tín hiệu ngắt
...
24
Các bước để thực hiện chương trình
xử lý ngắt của người dùng
25
Định nghĩa danh sách thanh ghi
INTERRUPT_REGS
Bước 2:
Lưu lại địa chỉ của chương trình xử lý ngắt
cũ (để sau này có thể khôi phục lại)
Sử dụng hàm getvect:
getvect(Số hiệu ngắt)
26
Bước 3:
Đặt địa chỉ của hàm xử lý ngắt mới vào vị
trí tương ứng trên bảng vector ngắt
Sử dụng hàm setvect:
void setvect(Số hiệu ngắt, Địa chỉ hàm xử lý ngắt);
Bước 4:
Khôi phục lại chương trình xử lý ngắt cũ
Ví dụ: Khôi phục lại chương trình xử lý
ngắt 15h cũ
setvect(0x15, OldInt);
27
Chú ý:
Khi sử dụng hàm setvect cần thiết lập chắn
ngắt:
Ví dụ:
disable(); //Chắn ngắt trước khi gọi setvect
setvect(0x15, NewInt);
enable(); //Mở chắn
...
28
Bài tập:
Lập trình xử lý ngắt thời gian 8h để đo thời
gian chạy của chương trình. Cứ mỗi khi ấn
phím Enter thì màn hình sẽ hiện ra thời gian
chương trình đã chạy.
Ấn ESC để kết thúc.
Bài tập 2:
Lập trình xử lý ngắt thời gian 8h để hiện ra
màn hình thời gian chương trình đã chạy
Cứ 10s thì chương trình tự động hiện thời
gian ra màn hình
Kết thúc chương trình khi chạy được 100s
29
BTVN 1:
Tương tự như bào tập 2, nhưng cứ 1 giây
lại hiện thông báo ra màn hình 1 lần. Ấn
phím ESC để kết thúc chương trình
BTVN 2:
Lập trình xử lý ngắt thời gian 8h để cứ 1
giây lại hiện ra màn hình giờ hiện tại của hệ
thống. Ấn phím ESC để kết thúc chương
trình.
30
Gợi ý:
Đọc giờ hiện tại bằng chức năng 2Ch của
ngắt 21h
b1.h.ah=0x2C;
int86(0x21,&b1,&b2);
Kết quả:
CH=giờ, CL=phút, DH=giây, DL=% giây
cout<<b2.h.ch<<“:”<<b2.h.cl<<“:”<<b2.h.dh;
BTVN 3:
Lập trình xử lý ngắt thời gian 8h để minh
họa việc chuyển giao CPU giữa các hàm
Viết 3 hàm khác nhau, mỗi hàm sẽ chạy
110ms rồi chuyển sang hàm khác
Kết thúc chương trình khi chạy được 100s
31
Hết Phần 2
32
HỆ ĐIỀU HÀNH
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Hệ điều hành 3 - 1
Chương 3:
SỰ BẾ TẮC
(DEADLOCK)
Dẫn nhập
Các khái niệm về bế tắc
Xử lý bế tắc
1
Bài 3.1 – Dẫn nhập
Khi có hai hoặc nhiều tiến trình tác động
lẫn nhau, chúng có thể gây ra xung đột và
không giải quyết được. Hiện tượng đó được
gọi là sự bế tắc (deadlock).
2
Ví dụ: Xét tình huống sau đây
Hai tiến trình A, B cùng muốn scan ảnh rồi
ghi file ảnh vào đĩa CD.
Tiến trình A gửi yêu cầu muốn được cấp
quyền sử dụng scanner và máy ghi CD
Tiến trình B gửi yêu cầu muốn được cấp
quyền sử dụng máy ghi CD và scanner
(lúc đó cả máy CD và scanner đều đang rỗi)
3
Bài 3.2 – Các khái niệm về bế tắc
Định nghĩa bế tắc
Bốn điều kiện xảy ra bế tắc
Mô hình hoá sự bế tắc
4
Bốn điều kiện xảy ra bế tắc
Mỗi tài nguyên hoặc được sở hữu bởi một tiến
trình duy nhất, hoặc đang rảnh rỗi. (1 tài nguyên
chỉ phục vụ 1 tiến trình)
Các tiến trình đang nắm giữ tài nguyên được cấp
trước đó có thể gửi yêu cầu đòi cấp tài nguyên mới
Không thể lấy lại các tài nguyên đã được cấp trước
đó cho tiến trình. Chúng phải được chính tiến trình
đó giải phóng
Phải có một hàng đợi vòng tròn gồm hai hoặc
nhiều tiến trình, mỗi tiến trình lại đang chờ một tài
nguyên được sở hữu bởi chính thành viên tiếp theo
trong hàng đợi
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 3 - 9
5
Mô hình hoá sự bế tắc
Holt đã đưa ra cách mô hình hoá bốn điều
kiện trên bằng các sơ đồ nút (năm 1972)
Nút tiến trình được khoanh tròn
Nút tài nguyên được đóng khung vuông
6
Mũi tên được nối từ nút tài nguyên tới nút
tiến trình nghĩa là tài nguyên đó do tiến trình
đó yêu cầu, và đã được phân cho tiến trình,
tiến trình hiện đang sở hữu nó (hình a)
Mũi tên được nối từ tiến trình tới tài nguyên,
nghĩa là tiến trình đó hiện đang bị dừng để
chờ nhận được tài nguyên đó (hình b)
Xét hình c:
Tiến trình C đang chờ tài nguyên T
Tài nguyên T lại do tiến trình D nắm giữ
Tiến trình D không thể giải phóng T vì nó
đang chờ tài nguyên U
Tài nguyên U lại đang thuộc về C
Tạo thành một vòng khép kín, bế tắc xảy ra!
7
Ví dụ: xảy ra bế tắc
8
Sau bước (q) có thể tiếp tục chạy tiến trình
B và cấp cho nó tài nguyên S mà không gây
ra bế tắc
Nếu việc thực hiện một yêu cầu của tiến trình
có nguy cơ dẫn đến bế tắc, hệ điều hành có thể
treo tiến trình mà không cần thực hiện yêu cầu
đó cho tới khi thấy an toàn!
9
Bài 3.3 – Xử lý bế tắc
Bốn chiến lược xử lý bế tắc
Phát hiện bế tắc
Giải quyết bế tắc
10
Phát hiện bế tắc
Ví dụ:
Xét hệ thống gồm có bảy tiến trình (từ A
đến G), và có sáu tài nguyên (từ R đến W).
(Trạng thái của các tài nguyên và tiến trình
được trình bày ở trang sau)
“Hệ thống này có bị bế tắc không? và nếu
có thì sẽ bao gồm những tiến trình nào?”
11
Giải: Vẽ sơ đồ tài nguyên
Kết luận:
12
Bài tập: 4 tiến trình A, B, C, D
4 tài nguyên: T, X, Y, Z
A sở hữu X và xin cấp Y
B xin cấp X và T
C sở hữu Y, xin cấp Z và T
D sở hữu Z, xin cấp Y
Hệ thống có bị bế tắc không? Nếu có thì
những tiến trình nào bị bế tắc?
13
Các bước của giải thuật
Giả sử có N nút trong sơ đồ. Lần lượt thực hiện
5 bước sau đây cho từng nút.
1. Khởi tạo L (là một danh sách rỗng), và đảm
bảo rằng tất cả các mũi tên đều chưa bị đánh
dấu.
2. Đặt nút hiện hành vào cuối danh sách L và
kiểm tra xem liệu nút này có xuất hiện trong
danh sách hai lần không. Nếu có thì tức là đã
tạo thành vòng kín, giải thuật kết thúc.
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 3 - 27
14
Xét ví dụ nói trên:
Giả sử lần lượt kiểm tra các nút theo thứ tự:
R, A, B, C, S, D, T, E, F…Nếu phát hiện ra
một vòng kín thì giải thuật kết thúc.
15
Bắt đầu từ nút R:
Ban đầu L là một danh sách rỗng
Đặt R vào danh sách rồi đi tới nút tiếp theo là A,
thêm A vào danh sách. Như vậy L = [R, A].
Từ A ta đi tới S, và L = [R, A, S].
S không có mũi tên đi ra nào, nó là một điểm cuối,
nên ta sẽ quay trở lại A. Do A không có mũi tên đi
ra nào chưa được đánh dấu, nên ta sẽ quay lại R,
hoàn thành việc kiểm tra với nút R.
16
Tiếp theo sẽ xuất phát từ B:
Từ B ta đi theo các mũi tên hướng ra cho tới khi
gặp D, lúc đó L = [B, T, E, V, G, U, D].
Tại đây ta sẽ phải lựa chọn ngẫu nhiên nút tiếp
theo. Nếu chọn nút S, đó là một điểm cuối, và ta
sẽ quay lại D.
Sau đó ta chọn được T và đặt vào danh sách: L =
[B, T, E, V, G, U, D, T], tại điểm này ta đã phát
hiện ra vòng lặp kín, giải thuật kết thúc!
17
Giải quyết bế tắc
Sau khi phát hiện bế tắc cần làm gì để hệ
thống hoạt động trở lại?
Biện pháp giải phóng tài nguyên
Biện pháp quay trở lại
Biện pháp huỷ bỏ tiến trình
18
Biện pháp quay trở lại
Tiến trình đang sở hữu tài nguyên sẽ bị “reset” về
thời điểm trước khi nó giành được tài nguyên. Tất
cả các công việc đã làm sau thời điểm đó sẽ bị mất.
Tài nguyên đó có thể được phân phối cho một tiến
trình khác đang bế tắc.
Khi tiến trình được khởi động trở lại, nếu nó muốn
giành lấy tài nguyên, nó sẽ phải chờ cho tới khi tài
nguyên đó sẵn sàng
Cần có cơ chế lưu trữ trạng thái của tiến trình
trong quá khứ, để có thể quay trở lại.
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 3 - 37
19
Các vấn đề Phòng tránh bế tắc, Ngăn chặn
bế tắc... sinh viên tự nghiên cứu trong cuốn
Modern Operating Systems.
Hết Phần 3
20
HỆ ĐIỀU HÀNH
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Hệ điều hành 4 - 1
Chương 4:
QUẢN LÝ BỘ NHỚ
1
Bài 4.1 – Bộ nhớ và chương trình
Bộ nhớ là tài nguyên quan trọng để thi
hành chương trình
Muốn thi hành một chương trình thì mã
lệnh và dữ liệu của nó phải được nạp vào
bộ nhớ.
Cách thức tổ chức và quản lý bộ nhớ sẽ
ảnh hưởng tới tốc độ và hiệu quả thi hành
chương trình
2
Bước 1: Dịch
Dịch các modul chương trình (từ ngôn ngữ
thuật toán) sang ngôn ngữ máy (nhị phân),
bao gồm:
Chuyển đổi các tên biến sang địa chỉ ô nhớ
logic (tức là địa chỉ tương đối của ô nhớ
trong đoạn dữ liệu của chương trình)
Chuyển đổi các câu lệnh sang mã máy
3
Bước 3: Thi hành
Nạp chương trình vào bộ nhớ vật lý cụ thể,
chuyển đổi các địa chỉ logic sang địa chỉ vật
lý
Quyền điều khiển được trao cho câu lệnh
đầu tiên của chương trình
4
Bài 4.2 – Các phương thức quản lý bộ nhớ
5
Phân khu động
Bộ nhớ được phân phối tuỳ theo kích thước
chương trình
Chương trình nào thực hiện xong thì bộ
nhớ của nó sẽ được giải phóng, dành chỗ
cho chương trình khác
Nhận xét:
Cả hai phương thức phân khu cố định và
phân khu động đều có chung đặc điểm:
Mỗi chương trình khi thi hành đều chiếm
dụng một vùng nhớ tương ứng với kích
thước của nó
Do đó không thể thi hành được các chương
trình có kích thước lớn hơn bộ nhớ vật lý
6
Phân đoạn
Khi có yêu cầu cung cấp bộ nhớ từ phía
chương trình, hệ thống sẽ cấp phát một đoạn
nhớ có kích thước đúng bằng modul cần nạp
của chương trình
Để quản lý các đoạn nhớ, người ta sử dụng
bảng quản lý đoạn SCB (Segments control
block), mỗi phần tử của bảng sẽ ứng với
một modul của chương trình
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 4 - 13
Bảng SCB:
D A L
7
Địa chỉ 1 ô nhớ của chương trình:
Có dạng 2 thành phần: (s,d)
Địa chỉ của ô nhớ trong RAM là: A+d
Phân trang
Chương trình ở bộ nhớ ngoài được chia
thành nhiều phần bằng nhau, mỗi phần gọi
là một trang (logic)
Bộ nhớ vật lý cũng được chia thành các
trang có cùng kích thước với trang ở bộ nhớ
ngoài
Các trang của chương trình sẽ được nạp
vào các trang trong bộ nhớ vật lý
8
Để quản lý các trang của chương trình,
người ta sử dụng bảng quản lý trang PCB
(Pages control block), mỗi phần tử của
bảng sẽ ứng với một trang logic
D AP
... ...
... ...
9
Các phương pháp nạp trang và đổi trang
10
Các chiến lược nạp trang
Nạp đơn giản
Nạp trước
Nạp theo yêu cầu
...
11
Kết hợp phân trang - đoạn
Chương trình được biên tập theo kiểu phân
đoạn, các đoạn được quản lý bằng bảng SCB
Mỗi đoạn (mỗi modul chương trình) lại
được chia thành từng trang Mỗi đoạn sẽ
có bảng PCB của riêng nó
12
Bài 4.3 – Quản lý bộ nhớ trên IBM - PC
13
Quản lý bộ nhớ trên hệ thống 80286
14
Chế độ bảo vệ (Protected mode)
Áp dụng phương pháp quản lý bộ nhớ kiểu
phân đoạn
Có thể quản lý tối đa 16MB bộ nhớ vật lý
(nhờ sử dụng địa chỉ vật lý 24 bít)
Cho phép chạy các chương trình có kích
thước lớn hơn bộ nhớ vật lý nhờ sử dụng
các địa chỉ ảo (Virtual Address)
Có cơ chế “bảo vệ các đoạn nhớ”, tránh
xung đột khi sử dụng bộ nhớ
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 4 - 29
15
Bảng quản lý đoạn
Các đoạn nhớ được được quản lý bởi các
bảng mô tả (Descriptor table), mỗi bản ghi
của bảng sẽ chứa thông tin về một đoạn nhớ
16
Giải thích:
Trường Limit: chứa độ dài của đoạn nhớ (tối
đa là 216 = 64 KB)
Trường Base: Địa chỉ của đoạn nhớ trong bộ
nhớ (địa chỉ 24 bít)
Trường P:
+ P = 0: Đoạn chưa được nạp vào bộ nhớ
+ P = 1: Đoạn đã được nạp vào bộ nhớ
Trường DPL: Chứa mức ưu tiên của đoạn
(Descriptor Privilege Level)
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 4 - 33
Segment
Segment còn được gọi là Bộ chọn đoạn,
nó chứa các thông tin sau:
15 ... 3 2 1 0
index TI RPL
17
Trường RPL (dài 2 bít): Chứa mức ưu tiên
mong muốn (Request Privilege Level)
Trường TI:
+ TI = 0: Đoạn do bảng mô tả toàn cục quản lý
(GDT - Global Descriptor Table)
+ TI = 1: Đoạn do bảng mô tả cục bộ quản lý
(LDT – Local Descriptor Table)
18
Các mức ưu tiên
Mức 0: Là mức ưu tiên cao nhất, dành cho
các chương trình cấp thấp như quản lý CPU,
quản lý bộ nhớ...
Mức 1: Dành cho các chương trình quản lý
vào/ra
Mức 2: Dành cho các chương trình quản lý
file
Mức 3: Là mức ưu tiên thấp nhất, dành cho
các chương trình ứng dụng
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 4 - 37
19
Quản lý bộ nhớ kiểu phân đoạn
Cũng tương tự như trên 80286, có thêm một
số thay đổi sau:
Sử dụng địa chỉ vật lý dài 32 bít nên có thể
quản lý tối đa 4 GB bộ nhớ vật lý
Địa chỉ segment:offset dài 16 bít: 32 bít
Bảng mô tả:
0 ... 15 16 ... 39 40 ... 47 48 ... 51 52... 55 56 ... 63
Limit Base ... Limit xx DG Base
(16 bít) (24 bít) (8 bít) (4 bít) (4 bít) (8 bít)
20
Giải thích:
Trường Limit: dài 16 + 4 = 20 bít (độ dài
đoạn tối đa là 220 [đơn vị])
+ Nếu bít G = 0: Đơn vị đo là Byte
(Một đoạn dài tối đa 220 byte = 1 MB)
+ Nếu bít G = 1: Đơn vị đo là Trang
Trường Base: dài 24 + 8 = 32 bít (địa chỉ vật
lý 32 bít)
21
Quản lý các trang
Bộ nhớ tuyến tính có tới 220 trang nên kích
thước bảng quản lý trang sẽ rất lớn
Cần thực hiện phân cấp để giảm kích thước
bảng quản lý trang
22
Địa chỉ tuyến tính
Địa chỉ tuyến tính dài 32 bít, được chia
làm 3 trường:
31 ... 22 21 ... 12 11 ... 0
Số hiệu bảng qlý Số hiệu trang Vị trí ô nhớ trong trang
(B) (T) (d)
23
Hết Phần 4
24
HỆ ĐIỀU HÀNH
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Hệ điều hành 5 - 1
Chương 5:
QUẢN LÝ VÀO RA
1
Bài 5.1 – Các nguyên lý của phần cứng vào/ra
Sơ đồ hệ thống vào/ra
Các thiết bị vào/ra
Bộ điều khiển thiết bị (device controller)
Các phương thức giao tiếp với controller
Truy nhập trực tiếp bộ nhớ (Direct
Memory Access - DMA)
Sơ đồ hệ thống vào/ra
2
Các thiết bị vào/ra được kết nối với hệ
thống thông qua các bộ điều khiển thiết bị
(controllers)
3
Các thiết bị khối (Block devices)
Một thiết bị khối sẽ lưu trữ thông tin theo
từng khối có kích thước cố định, mỗi khối
có một địa chỉ riêng
Kích thước của một khối thường nằm trong
phạm vi từ 512 byte tới 32768 bytes
Có thể đọc hoặc ghi từng khối một cách
độc lập với các khối còn lại
Ví dụ: Các ổ đĩa
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 7
4
Bộ điều khiển thiết bị (device controller)
Các đơn vị vào ra thường bao gồm thành
phần cơ khí và thành phần điện tử
Thành phần điện tử được gọi là bộ điều
khiển thiết bị (device controller) hoặc bộ
điều hợp (adapter), nó thường có dạng một
vỉ mạch (card) có thể cắm trên các khe mở
rộng
Thành phần cơ khí là bản thân thiết bị
5
Nhiệm vụ của bộ điều khiển thiết bị là
chuyển đổi dãy bít nối tiếp thành một khối
nhiều byte, và thực hiện việc sửa lỗi nếu cần
Đầu tiên, khối các byte này sẽ được lắp
ghép lại từ nhiều bít, tại một vùng đệm bên
trong bộ điều khiển
Sau khi phần checksum đã được kiểm tra,
và không thấy có lỗi, nó có thể được sao
chép vào bộ nhớ chính
6
Làm cách nào mà CPU có thể liên lạc với
các thanh ghi điều khiển đó?
7
Nếu dùng địa chỉ cổng 8 bít thì dải địa chỉ
là: 00h -> FFh
Nếu dùng địa chỉ cổng 16 bít thì dải địa chỉ
là: 0000h -> FFFFh
8
Lập trình vào/ra cổng:
...
9
Ưu điểm của phương pháp ánh xạ
thanh ghi vào/ra tới bộ nhớ
Có thể thực hiện vào/ra bằng các lệnh truy
nhập bộ nhớ thông thường
Do giảm được số lệnh thực hiện nên sẽ làm
tăng tốc độ vào/ra
Tránh được xung đột giữa các tiến trình khi
thực hiện vào/ra mà không cần áp dụng thêm
các giải pháp bảo vệ khác (vì không gian nhớ
của các tiến trình đã được hệ điều hành bảo vệ)
10
Ví dụ:
Hệ thống Pentium áp dụng cả hai phương
pháp:
+ Các cổng được đánh số từ 0 tới 65535
+ Không gian vào/ra được ánh xạ vào dải
địa chỉ từ 640 K đến 1M
11
Như vậy controller sẽ điều khiển quá trình
đọc dữ liệu từ thiết bị vào bộ đệm của nó,
còn CPU sẽ điều khiển quá trình đọc dữ
liệu từ bộ đệm của controller vào bộ nhớ.
12
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 25
13
Nhược điểm của việc sử dụng DMA
Giá thành phần cứng sẽ tăng lên
Nếu CPU không có công việc gì để làm, thì
việc bắt CPU (có tốc độ cao) phải ngồi chờ
DMA controller (có tốc độ thấp) thực hiện
vào/ra là điều bất hợp lý
Do đó không phải tất cả các máy tính đều
sử dụng DMA, nhất là các dòng máy tính
giá rẻ
14
Mục đích của phần mềm vào/ra
Phải đảm bảo được sự độc lập thiết bị (device
independence) đối với các phần mềm cấp
người dùng, nghĩa là có thể viết chương trình
để truy nhập vào bất cứ thiết bị vào/ra nào, mà
không phải biết trước thiết bị
Ví dụ: Một chương trình muốn đọc dữ liệu từ
một file, nó có thể đọc file đó mà không cần
quan tâm file đó nằm trên đĩa mềm, đĩa cứng,
hay CD-ROM
User processes
Device-Independent I/O Software
Device drivers
Interrupt handlers
Hardware
15
Các trình xử lý ngắt (Interrupt handlers)
16
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 33
17
Các hệ điều hành thường phân loại các
driver theo loại của thiết bị
Có hai loại thiết bị phổ biến là thiết bị khối
và thiết bị kí tự, do đó cũng có hai loại driver
tương ứng là driver khối và driver kí tự
18
Hoạt động của các lớp vào/ra
19
Quản lý màn hình
Thông tin hiển thị trên màn hình được điều
khiển bởi vỉ mạch màn hình (Video Adapter)
Video Adapter có hai thành phần chính:
+ Mạch điều khiển màn hình (Video controller)
+ Bộ nhớ hiển thị (Display Memory)
20
Mạch điều khiển màn hình
(Video controller)
21
Chế độ văn bản (text mode)
Màn hình được chia thành nhiều ô, mỗi ô
hiện 1 kí tự
Chia thành 80 cột x 25 dòng, tổng số ô trên
một màn hình là 2000 ô.
Mỗi ô trên màn hình tương ứng với 2 byte
của bộ nhớ hiển thị (2 byte này chứa gì thì
trên màn hình hiện cái đó): Byte thấp chứa
mã ASCII, byte cao chứa màu sắc.
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 43
22
Lập trình truy nhập bộ nhớ hiển thị
Cách 1:
Sử dụng macro MK_FP để chuyển đổi địa
chỉ segment:offset thành địa chỉ vật lý:
void far *MK_FP(segment, offset);
Ví dụ:
char *s;
s= (char*)MK_FP(0xB800, 0);
Sau lệnh trên thì s sẽ trỏ tới đầu trang 0 của
bộ nhớ hiển thị
23
Cách 2:
Sử dụng hàm pokeb để ghi dữ liệu vào ô nhớ
void pokeb(segment, offset, value);
Hàm trên sẽ ghi 1 byte dữ liệu (value) vào ô
nhớ có địa chỉ là segment:offset
24
Chức năng số 5: chọn trang hoạt động
Các tham số:
+ AH = 5
+ AL = số hiệu trang
Ví dụ: chọn trang 1 làm trang hoạt động
MOV AH, 5
MOV AL, 1
INT 10h
25
Chế độ đồ họa 256 màu
Mỗi điểm sáng trên màn hình ứng với 1
byte trong bộ nhớ hiển thị
R G B
0 - 255 0 - 255 0 - 255
26
Quản lý đĩa từ
Cấu trúc đĩa từ
Đọc ghi đĩa từ
Tổ chức dữ liệu trên đĩa từ
Định dạng đĩa từ
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 5 - 54
27
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 5 - 55
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 5 - 56
28
Một đĩa có thể chứa một hoặc nhiều đĩa
kim loại, với tốc độ quay là 5400, 7200,
hoặc 10800 vòng/phút.
Một cánh tay cơ khí được gắn ở góc để đầu
đọc (head) có thể chuyển động trên các bề
mặt đĩa
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 5 - 57
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 5 - 58
29
Mỗi khi cánh tay dịch chuyển, các đầu đọc
có thể đọc được dữ liệu ở một vòng tròn
mới, goi là rãnh (track)
Tất các các rãnh ứng với cùng một vị trí
của cánh tay tạo thành một trụ (cylinder)
Mỗi rãnh được chia thành nhiều cung từ
(sector), thường có 512 byte trên mỗi cung
từ.
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 5 - 59
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 5 - 60
30
Thời gian chuyển động của cánh tay giữa hai trụ
kế tiếp vào khoảng 1ms. Di chuyển cánh tay tới
một trụ bất kỳ mất từ 5 tới 10 ms, tuỳ từng thiết bị.
Khi cánh tay được đưa tới vị trí của rãnh, thiết bị
sẽ phải chờ để cung từ quay tới vị trí đầu đọc, thời
gian chờ khoảng 5 đến 10 ms, tuỳ vào tốc độ quay
của đĩa.
Đầu đọc sẽ thực hiện đọc (hoặc ghi) dữ liệu lên
cung từ với tốc độ từ 5 MB/s tới 160 MB/s (tuỳ
loại đĩa).
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 5 - 61
31
Đọc ghi đĩa từ (bằng ngắt 13h)
Chức năng số 2: đọc sector vào bộ nhớ
Các tham số vào:
+ AH = 2
+ AL = số lượng sector muốn đọc (≤ số sector/1 track)
+ CH = cylinder
+ CL = sector
+ DH = head
+ DL = ổ đĩa (0: đĩa A, 1: đĩa B, 80h: đĩa cứng 1,
81h: đĩa cứng 2)
+ ES:BX = Địa chỉ vùng nhớ sẽ chứa dữ liệu
Kết quả: Nếu có lỗi thì CF=1, AH= Mã lỗi
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 63
Bài tập:
Lập trình đọc sector đầu tiên của đĩa cứng
vào bộ nhớ:
- Head 0
- Track 0
- Sector 1
32
Chức năng số 3: ghi dữ liệu từ bộ nhớ vào sector
Các tham số vào:
+ AH = 3
+ AL = số lượng sector muốn ghi (≤ số sector/1 track)
+ CH = cylinder
+ CL = sector
+ DH = head
+ DL = ổ đĩa (0: đĩa A, 1: đĩa B, 80h: đĩa cứng 1,
81h: đĩa cứng 2)
+ ES:BX = Địa chỉ vùng nhớ đang chứa dữ liệu
Kết quả: Nếu có lỗi thì CF=1, AH= Mã lỗi
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 65
Bài tập:
Ghi chuỗi “Hello” vào sector thứ 2 trên đĩa
cứng.
- Head =0
- Track =0
- Sector = 2
33
Tổ chức dữ liệu trên đĩa từ
Tổ chức dữ liệu trên đĩa mềm
Tổ chức dữ liệu trên đĩa cứng
...
34
Bảng tham số đĩa mềm BPB
(Bios Parameter Block)
Địa chỉ Kích thước Nội dung
... ... ...
0Bh 2 byte Số byte/1 sector
0Dh 1 byte Số sector/1 cluster
13h 2 byte Tổng số sector trên đĩa
18h 2 byte Số sector/1 track
1Ah 2 byte Số đầu đọc ghi
2Bh 11 byte Nhãn đĩa
... ... ...
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 69
35
Bảng phân khu (Bảng Partition)
Địa chỉ Kích thước Nội dung
1BEh 16 byte Thông tin về phân khu 1
1CEh 16 byte Thông tin về phân khu 2
1DEh 16 byte Thông tin về phân khu 3
1EEh 16 byte Thông tin về phân khu 4
1FEh 2 byte 55AA (Kết thúc sector)
36
Bài tập 1:
Hãy cho biết phân khu 1 của đĩa cứng có
phải là phân khu chủ động không?
+ Lập trình đọc sector đầu tiên của đĩa cứng
+ Truy cập bảng partition để lấy thông tin về
trạng thái của phân khu 1
+ Hiện kết quả ra màn hình
Bài tập 2:
Lập trình hiện ra màn hình vị trí bắt đầu
của phân khu 1 trên đĩa cứng
37
BTVN:
Hãy thiết lập phân khu thứ 2 của đĩa cứng
làm phân khu chủ động.
38
Format cấp thấp
Tạo ra các track, các sector ở trên bề mặt
đĩa bằng cách ghi các thông tin đánh dấu vị
trí lên bề mặt đĩa.
39
Format cấp cao
Tạo ra các cấu trúc quản lý file trên từng
phân khu.
Việc format cấp cao sẽ tùy thuộc vào loại
hệ điều hành mà ta sử dụng trên phân khu
đó
40
Bảng mô tả các sector
Bảng này có 4 trường, mỗi trường có kích
thước 1 byte và chứa các thông tin sau:
Chú ý:
Byte 4 có thể nhận một trong các giá trị sau:
Byte 4 Ý nghĩa
0 Có 128 byte/1 sector
1 Có 256 byte/1 sector
2 Có 512 byte/1 sector
3 Có 1024 byte/1 sector
41
Quản lý đĩa CD
...
Hết Phần 5
42
HỆ ĐIỀU HÀNH
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Hệ điều hành 6 - 1
Chương 6:
HỆ THỐNG FILE
1
Giới thiệu chung
Hệ thống file là một bộ phận quan trọng
của hệ điều hành, việc thiết kế hệ thống file
ảnh hưởng rất lớn tới hiệu quả hoạt động của
hệ thống.
Một hệ thống file tốt phải thoả mãn ba tiêu
chí là đơn giản, hoàn chỉnh và hiệu quả.
2
Hệ thống file của Windows 9x
Phân khu đĩa cài Windows 9x:
Boot block FAT Root dir Data blocks
Block là gì?
Số lượng các sector trên một phân khu đĩa
cứng là rất lớn, khó quản lý.
Người ta thường nhóm nhiều sector trên
phân khu đĩa lại thành một block (còn gọi là
khối đĩa, nhóm sector, cluster, liên cung…)
Block là đơn vị nhỏ nhất để cấp phát đĩa
3
Sector logic
Các sector trên 1 phân khu được đánh số lại
theo trật tự từ 0, 1, 2, 3… trở đi.
(sector 0 là sector đầu tiên của một phân khu,
còn gọi là Boot sector của phân khu đó)
Ví dụ: Nếu 1 block gồm N sector logic thì
block đầu tiên của phân khu sẽ bao gồm các
sector logic từ 0, 1, 2,…, N-1
Boot block
Boot block là khối đĩa đầu tiên của một phân
khu, nó bao gồm các sector 0, 1, 2… N-1
(N là số lượng sector trong 1 block)
Boot block sẽ chứa đoạn mã khởi động và
một số thông tin hệ thống khác
4
FAT (File Allocation table)
Đây là nơi chứa vị trí của các file trên phân
khu này
Bảng FAT có cấu tạo dạng danh sách móc
nối
5
Root Directory (Thư mục gốc)
Là một danh sách chứa thông tin về các file
và thư mục con của phân khu đĩa.
6
Các thuộc tính của file
Read Only: File chỉ đọc
Hidden: File ẩn
System: File hệ thống
…
Sub Dir: Thư mục con
Một file có thuộc tính Sub Dir thì nội dung
của file chính là 1 bảng thư mục chứa thông tin
về các file mà nó quản lý!
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 6 - 13
7
Hệ thống file NTFS
Phân khu đĩa sử dụng NTFS:
Boot block … MFT Data blocks
Nhận xét
Hệ thống file của Windows 9x khá đơn
giản và hiệu quả, không có khả năng bảo
mật file.
Hệ thống file của Unix thoả mãn cả ba tiêu
chí đơn giản, hoàn chỉnh và hiệu quả.
NTFS là hệ thống file hiện đại, đa năng,
khả năng tương thích cao nhưng thiết kế
khá cồng kềnh, chi phí lớn.
8
Kết luận
Hệ thống file Unix chiếm ưu thế vượt trội với cấu
trúc gọn gàng, có đủ các tính năng cần thiết, tốc
độ truy cập nhanh.
Có thể cải tiến hệ thống file UNIX để quản lý
được nhiều file hơn trong tương lai nhờ bảng i-
node mở rộng.
Có thể cải tiến hệ thống file NTFS bằng cách loại
bớt các tính năng không cần thiết như nén file, mã
hoá file… và các trường thông tin dư thừa ra khỏi
thiết kế hệ thống file.
9
Chức năng 3Dh: Mở một file có sẵn
Các tham số vào:
+ AH = 3Dh
+ DS:DX trỏ tới chuỗi chứa tên file (chuỗi này phải kết
thúc bằng 0)
+ AL = 0: Mở để đọc
1: Mở để ghi
2: Mở để đọc và ghi
Kết quả:
+ Nếu thành công: AX= thẻ file
+ Nếu có lỗi thì CF=1, AX= Mã lỗi
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 6 - 19
10
Chức năng 3Fh: Đọc dữ liệu từ file vào bộ nhớ
Các tham số vào:
+ AH = 3Fh
+ BX = thẻ file
+ CX = số byte cần đọc
+ DS:DX= địa chỉ vùng nhớ sẽ chứa dữ liệu
Kết quả:
+ Nếu thành công: AX= số byte đọc được
Nếu AX=0 hoặc AX<CX: file đã kết thúc
+ Nếu có lỗi thì CF=1, AX= Mã lỗi
11
Quan hệ giữa thiết bị và file
Thiết bị Tên file Thẻ
Hết Phần 6
12