Download miễn phí Bài giảng Hệ điều hành (4 chương)
1.1 Vì sao phải tổ chức, quản lý bộ nhớ?
CPU chỉ có thể trao đổi thông tin với bộ nhớ chính
Các chương trình muốn được thực thi cần được
nạp vào bộ nhớ chính, tạo lập tiến trình tương ứng để xử lý
Các hệ thống đa chương trên bộ nhớ chính ngoài
HĐH có thể có nhiều tiến trình đang hoạt động
Kích thước bộ nhớ chính là hữu hạn nhưng yêu cầu
bộ nhớ thì vô hạn
http://cloud.liketly.com/flash/edoc/jh2i1fkjb33wa7b577g9lou48iyvfkz6-swf-2014-02-11-bai_giang_he_dieu_hanh_4_chuong.bp7rMKzmiz.swf /tai-lieu/de-tai-ung-dung-tren-liketly-58860/
Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí
Tóm tắt nội dung tài liệu:
hông tin tạm thời Các câu lệnh trong code chỉ dùng data và
stack riêng của mình ngoại trừ các vùng
dùng chung
Tiến trình được hệ thống phân biệt bằng số
hiệu pid (proccess indentification)
1.2 Các trạng thái của tiến trình
Trạng thái của tiến trình tại mỗi thời điểm
được xác định bởi hoạt động hiện thời của
nó:
New: tiến trình được tạo lập
Ready: tiến trình đã sẵn sàng, đang chờ cấp CPU
Running: tiến trình đang được xử lý
Waiting: tiến trình tạm dừng và chờ vì thiếu tài
nguyên hay chờ 1 sự kiện nào đó
Halt: Tiến trình hoàn tất
Mô tả chuyển trạng thái của tiến trình
New Ready Running Halt
Waiting
(1) (2) (3)
(4)
(5)
(6)
1.2 Các trạng thái của tiến trình(tt)
Tại một thời điểm chỉ có 1 tiến trình ở trạng
thái Running trên 1 bộ xử lý bất kỳ và có thể
có nhiều tiến trình ở trạng thái Ready và
Waiting
1.3 Chế độ xử lý của tiến trình
Tiến trình của HĐH cần được bảo vệ khỏi sự
xâm phạm của tiến trình khác
Chế độ xử lý được chia thành 2 chế độ nhờ
sự hỗ trợ của phần cứng: Đặc quyền và
không đặc quyền
Tiến trình của HĐH hoạt động trong chế độ
đặc quyền và của người sử dụng hoạt động
trong chế độ không đặc quyền
1.3 Chế độ xử lý của tiến trình(tt)
Tập lệnh của CPU được chia thành 2 tập
OS
Hardware
Shell, editor
users
Chế độ không đặc quyền
Chế độ đặc quyền
1.4 Các thao tác điều khển tiến trình
a. Khởi tạo tiến trình
HĐH gán PID và đưa vào danh sách quản lý của
hệ thống
Cấp phát không gian bộ nhớ
Khởi tạo các thông tin cần thiết cho khối điều
khiển tiến trình: Các PID của p cha (nếu có),
thông tin trạng thái, độ ưu tiên, ngữ cảnh của
processor
Cung cấp đầy đủ các tài nguyên (trừ processor)
Đưa tiến trình vào danh sách p nào đó: ready
list, suspend list, waiting list
1.4. Các thao tác điều khển tiến trình
b. Kết thúc tiến trình HĐH thực hiện các thao
tác:
Thu hồi tài nguyên đã cấp phát cho p
Loại bỏ tiến trình ra khỏi danh sách quản lý
của hệ thống
Hủy bỏ khối điều khiển p
1.4. Các thao tác điều khển tiến trình
c. Thay đổi trạng thái của p HĐH thực hiện:
Lưu ngữ cảnh của processor
Cập nhật PCB (process control block) của tiến trình
sao cho phù hợp với trạng thái của p
Di chuyển PCB của p đến 1 hàng đợi thích hợp
Chọn tiến trình khác để cho phép nó thực hiện
Cập nhật PCB của p vừa thực hiện
Cập nhật thông tin liên quan đến quản lý bộ nhớ
Khôi phục lại ngữ cảnh của processor
1.5 Khối điều khiển tiến trình(process
control block -PCB).
Quản lý mọi hoạt động của tiến trình
Cấu trúc dữ liệu của khối điều khiển bao
gồm:
Định danh tiến trình
Trạng thái của tiến trình
Ngữ cảnh của tiến trình
Thông tin giao tiếp
Thông tin thống kê
status
pid
Waiting/waiting list
CPU-state-rec
Processor
Main store
Resource
Created recource
Parent
Progency
Priority
CPU time
Unit 1 Unit 2
RCB 1 RCB 2
RCB 1 RCB 2
PCB
PCB 1 PCB 2
…
Ngữ cảnh của ttrình
Thông tin giao tiếp
Thông tin thống kê
Trạng thái ttrình
Định danh ttrình
1.6 Tiểu trình(thread)
Thông thường mỗi tiến trình có 1 không gian địa chỉ
và 1 dòng xử lý
Mong muốn có nhiều dòng xử lý cùng chia sẻ 1
không gian địa chỉ và các dòng xử lý hoạt động
song song như các tiến trình độc lập
Xuất hiện HĐH có cơ chế thực thi mới gọi là tiểu
trình
Như vậy, tiểu trình là:
• 1 đơn vị xử lý cơ bản
• Sở hữu 1 con trỏ lệnh, tập các thanh ghi, 1 vùng nhớ stack
riêng
• Có các trạng thái như tiến trình thật.
2. TÀI NGUYÊN GĂNG
VÀ ĐOẠN GĂNG
2.1 Tài nguyên găng(Critical Resource)
Tài nguyên găng?
Những tài nguyên được HĐH chia sẻ cho nhiều
tiến trình hoạt động đồng thời dùng chung mà có
nguy cơ tranh chấp giữa các tiến trình này khi sử
dụng chúng
Tài nguyên găng có thể là tài nguyên phần
cứng hay phần mềm, có thể là tài nguyên
phân chia được hay không phân chia được
2.1 Tài nguyên găng(Critical Resource)
Ví dụ: bài toán rút tiền ngân hàng từ tài
khoản dùng chung
If (tài khoản – tiền rút >=0)
tài khoản:=tài khoản – tiền rút
Else
Thông báo lỗi
endif
2.2 Đoạn găng(Critical Section)
Các đoạn code trong các chương trình dùng
để truy cập đến tài nguyên găng được gọi là
đoạn găng
Để hạn chế lỗi có thể xảy ra do sử dụng tài
nguyên găng, tại 1 thời điểm HĐH chỉ cho 1
tiến trình nằm trong đoạn găng
HĐH có cơ chế điều độ tiến trình qua đoạn
găng
2.3 Yêu cầu của công tác điều độ
tiến trình qua đoạn găng
Tại 1 thời điểm chỉ cho phép 1 tiến trình nằm
trong đoạn găng, các tiến trình khác có nhu
cầu vào đoạn găng phải chờ
Tiến trình chờ ngoài đoạn găng không được
ngăn cản các tiến trình khác vào đoạn găng
Không có tiến trình nào phải chờ lâu để được
vào đoạn găng
Đánh thức các tiến trình trong hàng đợi để
tạo điều kiện cho nó vào đoạn găng khi tài
nguyên găng được giải phóng
2.4 Điều độ tiến trình qua đoạn găng
a. Giải pháp phần cứng
Dùng cặp chỉ thị STI(setting interrupt) và CLI (clean
interrupt)
Ví dụ:
Procedure P(i: integer)
begin
repeat
CLI;
;
STI;
;
until .F.
end;
Dùng chỉ thị TSL(Test and set)
Function TestAnhSetLock(Var i:integer):boolean
Begin
if i=0 then
begin
i:=1;
TestAnhSetLock:=true
end;
else
TestAnhSetLock:=false
End;
Procedure P(lock: integer);
begin
repeat
while (TestAnhSetLock(lock)) do;
;
lock:=0
;
until .F.
end;
b. Giải pháp dùng biến khóa
Dùng biến khóa chung
Procedure P(lock: integer);
begin
repeat
while lock=1 do;
Lock=1
;
lock:=0
;
until .F.
end;
Dùng biến khóa riêng
Var lock1, lock2: byte;
begin
lock1:=0; lock2:=1
p1: repeat
while lock2=1 do;
Lock1:=1
;
lock1:=0
;
until .F.
p2: repeat
while lock1=1 do;
Lock2:=1
;
lock2:=0
;
until .F.
end
C. Giải pháp được hỗ trợ bởi HĐH và ngôn ngữ lập
trình
Dùng Semaphore(đèn báo)
Semaphore S là 1 biến nguyên, khởi gán bằng 1 giá trị
không âm, là khả năng phục vụ của tài nguyên găng tương
ứng với nó
Ứng với S có 1 hàng đợi F(s) lưu các tiến trình đang chờ
trên S
Thao tác Down giảm S 1 đơn vị, Up tăng S 1 đơn vị
Mỗi tiến trình trước khi vào đoạn găng cần gọi Down để
giảm S và kiểm tra nếu S>=0 thì được vào đoạn găng
Mỗi tiến trình khi ra khỏi đoạn găng phải gọi Up để tăng S
lên 1 đơn vị và ktra nếu S <=0 thì đưa 1 tiến trình trong
F(s) vào đoạn găng
Procedure Down(S);
Begin
S:=S-1;
If s<0 then
Begin
Status(p)=waiting;
Enter(p,F(s));
end
End;
Procedure Up(S);
Begin
S:=S+1;
If s<0 then
Begin
Exit(Q,F(S));
Status(Q)=ready;
Enter(Q,ready-list);
end
End;
3. TẮC NGHẼN VÀ
CHỐNG TẮC NGHẼN
3.1 Tắc nghẽn
Sự xung đột về tài nguyên của các tiến trình
hoạt động đồng thời trong hệ thống
Tắc nghẽn thường xảy ra với xung đột tài
nguyên không phân chia được, ít xảy ra với
tài nguyên phân chia được
3.2 Điều kiện hình thành tắc nghẽn
Sử dụng tài nguyên không thể chia sẻ
Chiếm giữ và yêu cầu tài nguyên
Không thu hồi tài nguyên từ tiến trình đang
chiếm giữ chúng
Đợi vòng tròn
3.3 Các mức phòng tránh tắc nghẽn
Ngăn ngừa
Dự báo và tránh tắc nghẽn
Nhận biết và kh