Download as pdf or txt
Download as pdf or txt
You are on page 1of 163

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
http://dhthuyloi.blogspot.com

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 2

1
Chương 1:
GIỚI THIỆU CHUNG

Hệ điều hành là gì?


Lịch sử hệ điều hành
Phân loại hệ điều hành
Tổng quan về phần cứng máy tính
Cấu trúc hệ điều hành

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 3

Bài 1.1 – Hệ điều hành là gì?


Hệ điều hành là một máy ảo
Hệ điều hành là người quản lý tài nguyên
hệ thống

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 4

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!

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 5

Máy tính dùng đèn chân không

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 6

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 7

Máy tính dùng bóng bán dẫn - IBM

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 8

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 9

Mạch tổ hợp (IC)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 10

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 11

Personal Computer

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 12

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

Bài 1.4 – Tổng quan về phần cứng máy tính

Sơ đồ khối
Họ vi xử lý Intel x86
Tổ chức Bộ nhớ trong

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 14

7
Sơ đồ khối:

Nhập Xử lý Xuất

Lưu trữ

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 15

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...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 16

8
Bên trong máy tính

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 17

Bảng mạch chính (Mainboard)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 18

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)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 19

Sơ đồ khối xử lý:

Bus

Bộ nhớ trong CPU Mạch vào/ra

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 20

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 21

Các thành phần chính của bộ vi xử lý


ALU (Arithmetic & Logic Unit): Khối số học và
logic. Đây là nơi thực hiện các phép tính số học
(cộng, trừ, nhân, chia...) và các phép logic (Not,
And, Or...).
Các thanh ghi: Cung cấp khả năng nhớ bên trong
CPU. Mỗi thanh ghi có khả năng chứa được một
dãy các bít dữ liệu (độ dài còn phụ thuộc vao từng
loại CPU).
Hệ thống nối ghép bên trong CPU (Bus nội bộ):
Cho phép liên lạc giữa các bộ phận bên trong
CPU.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 22

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 24

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 25

Nhóm các thanh ghi đoạn:

CS

DS

SS

ES

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 26

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

CS:IP, DS:SI, SS:SP

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 28

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 29

Tổ chức Bộ nhớ trong


ROM và RAM
Địa chỉ vật lý
Địa chỉ logic
Sự phân chia không gian nhớ

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 30

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 31

Địa chỉ vật lý


Bộ nhớ của máy tính được cấu tạo bởi các
phần tử nhớ 1 bit.
Cứ 8 phần tử nhớ tạo thành một ô nhớ (1
byte).
Các ô nhớ được sắp xếp tuần tự trong bộ
nhớ và được đánh số lần lượt từ 0, 1, 2... Số
hiệu các ô nhớ như trên được gọi là địa chỉ
vật lý của ô nhớ.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 32

16
Tổ chức bộ nhớ trong hệ thống 8086

Bộ vi xử lý 8086 sử dụng 20 đường dây địa


chỉ (bus địa chỉ 20 bít) để liên lạc với bộ nhớ
(địa chỉ các ô nhớ là một dãy dài 20 bít)
Số lượng cực đại các ô nhớ có thể đánh địa
chỉ là 220 (= 1MB)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 33

Địa chỉ vật lý của các ô nhớ


1111...1111111 FFFFFh
...
0000...0000011 Địa chỉ dạng hex: 00003h
0000...0000010 00002h
0000...0000001 00001h
0000...0000000 1 ô nhớ 00000h 1 ô nhớ
(20 bít)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 34

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)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 35

Địa chỉ logic


Địa chỉ logic của một ô nhớ sẽ gồm 2 phần:
Số hiệu đoạn (segment) và vị trí của ô nhớ trong
đoạn (offset)
Người ta sử dụng 16 bít để đánh số các đoạn, như
vậy địa chỉ segment sẽ nằm trong phạm vi từ
0000h đến FFFFh
Người ta cũng sử dụng 16 bít để đánh số các ô nhớ
trong đoạn đoạn, như vậy địa chỉ offset sẽ nằm
trong phạm vi từ 0000h đến FFFFh,

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 36

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ó

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 37

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

Vậy địa chỉ vật lý của ô nhớ đó là 13ED4h

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 38

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 39

Quá trình khởi động hệ thống


CS=1111111111111111=FFFFh
IP=0000000000000000=0000h
CS:IP=FFFF:0000h=FFFF0h
Tại Địa chỉ này có sẵn 1 lệnh nhảy để nhảy
tới đoạn mã khởi động, nó sẽ kiểm tra toàn
bộ phần cứng

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 40

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 41

Bài 1.5 – Cấu trúc hệ điều hành

Hệ thống Monolithic
Hệ thống phân lớp
Hệ thống Client-Server

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 42

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 43

Hệ thống phân lớp


Cấu trúc hệ điều hành có nhiều lớp, mỗi
lớp được xây dựng bên trên một lớp khác.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 44

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 46

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 47

Phần nhân (kernel) sẽ điều khiển sự liên


lạc giữa các tiến trình client và server.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 48

24
Các tính chất cơ bản của hệ điều hành

Độ tin cậy cao


An toàn
Hiệu quả
Tổng quát theo thời gian
Thuận tiện

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 49

Bài tập: Gọi ngắt


Gọi ngắt bằng Assembly
Gọi ngắt bằng C/C++

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 50

25
Gọi ngắt bằng Assembly
Dùng lệnh INT:
INT <Số hiệu ngắt>

Ví dụ: Hiện kí tự „M‟ ra màn hình


MOV AH, 2
MOV DL, „M‟
INT 21H
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 1 - 51

Gọi ngắt bằng C/C++


Cách 1:
Sử dụng các giả thanh ghi:
_AX, _BX, _CX, _DX
_AH, _AL, _BH, _BL, _CH, _CL, _DH, _DL
_SI, _DI, _SP, _BP
_CS, _DS, _ES, _SS
Hàm gọi ngắt:
void geninterrupt(int SốHiệuNgắt);
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 1 - 52

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 53

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 54

27
Ví dụ: Hiện kí tự „M‟ ra màn hình

_AH = 2;
_DL = „M‟;
geninterrupt(0x21);

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 55

Bài tập 1:
Hiện ra màn hình các chữ cái từ A-Z.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 56

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);

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 57

Các cấu trúc và hợp trong “dos.h”


struct WORDREGS //Các thanh ghi 16 bít và cờ
{unsigned int ax, bx, cx, dx, si, di, cflag, flags;};
struct BYTEREGS //Các thanh ghi 8 bít
{unsigned char al, ah, bl, bh, cl, ch, dl, dh;};
struct SREGS //Các thanh ghi đoạn
{unsigned int es, cs, ss, ds;};
union REGS //Kết hợp các thanh ghi 8 bít và 16 bít
{
struct WORDREGS x;
struct BYTEREGS h;
}
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 1 - 58

29
Ví dụ: Đặt thanh ghi AH bằng 2
(cách 1 dùng struct, cách 2 dùng union)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 59

C1:
struct BYTEREGS bien;
bien.ah=2;
C2:
union REGS bien;
bien.h.ah=2;

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 60

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ộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 61

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 62

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ộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 63

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 64

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 65

Hết Phần 1

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 1 - 66

33
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
http://dhthuyloi.blogspot.com

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Hệ điều hành 2 - 1

Chương 2:

TIẾN TRÌNH VÀ LUỒNG

Các khái niệm


Các trạng thái của một tiến trình
Điều độ tiến trình

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 3

Thực hiện tuần tự và song song


Thực hiện tuần tự: Tại một thời điểm chỉ
có thể thực hiện một chương trình, khi
chương trình đó thực hiện xong thì mới
chạy được chương trình khác.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 4

2
Thực hiện song song: Có thể chạy nhiều
chương trình cùng một lúc

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 5

Tiến trình là gì?


Một tiến trình (Process) là sự thực hiện
một chương trình
Mỗi tiến trình sẽ được chạy trong khoảng
thời gian (vài chục hay vài trăm mili giây),
sau đó nó sẽ chuyển CPU cho tiến trình
khác
Tạo ra cảm giác các chương trình chạy
song song

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 6

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?

Mỗi tiến trình cần có đặc trưng riêng,


như ID của tiến trình, tài nguyên của tiến
trình...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 7

Khối mô tả tiến trình


Là nơi chứa những đặc trưng của một tiến trình,
bao gồm:
Biến trạng thái: Lưu giữ trạng thái của tiến trình
(Sẵn sàng, Đang thực hiện, Dừng)
Vùng nhớ lưu giá trị các thanh ghi mà tiến trình
sử dụng
Thông tin về các tài nguyên mà tiến trình sử dụng
Thông tin phục vụ cho việc liên lạc với các tiến
trình khác (nếu có)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 8

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”

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 9

Các hình thức tổ chức tiến trình


Độc lập
Có quan hệ thông tin
Phân cấp
Đồng mức

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 10

5
Các hàm quản lý tiến trình trên Windows

Hàm API (Application Program Interface)


Các hàm Create, Terminate, Open...
Hàng đợi thông báo, các hàm trao đổi
thông báo PostMessage, SendMessage...
...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 11

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)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 12

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ộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 13

Cách sử dụng hàm API


Khai báo hàm (tuỳ từng ngôn ngữ):
+ Biết được các tham số của hàm
+ Biết được hàm nằm trong file DLL nào
Gọi hàm để sử dụng

BÀI TẬP

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 14

7
Bài 2.2 – Các trạng thái của một tiến trình

Tại một thời điểm, tiến trình có thể ở một trong ba


trạng thái sau:
Trạng thái thực hiện: là trạng thái mà tiến trình
đang sử dụng CPU để thực hiện lệnh
Trạng thái sẵn sàng: Tiến trình đã được phân
phối đầy đủ mọi tài nguyên, chỉ trừ CPU
Trạng thái dừng: Tiến trình còn thiếu một vài
điều kiện nào đó thì mới chuyển sang trạng thái
sẵn sàng

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 15

Quá trình chuyển đổi trạng thái


...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 16

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 độ

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 17

Tài nguyên găng


Tài nguyên găng là loại tài nguyên mà tại
một thời điểm chỉ có thể phục vụ cho một
đối tượng
Ví dụ: CPU, một ô nhớ, máy in...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 18

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 19

Công tác điều độ phải thoả mãn các yêu


cầu sau:
Mỗi thời điểm chỉ có một tiến trình nằm
trong đoạn găng
Không tiến trình nào được phép ở lâu vô
hạn trong đoạn găng
Không tiến trình nào phải chờ vô hạn trước
đoạn găng

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 20

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 21

Các thuật ngữ:


Điều độ = scheduling
Bộ phận điều độ = scheduler
Giải thuật điều độ = scheduling algorithm

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 22

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

Ngôn ngữ lập trình: C/C++

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 24

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

Nộp bài qua email: binhgl@yahoo.com


Bài nộp gồm file Word + file chương trình
được nén vào 1 file rar, zip
Tên file nén là tên sinh viên_tên lớp:
NguyenVanA_59TH1.rar
Bản in nộp trực tiếp cho GV
Thời gian làm bài: 5 tuần

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 26

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 27

Khái niệm ngắt


Ngắt là hành động dừng chương trình đang chạy
để thực hiện một chương trình khác (chương trình
này được gọi là chương trình xử lý ngắt).
Bộ VXL sẽ dừng các công việc đang thực hiện
khi nhận được tín hiệu yêu cầu ngắt. Sau đó nó
trao quyền điều khiển lại cho chương trình xử lý
ngắt.
Tín hiệu yêu cầu ngắt có thể do một thiết bị phần
cứng hoặc do một lệnh INT trong chương trình
sinh ra.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 28

14
Quá trình ngắt được mô tả trong hình dưới đây:
Chương trình bị ngắt

Lệnh 1 Chương trình xử lý ngắt


Lệnh 2
Lệnh 1
... Lệnh 2

INT <...> ...


...
IRET

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 29

Chương trình xử lý ngắt cần được kết thúc


bằng lệnh IRET để sau khi thực hiện xong có
thể quay trở về thực hiện tiếp chương trình bị
ngắt trước đó.
Có nhiều loại tín hiệu ngắt khác nhau, để
phân biệt các ngắt cần dựa vào số hiệu của
chúng. Bộ vi xử lý 8086 có thể quản lý 256
ngắt, được đánh số lần lượt từ 0, 1, 2,..., FFh.
Dưới đây là bảng danh sách các ngắt:

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 30

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 31

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 33

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 34

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

Các bước xử lý ngắt


Lưu đặc trưng của sự kiện gây ngắt vào ô nhớ quy
định ( tức là nguồn gốc phát sinh ngắt)
Lưu lại thông tin của tiến trình bị ngắt (nội dung các
thanh ghi, thông tin về các tài nguyên...)
Chuyển quyền điều khiển cho chương trình xử lý
ngắt
Thực hiện chương trình xử lý ngắt để xử lý sự kiện
tương ứng
Khôi phục lại tiến trình bị ngắt (nhờ các thông tin đã
lưu)
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 2 - 36

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

CPU sẽ xử lý ngắt nào trước?

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 37

Các giải pháp xử lý ngắt kép


Thiết lập mức ưu tiên cho các ngắt
Sử dụng hàng đợi
Chắn ngắt
...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 38

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 39

Sử dụng hàng đợi


Các tín hiệu ngắt sẽ được xếp vào hàng đợi
để chờ xử lý, ngắt nào xuất hiện trước sẽ
được xử lý trước...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 40

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 41

Người lập trình có thể sử dụng hai lệnh trên để


quản lý các ngắt:
...
CLI ;Chắn ngắt
... Đoạn chương trình không
... thể bị ngắt
STI ;Mở chắn
...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 42

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 43

Tìm hiểu ngắt bàn phím


Khi một phím được ấn sẽ xuất hiện một tín
hiệu ngắt gửi về 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
mỗi khi ấn phím

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 44

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 45

Chương trình xử lý ngắt của người dùng

Các công việc mà hệ thống phải thực hiện


khi có tín hiệu ngắt
Các bước để thực hiện chương trình xử lý
ngắt của người dùng (4 bước)
Cấu trúc của một chương trình xử lý ngắt

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 46

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

...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 47

Bảng chứa địa chỉ các chương trình xử lý


ngắt được gọi là bảng vector ngắt.
Bảng này thường được cất ở ngay đầu bộ
nhớ.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 48

24
Các bước để thực hiện chương trình
xử lý ngắt của người dùng

Có 4 bước sau đây:

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 49

Bước 1: Viết hàm xử lý ngắt mới


Hàm này phải thoả mãn các yêu cầu sau:
Khai báo hàm có dạng:
void interrupt NewInt(...);
hoặc:
void interrupt NewInt(INTERRUPT_REGS);

Nội dung hàm càng đơn giản càng tốt (dùng


các phép tính với số nguyên hay ký tự, các
phép logic), không nên dùng lệnh gọi ngắt
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 2 - 50

25
Định nghĩa danh sách thanh ghi
INTERRUPT_REGS

#define u_int unsigned int


#define INTERRUPT_REGS u_int bp, u_int di, \
u_int si, u_int ds, u_int es, u_int dx, u_int cx, \
u_int bx, u_int ax, u_int ip, u_int cs, u_int flags

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 51

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)

Ví dụ: Lưu địa chỉ của ngắt 15h


void interrupt (*OldInt)(...);
OldInt = getvect(0x15);

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 52

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);

Ví dụ: Đặt địa chỉ của hàm NewInt vào


bảng vector ngắt để thay thế cho hàm xử lý
ngắt 15h cũ
setvect(0x15, NewInt);
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 2 - 53

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);

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 54

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 55

Cấu trúc của một chương trình xử lý ngắt

...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 56

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ộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 57

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 58

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 59

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 60

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;

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 61

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 62

31
Hết Phần 2

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 2 - 63

32
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
http://dhthuyloi.blogspot.com

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 2

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).

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 3

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 4

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)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 5

Tiến trình A được cấp quyền sử dụng scanner


Tiến trình B được cấp quyền sử dụng máy CD
Cả hai tiến trình cùng phải chờ để được cấp
nốt tài nguyên còn lại, quá trình chờ đợi là
mãi mãi
Bế tắc xảy ra!

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 6

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 7

Định nghĩa bế tắc


Một tập hợp các tiến trình bị coi là bế tắc
nếu mỗi tiến trình trong tập hợp phải chờ
một sự kiện, mà sự kiện đó lại chỉ có thể do
một tiến trình khác trong tập hợp tạo ra

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 8

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

Nếu không hội tụ đủ bốn điều kiện nói trên


thì sẽ không có bế tắc!

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 10

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 11

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 12

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)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 13

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!

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 14

7
Ví dụ: xảy ra bế tắc

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 15

Cách phòng tránh: Treo tiến trình B


(hệ điều hành chỉ cho chạy A và C)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 16

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 17

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!

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 18

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 19

Bốn chiến lược xử lý bế tắc


Bỏ qua tất cả các vấn đề (Giải thuật đà điểu)
Để cho các bế tắc xảy ra, phát hiện chúng, và
xử lý (*)
Chủ động phòng tránh bằng cách phân phối
tài nguyên thật cẩn thận
Ngăn chặn, bằng cách loại bỏ sự tồn tại của
một trong bốn điều kiện cần thiết gây ra bế tắc
(*) Ta sẽ tập trung chủ yếu vào vấn đề này

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 20

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?”

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 21

Tiến trình A đang nắm tài nguyên R và muốn có


thêm S.
Tiến trình B không nắm tài nguyên nào và đang
muốn có T.
Tiến trình C không nắm tài nguyên nào và đang
muốn có S.
Tiến trình D đang sở hữu U và muốn có S và T.
Tiến trình E đang sở hữu T và muốn có V
Tiến trình F sở hữu W và muốn có S.
Tiến trình G sở hữu V và muốn có U.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 22

11
Giải: Vẽ sơ đồ tài nguyên

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 23

Kết luận:

Các tiến trình D, E, G bị bế tắc vì tạo thành


vòng kín
Các tiến trình A, C, và F không bị bế tắc vì
S có thể được phân phối cho chúng, khi dùng
xong chúng có thể trả lại để tiến trình khác
sử dụng

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 24

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?

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 25

Giải thuật phát hiện vòng kín


Có rất nhiều giải thuật khác nhau để tự
động phát hiện ra vòng kín, dưới đây ta chỉ
xem xét một giải thuật đơn giản

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 26

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

3. Kiểm tra nút hiện hành xem có mũi tên nào đi ra mà


lại chưa được đánh dấu không. Nếu có thì chuyển sang
bước 4, nếu không có thì chuyển sang bước 5.
4. Chọn ngẫu nhiên một mũi tên (trong số các mũi tên
chưa được đánh dấu) rồi tiến hành đánh dấu nó. Đi
theo hướng mũi tên đó để đến một nút mới, rồi quay
trở lại bước 2.
5. Ta đã đi đến điểm cuối. Xoá bỏ nó và quay trở lại nút
trước đó, tiếp tục áp dụng bước 2. Nếu nút này chính
là nút ban đầu, tức là không phát hiện ra vòng kín nào
theo nhánh này, quá trình kiểm tra hoàn thành.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 28

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 29

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 30

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 31

Tiếp theo sẽ bắt đầu từ A:


Danh sách L được làm rỗng
Đặt A vào danh sách rồi đi tới nút tiếp theo là
S, thêm S vào danh sách. Như vậy L = [A, S].
S là một điểm cuối, nên ta sẽ quay trở lại A,
hoàn thành việc kiểm tra với nút A.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 32

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!

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 33

Bài tập: không bắt buộc


Lập trình minh họa giải thuật nói trên.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 34

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 35

Biện pháp giải phóng tài nguyên


Trong một số trường hợp, ta có thể tạm lấy
tài nguyên của một tiến trình nào đó và giao
cho tiến trình khác
Biện pháp này phụ thuộc rất nhiều vào
thuộc tính của tài nguyên đó, và không dễ
thực hiện.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 36

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

Biện pháp huỷ bỏ tiến trình


Biện pháp thô bạo nhất, nhưng cũng đơn
giản nhất để giải quyết bế tắc là huỷ bỏ một
hoặc nhiều tiến trình.
Có thể huỷ bỏ một tiến trình trong vòng
kín. Nếu may mắn thì các tiến trình còn lại
có thể tiếp tục hoạt động. Còn nếu chưa
được thì có thể tiếp tục huỷ bỏ các tiến trình
khác cho tới khi vòng kín bị phá vỡ.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 38

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 39

Hết Phần 3

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 3 - 40

20
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
http://dhthuyloi.blogspot.com

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Ớ

Bộ nhớ và chương trình


Các phương thức quản lý bộ nhớ
Quản lý bộ nhớ trên IBM - PC

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 2

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 3

Các bước thực hiện chương trình


Bước 1: Dịch
Bước 2: Biên tập
Bước 3: Thi hành

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 4

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 5

Bước 2: Biên tập


Liên kết các modul đã dịch để tạo thành
một chương trình hoàn chỉnh

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 6

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

Quyền điều khiển được trao cho câu lệnh
đầu tiên 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 - 7

Cấu trúc chương trình


Một chương trình thường gồm các đoạn:
Mã lệnh, dữ liệu, ngăn xếp
Khi thi hành chương trình thì mã lệnh, dữ
liệu, ngăn xếp thường được nạp vào các
đoạn nhớ riêng (không nhất thiết liền nhau)
Việc tổ chức, sắp xếp các đoạn chương
trình trong bộ nhớ có ảnh hưởng rất lớn tới
tốc độ thi hành chương trình và hiệu quả 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 - 8

4
Bài 4.2 – Các phương thức quản lý bộ nhớ

Phân khu cố định


Phân khu động
Phân đoạn
Phân trang
Kết hợp phân trang - đoạn

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 9

Phân khu cố định


Bộ nhớ được chia thành N phần (không
nhất thiết bằng nhau)
Môi phần có thể dùng để nạp và chạy một
chương trình
Có thể chạy đồng thời nhiều chương trình

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 10

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 11

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ý

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 12

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

... ... ...

... ... ...

... ... ...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 14

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 15

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ý

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 16

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
... ...
... ...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 17

Địa chỉ 1 ô nhớ của chương trình:


Có dạng 2 thành phần: (p, d)
Khi nạp trang chứa ô nhớ vào trang vật lý
số Ap thì địa chỉ vật lý của đầu trang là
ApxKíchThướcTrang
Địa chỉ vật lý của ô nhớ sẽ là:
ApxKichThướcTrang + d

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 18

9
Các phương pháp nạp trang và đổi trang

Chiến lược phân trang thường xuyên phải


thực hiện việc nạp lại trang, đưa trang ra bộ
nhớ ngoài...
Làm tăng hao phí thời gian và chậm tốc độ
hệ thống

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 19

Cần có các biện pháp nạp trang và đổi


trang sao cho thích hợp nhất, tiết kiệm thời
gian nhất!

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 20

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
...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 21

Các chiến lược đổi trang


Đổi ngẫu nhiên
Nạp trước thì thay trước (FIFO)
Thay trang có lần sử dụng cuối cùng cách
đây lâu nhất (LRU-Last Recently Used)
...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 22

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ó

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 23

Bộ nhớ vật lý được chia thành các trang có


kích thước bằng nhau.
Khi thi hành, các trang của đoạn sẽ được
nạp vào các trang trong bộ nhớ vật lý.
Trường A trong bảng SCB sẽ là nơi lưu giữ
địa chỉ bảng PCB của từng đoạn.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 24

12
Bài 4.3 – Quản lý bộ nhớ trên IBM - PC

Quản lý bộ nhớ trên hệ thống 8086


Quản lý bộ nhớ trên hệ thống 80286
Quản lý bộ nhớ trên hệ thống 80386

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 25

Quản lý bộ nhớ trên hệ thống 8086

Địa chỉ vật lý dài 20 bít


Chỉ quản lý được 1MB bộ nhớ
Bộ nhớ được chia thành các đoạn có kích
thước tối đa 64 KB (xếp chồng lên nhau)
Địa chỉ logic có dạng segment:offset, trong
đó segment dài 16 bít, offset dài 16 bit

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 26

13
Quản lý bộ nhớ trên hệ thống 80286

Có hai chế độ:


Chế độ thực (Real mode)
Chế độ bảo vệ (Protected mode)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 27

Chế độ thực (Real mode)


Áp dụng phương pháp quản lý bộ nhớ
tương tự hệ thống 8086
Địa chỉ vật lý dài 24 bít
Về lý thuyết, nó có thể quản lý được 16
MB bộ nhớ vật lý, nhưng do phải tương
thích với 8086 (vẫn sử dụng segment dài 16
bít, offset dài 16 bit), nên trên thực tế nó chỉ
có bộ nhớ ~ 1MB + 64KB

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 28

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

Địa chỉ logic (địa chỉ ảo)


Địa chỉ logic dạng segment:offset
(segment dài 16 bít, offset dài 16 bit)
Địa chỉ này không xác định một ô nhớ vật
lý cụ thể, nó ứng với một ô nhớ logic (có
thể nằm trên bộ nhớ vật lý hoặc không)
+ Segment: chứa các thông tin giúp tìm tới
địa chỉ đoạn nhớ
+ Offset: Xác định vị trí của ô nhớ trong đoạn

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 30

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ớ

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 31

Nội dung bảng:


0...15 16...39 40 41...43 44 45 46 47 48 ... 63
Limit Base A Type S DPL P Reserved
(16 bít) (24 bít) (16 bít)

... ... ... ... ... ... ... ...

... ... ... ... ... ... ... ...

... ... ... ... ... ... ... ...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 32

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

Từ bít 3 -> 15: chứa số hiệu đoạn logic,


tức là số hiệu bản ghi trong bảng mô tả

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 34

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)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 35

Các bước để truy cập vào ô nhớ có địa chỉ là


segment:offset?

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 36

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

Quản lý bộ nhớ trên hệ thống 80386


Cũng có hai chế độ (chế độ thực và bảo vệ)
giống 80286
Trong chế độ bảo vệ: có thể áp dụng phương
pháp quản lý bộ nhớ kiểu phân đoạn hoặc kết
hợp phân trang - đoạn

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 38

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ộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 39

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)

... ... ... ... ... ...

... ... ... ... ... ...

... ... ... ... ... ...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 40

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)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 41

Bộ nhớ kết hợp phân trang - đoạn


Chương trình được chia thành nhiều đoạn,
mỗi đoạn ứng với một modul
Các modul được “nạp” vào bộ nhớ tuyến
tính (bộ nhớ ảo).
Bộ nhớ tuyến tính được chia thành các
trang có kích thước 4 KB.
Bộ nhớ vật lý được chia thành các trang 4
KB, các trang của bộ nhớ tuyến tính sẽ được
nạp vào các trang của bộ nhớ vật lý
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 4 - 42

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 43

Một bảng quản lý có thể chứa thông tin của


210 = 1024 trang
Một thư mục trang có thể chứa thông tin
của 210 = 1024 bảng quản lý trang

Một thư mục trang sẽ quản lý được 210 x


210 = 220 trang

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 44

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)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 45

Cách chuyển đổi địa chỉ tuyến tính sang địa


chỉ vật lý?

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 46

23
Hết Phần 4

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 4 - 47

24
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
http://dhthuyloi.blogspot.com

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

Các nguyên lý của phần cứng vào/ra


Các nguyên lý của phần mềm vào/ra
Quản lý một số thiết bị thông dụng

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 2

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)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 3

Sơ đồ hệ thống vào/ra

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 4

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)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 5

Các thiết bị vào/ra


Có thể chia thiết bị vào/ra thành hai loại:
Các thiết bị khối (Block devices)
Các thiết bị kí tự (Character devices)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 6

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

Các thiết bị kí tự (Character devices)

Một thiết bị kí tự có thể gửi hoặc nhận một


chuỗi các ký tự, và không cần địa chỉ hoá
các kí tự đó
Ví dụ: Máy in, card mạng, chuột...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 8

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ị

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 9

Các vỉ mạch điều khiển thường có một


cổng kết nối, từ đó cáp sẽ được gắn để nối
tới thiết bị
Một bộ điều khiển có thể xử lý một hoặc
nhiều thiết bị cùng loại
Người ta thường chuẩn hoá giao diện giữa
bộ điều khiển và thiết bị, để tăng khả năng
tương thích giữa chúng

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 10

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 11

Các phương thức giao tiếp với controller


Mỗi bộ điều khiển thiết bị (controller) có
một vài thanh ghi dùng để liên lạc với CPU
Bằng cách ghi dữ liệu vào các thanh ghi
này, hệ điều hành có thể ra lệnh cho thiết bị
gửi/nhận dữ liệu, bật/tắt thiết bị...
Nhờ đọc dữ liệu từ các thanh ghi này, hệ
điều hành có thể biết được trạng thái của
thiết bị, xem nó có sẵn sàng để nhận lệnh
mới hay không…
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 12

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 đó?

Cách 1: Dùng địa chỉ cổng


Cách 2: Ánh xạ thanh ghi tới bộ nhớ

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 13

Cách 1: Dùng địa chỉ cổng


Mỗi thanh ghi điều khiển sẽ được cấp một
địa chỉ cổng (I/O port number), đó là một
số nguyên 8 hoặc 16 bít
CPU có thể đọc dữ liệu từ thanh ghi điều
khiển bằng lệnh IN:
IN REG,PORT
CPU có thể ghi dữ liệu vào thanh ghi điều
khiển bằng lệnh OUT:
OUT PORT,REG
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 14

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 15

Một số controller và địa chỉ cổng của nó


Controllers Địa chỉ
Bộ điều khiển đồng hồ và CMOS RAM 070 -> 07Fh
Bộ điều khiển đĩa cứng 1F0 ->1F8h
Cổng máy in LPT2 278 -> 27Fh
Cổng nối tiếp COM2 2F8 -> 2FFh
Cổng máy in LPT1 378 -> 37Fh
Bộ điều khiển màn hình (Video card) 3B0 -> 3DFh
Cổng nối tiếp COM1 3F8 -> 3FFh

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 16

8
Lập trình vào/ra cổng:
...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 17

Cách 2: Ánh xạ thanh ghi tới bộ nhớ

Mỗi thanh ghi điều khiển được cấp một địa


chỉ bộ nhớ duy nhất (địa chỉ này sẽ không
dùng để cấp cho bộ nhớ)
Khi muốn truy nhập vào thanh ghi điều
khiển đó: Thực hiện giống như truy nhập
vào một ô nhớ thông thường

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 18

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ệ)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 19

Nhược điểm của phương pháp ánh xạ


thanh ghi vào/ra tới bộ nhớ

Cần được trang bị phần cứng chuyên dụng,


thiết kế phần cứng sẽ trở nên phức tạp hơn

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 20

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 21

Truy nhập trực tiếp bộ nhớ


(Direct Memory Access - DMA)
Ví dụ: Quá trình đọc dữ liệu từ thiết bị vào
bộ nhớ khi không có DMA:
Controller sẽ đọc một khối dữ liệu từ thiết
bị vào vùng đệm bên trong controller
Sau khi kiểm tra lỗi, controller sẽ phát sinh
một ngắt gửi tới CPU để thông báo
CPU sẽ thực hiện lệnh để đọc dữ liệu từ
vùng đệm trên controller vào bộ nhớ.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 22

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ớ.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 23

Quá trình đọc dữ liệu từ thiết bị vào


bộ nhớ bằng DMA:
Phần cứng phải được trang bị bộ điều khiển
DMA (DMA controller)
Controller sẽ điều khiển quá trình đọc dữ
liệu từ thiết bị vào bộ đệm của nó
Bộ điều khiển DMA sẽ điều khiển quá trình
đọc dữ liệu từ bộ đệm của controller vào bộ
nhớ

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 24

12
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 25

Như vậy, nhờ có bộ điều khiển DMA, CPU


sẽ không phải tốn nhiều thời gian cho việc
thực hiện vào/ra nữa

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 26

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ẻ

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 27

Bài 5.2 – Các nguyên lý của phần mềm vào/ra

Mục đích của phần mềm vào/ra


Các lớp phần mềm vào/ra

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 28

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 29

Các lớp phần mềm vào/ra

User processes
Device-Independent I/O Software
Device drivers
Interrupt handlers
Hardware

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 30

15
Các trình xử lý ngắt (Interrupt handlers)

Là các chương trình giao tiếp với phần


cứng ở cấp thấp nhất

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 31

Các chương trình điều khiển thiết bị


(Device Drivers)
Mỗi thiết bị vào/ra kết nối với máy tính đều
cần tới các mã lệnh đặc trưng cho thiết bị để
điều khiển nó. Các mã này được gọi là trình
điều khiển thiết bị (device driver)
Trình điều khiển thiết bị thường được viết
bởi nhà sản xuất và được phân phối kèm theo
thiết bị.
Các hệ điều hành thường tích hợp sẵn một
số trình điều khiển thiết bị bên trong nó

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 32

16
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 33

Mỗi trình điều khiển thiết bị thường chỉ


dùng để điều khiển cho một loại thiết bị,
hoặc một lớp các thiết bị có quan hệ gần gũi
với nhau
Ví dụ: Một trình điều khiển đĩa SCSI
thường điều khiển được nhiều loại đĩa
SCSI, với các dung lượng và tốc độ khác
nhau

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 34

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ự

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 35

Phần mềm vào/ra độc lập thiết bị


(Device-Independent I/O Software)

Chức năng cơ bản của phần mềm độc lập


thiết bị là thực hiện các chức năng vào/ra
chung cho mọi thiết bị, và cung cấp một
giao diện đồng nhất cho các phần mềm cấp
người dùng

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 36

18
Hoạt động của các lớp vào/ra

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 37

Bài 5.3 - Quản lý một số thiết bị thông dụng

Quản lý màn hình


Quản lý đĩa từ

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 38

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)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 39

Hạn cuối nộp bài tập lớn là Chủ nhật,


30/5/2021, qua email
binhgl@yahoo.com

Nhớ gửi cả danh sách nhóm


Sẽ hẹn 1 buổi vấn đáp online

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 40

20
Mạch điều khiển màn hình
(Video controller)

Đây là trung tâm điều khiển quá trình hiện


thông tin ra màn hình, nó có chứa một số
thanh ghi, mỗi thanh ghi ứng với một địa
chỉ cổng
Các địa chỉ cổng thường nằm trong dải từ
3B0h đến 3DFh

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 41

Bộ nhớ hiển thị (Display Memory)

Đây là nơi chứa những thông tin sẽ được


hiện ra trên màn hình.
CPU có thể liên lạc với Display Memory
thông qua hệ thống bus địa chỉ, do đó có thể
tác động tới vùng nhớ này bằng các lệnh
truy nhập bộ nhớ thông thường

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 42

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

ô đầu tiên (hàng 1, cột 1) ứng với byte 0 và


byte 1 của bộ nhớ hiển thị
ô hàng 1 cột 2 ứng với byte 2 và byte 3
ô hàng 1 cột 3 ứng với byte 4 và byte 5
ô hàng 1 cột 4 ứng với byte 6 và byte 7

Ô hàng 25 cột 80 ứng với byte 3998 và 3999

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 44

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);

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 45

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ị

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 46

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 47

Lập trình sử dụng ngắt màn hình 10h


Chức năng số 0: chọn chế độ hiển thị
Các tham số:
+ AH = 0
+ AL = chế độ hiển thị (Đồ hoạ hay Văn bản)
Ví dụ:
MOV AH, 0
MOV AL, 3 ;chế độ văn bản màu 80x25
INT 10h

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 48

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 49

Chế độ đồ họa (Graphic mode)


Màn hình là một tập hợp các điểm sáng
(pixel), mỗi điểm có một màu sắc riêng.
Các điểm sáng phối hợp với nhau sẽ tạo ra
các hình ảnh mong muốn
Có nhiều chế độ màu sắc khác nhau…

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 50

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ị

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 51

Chế độ đồ họa 16 triệu màu (24 bít)


Mỗi điểm sáng trên màn hình ứng với 3
byte trong bộ nhớ hiển thị

R G B
0 - 255 0 - 255 0 - 255

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 52

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


Hệ điều hành 5 - 53

Cấu trúc đĩa từ


Đĩa từ là thiết bị có dung lượng lưu trữ lớn,
tốc độ đọc/ghi nhanh, là thiết bị lưu trữ chính
của máy tính.
Đĩa từ có giá thành rẻ hơn RAM, nhưng tốc
độ truy nhập dữ liệu thì chậm hơn, vì nó là
một thiết bị cơ khí .

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

Để xác định 1 sector cần 3 thông số:

Số hiệu bề mặt (side)


Số hiệu rãnh (track)
Số hiệu cung (sector)
Hoặc:
Số hiệu Head
Số hiệu Cylinder
Số hiệu sector
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính 5 - 62

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 64

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 66

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 67

Tổ chức dữ liệu trên đĩa mềm

...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 68

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

Tổ chức dữ liệu trên đĩa cứng


...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 70

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)

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 71

Thông tin chi tiết (trong 16 byte) của 1 phân khu:


Địa chỉ Kích thước Nội dung
0 1 byte Trạng thái phân khu (0: không chủ
động, 80h: chủ động)
1 1 byte Head bắt đầu
2 2 byte Sector và Cylinder bắt đầu
4 1 byte Loại phân khu
5 1 byte Số hiệu Head kết thúc
6 2 byte Số hiệu sector và cylinder kết thúc
... … …
Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 72

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ộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 73

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 74

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 75

Định dạng đĩa từ


Đĩa mới sản xuất ra thì chưa sử dụng được
ngay, cần trải qua 3 công đoạn sau:
+ Format cấp thấp
+ Phân khu đĩa
+ Format cấp cao

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 76

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 77

Phân khu đĩa


Chia đĩa thành các phân khu bằng cách ghi
vị trí bắt đầu và kết thúc của các phân khu
vào bảng partition.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 78

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
đó

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 79

Định dạng cấp thấp bằng ngắt 13h


Chức năng số 5: Format 1 track
Các tham số vào:
+ AH = 5
+ AL = số sector/1 track
+ CH = số hiệu track
+ DH = head
+ DL = ổ đĩa (0: đĩa A, 1: đĩa B, 80h: đĩa cứng 1,
81h: đĩa cứng 2)
+ ES:BX = Địa chỉ bảng mô tả các sector
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 - 80

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:

Byte 1 Byte 2 Byte 3 Byte 4


sector1 Số hiệu Số hiệu Số hiệu Số byte/1 sector
track Head sector
sector2 ... ... ... ...
... ... ... ... ...

Số bản ghi của bảng = Số sector muốn format


Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT
Hệ điều hành 5 - 81

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 82

41
Quản lý đĩa CD
...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 83

Hết Phần 5

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 5 - 84

42
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
http://dhthuyloi.blogspot.com

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

Giới thiệu chung


Tóm lược một số hệ thống file
Nhận xét
Kết luận

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 6 - 2

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ả.

Bộ môn Kỹ thuật máy tính & mạng


Hệ điều hành 6 - 3

Tóm lược một số hệ thống file


Hệ thống file của Windows 9x
Hệ thống file của UNIX
Hệ thống file NTFS

Bộ môn Kỹ thuật máy tính & mạng


Hệ điều hành 6 - 4

2
Hệ thống file của Windows 9x
Phân khu đĩa cài Windows 9x:
Boot block FAT Root dir Data blocks

Bản ghi thư mục của Windows 9x:

File name Attributes First block File size

Bộ môn Kỹ thuật máy tính & mạng


Hệ điều hành 6 - 5

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

Bộ môn Kỹ thuật máy tính & mạng


Hệ điều hành 6 - 6

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

Bộ môn Kỹ thuật máy tính & mạng


Hệ điều hành 6 - 7

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

Bộ môn Kỹ thuật máy tính & mạng


Hệ điều hành 6 - 8

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

Bộ môn Kỹ thuật máy tính & mạng


Hệ điều hành 6 - 9

Bảng thư mục


Tên file Đuôi Thuộc Để Giờ Ngày Cluster Kích
file tính dành đầu tiên thước
command com ... ... ... ... ... ...

baitap doc ... ... ... ... 3 ...

... ... ... ... ... ... ... ...

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 6 - 10

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.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 6 - 11

Data blocks (các khối đĩa chứa dữ liệu


Đây là nơi chứa nội dung của các file trên
phân khu đĩa.

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 6 - 12

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

Hệ thống file của UNIX


Phân khu đĩa cài Unix:
Boot block Super block I-nodes Data blocks

Một bản ghi của thư mục Unix:


I-node number Filename

Cấu trúc của một i-node:


Attributes Addresses of blocks

Bộ môn Kỹ thuật máy tính & mạng


Hệ điều hành 6 - 14

7
Hệ thống file NTFS
Phân khu đĩa sử dụng NTFS:
Boot block … MFT Data blocks

Cấu trúc bản ghi thư mục:


Filename MFT number

Cấu trúc bản ghi MFT:


Standard File Security
… Data …
information name descriptor
Bộ môn Kỹ thuật máy tính & mạng
Hệ điều hành 6 - 15

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.

Bộ môn Kỹ thuật máy tính & mạng


Hệ điều hành 6 - 16

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.

Bộ môn Kỹ thuật máy tính & mạng


Hệ điều hành 6 - 17

Thao tác với file bằng ngắt 21h


Chức năng 3Ch: Tạo file mới
Các tham số vào:
+ AH = 3Ch
+ 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)
+ CL = thuộc tính file
Kết quả:
+ Nếu thành công: AX= thẻ file (file handle)
+ 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 - 18

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

Chức năng 3Eh: Đóng file đang mở


Các tham số vào:
+ AH = 3Eh
+ BX = thẻ file muốn đóng
Kết quả:
+ Nếu thành công: CF= 0
+ 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 - 20

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

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 6 - 21

Chức năng 40h: Ghi dữ liệu từ bộ nhớ vào file


Các tham số vào:
+ AH = 40h
+ BX = thẻ file
+ CX = số byte cần ghi
+ DS:DX= địa chỉ vùng nhớ chứa dữ liệu
Kết quả:
+ Nếu thành công: AX= số byte ghi được
Nếu AX<CX: đĩa đã bị đầy
+ 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 - 22

11
Quan hệ giữa thiết bị và file
Thiết bị Tên file Thẻ

Bàn phím CON 0

Màn hình CON 1

Cổng giao diện AUX 3


nối tiếp
Máy in PRN 4

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 6 - 23

Hết Phần 6

Bộ môn Kỹ thuật máy tính & mạng – Khoa CNTT


Hệ điều hành 6 - 24

12

You might also like