Professional Documents
Culture Documents
Nguyên Lý HĐH
Nguyên Lý HĐH
Phân loại
HĐH đơn nhiệm: Mỗi thời điểm chỉ điều hành 1 hoạt động của chương trình. (Ví dụ: DOS, xử lý các công việc tuần tự theo lô)
HĐH đa nhiệm: Cho phép thực hiện nhiều hoạt động của các chương trình tại một thời điểm.(ví dụ window 3.1, win 9x,...)
HĐH đơn chương: Tại mỗi thời điểm chỉ cho phép 1 chương trình được tồn tại trong bộ nhớ
HĐH đa chương: Cho phép nhiều chương trình cùng tồn tại trong bố nhớ
HĐH chia sẻ thời gian: Đây là HĐH đa nhiệm đồng thời phân chia về mặt thời gian, cho phép nhiều người truy nhập vào nó dù ở các vị trí địa lý khác nhau
(Ví dụ:window NT, 2000,...).
HĐH thời gian thực: Tiến trình nạp vào hệ thống tại bất kỳ 1 thời điểm nào cũng được phân bổ giờ CPU.
...
Dựa vào tiêu chuẩn ứng dụng có thể phân thành các loại:
Hệ điều hành theo lô (Batch)
Hệ điều hành thời gian thực (Real – time)
Hệ điều hành cơ sở dữ liệu (Data – base)
Hệ điều hành phân chia thời gian (Time – sharing)
Hệ điều hành tính toán cá nhân (personal – computing) hay hệ điều hành đơn nhiệm
Lô (Batch)
Phân chia thời gian (Time sharing)
Tính toán cá nhân (Personal computing)
Cớ sở dữ liệu (Data base)
Thời gian thực (Real time)
Không thể Can thiệp
Có thể can thiệp
Có thể Lập trình được
Không thể Lập trình được
Nhiều người dùng
Một người dùng
1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
Dựa vào tiêu chuẩn ứng dụng có thể phân thành các loại:
Hệ điều hành theo lô (Batch)
Hệ điều hành thời gian thực (Real – time)
Hệ điều hành cơ sở dữ liệu (Data – base)
Hệ điều hành phân chia thời gian (Time – sharing)
Hệ điều hành tính toán cá nhân (personal – computing) hay
hệ điều hành đơn nhiệm
Hệ điều hành mạng
1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
Hệ điều hành theo lô (Batch) Máy tính đời đầu
Năm 1950 – 1960
Dùng cho các trường đại học Các xí nghiệp sản xuất
Vùng chương trình của người dùng
12n1gxvP4doKc4QrNVR NnmmBLWfk8SgfQF
Hệ điều hành
1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
Hệ điều hành theo lô (Batch)
Có một người điều hành máy tính
Tại một thời điểm hệ điêu hành chỉ thực hiện một chương trình không thụ thuộc vào kích thước của chương trình đó cũng như thời gian cần thiết để chạy
Không thể can thiệp khi chạy, có thể lập trình được, có thể dung cho loại máy tính một người dung hay nhiều người dung một lúc
Dễ cài đặt nhưng không có tính ưu tiên cho các loại công việc
1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
Hệ điều hành thời gian thực (Real –time) Hệ điều hành có mục đích đặc biệt
Hệ thống phun dầu ô tô, hệ thống ảnh hóa y tế. Có sự ràng buộc rõ ràng về mặt thời gian
Thời gian thực cứng và thời gian thực mềm
Là hệ điều hành một người dung, không thể lập trình nhưng có thể can thiệp vào nó trong quá trình thực hiện
1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
Hệ điều hành cơ sở dữ liệu (Data base)
Được đặc trưng bởi cơ sở dữ liệu được cập nhật thường xuyên
Nó chỉ chuyên dùng để quản lý dữ liệu mà không làm việc gì khác
Dùng trong ngân hàng, thư viện, đăng kí đường bay ... Duy trì tính thời sự của hệ điều hành
Giải quyết nhiều giao dịch trên cùng một dữ liệu
1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
Hệ điều hành phân chia thời gian
Thiết bị xử lý trung tâm CPU (Center Processing Unit) phân chia
đều thời gian sử dụng choc ác tiến trình như có tính ưu tiên
Còn được gọi là hệ đa chương
Một chương trình có thể được thực hiện cho đến khi phải dừng lại để đợi các thiết bị vào ra hoặc đợi câu trả lời của người dung
Khắc phục được tình trạng rỗi của các thiết bị và tăng hiệu quả làm việc cho máy tính.
Một hệ dạng đăng biệt của hệ điều hành đa chương là hệ điều hành nhiều người sử dụng (Thực chất đây là khả năng đa chương trình có kèm theo cơ chế an
toàn thỏa đáng để bảo vệ từng người dùng đối với lỗi của người dùng khác)
Hệ điều hành đa xử lý: Hầu hết các hệ thống ngày nay là các hệ thống đơn xử lý ; nghĩa là chỉ có 1 CPU chính.
1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
Hệ điều hành phân chia thời gian Hệ điều hành đa xử lý:
Tuy nhiên các hệ thống đa xử lý (hệ song song hay hệ kết nối chặt) được phát triển rất quan trọng
Có một ba ưu điểm chính:
Thông lượng được gia tăng
Tính kinh tế được mở rộng
Khả năng tin cậy được gia tăng
Có 2 dạng: Đa xử lý đối xứng SMP (symmetric multiprocessing) và đa xử lý bất đối xứng (asymmetric multiprocessing)
1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
Hệ điều hành tính toán cá nhân (Hệ điều hành đơn tác vụ - Personal computing)
Hệ điều hành này chỉ cho phép một người sử dụng tại một thời điểm người đó cũng chỉ thực hiện được một công việc mà thôi.
Hệ điều hành này dễ sử dụng, dễ cài đặt, có thể lập trình được Có 2 loại chính: Hệ để bàn và hệ xách tay
1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
Hệ điều hành tính toán cá nhân (Hệ điều hành đơn tác vụ - Personal computing)
Hệ để bản: PC xuất hiện vào những năm 1970, sự phát triển của hệ điều hành này thay vì ưu tiên tối ưu hóa việc sử dụng CPU và các thiết bị ngoại vi thì chọn
tối ưu hóa sự tiện dụng và đáp ứng người dùng.
Hệ xách tay
1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
Hệ điều hành mạng:
Là các hệ điều hành dung để điều khiển sự hoạt động của mạng
máy tính (TCP/IP là giao thức mạng phổ biến nhất)
Có các dạng:
Hệ khách – chủ (Client – Server)
Hệ máy chủ tính toán (Compute – Server systems) Hệ máy chủ tập tin (File – Server system)
Hệ ngang hàng
4. Cấu trúc của hệ điều hành 4.2. Cấu trúc theo lớp
4. Cấu trúc của hệ điều hành 4.2. Cấu trúc theo lớp
layer 5:
layer 4:
layer 3:
layer 2:
layer 1:
layer 0:
user programs
buffering for input and output
operator-console device driver
memory management
CPU scheduling
hardware
4. Cấu trúc của hệ điều hành 4.2. Cấu trúc theo lớp
Ưu điểm:
Tính module.
Mỗi lớp được cài đặt chỉ với các thao tác được cũng cấp bởi các lớp bên dưới. Một lớp không cần biết các thao tác được cài đặt như thế nào; nó chỉ cần biết
các thao tác đó làm gì. Do đó, mỗi lớp che dấu sự tồn tại của cấu trúc dữ liệu, thao tác phần cứng từ các lớp cấp cao hơn.
4. Cấu trúc của hệ điều hành 4.2. Cấu trúc theo lớp
Khó khăn:
Cách tiếp cận phân lớp liên quan tới việc định nghĩa cẩn thận các lớp vì một lớp chỉ có thể sử dụng các lớp bên dưới nó.
4. Cấu trúc của hệ điều hành 4.4. Cấu trúc client – server
1. Tiến Trình
2. Luồng(thread)
3. Điều phối CPU
4. Tài nguyên găng và đồng bộ tiến trình 5. Bế tắc và xử lý bế tắc
1
6 10
Các cung chuyển tiếp trong sơ đồ trạng thái biểu diễn sáu sự chuyển trạng thái có thể xảy ra trong các điều kiện sau:
Được phép: Tiến trình mới tạo, nếu bộ nhớ còn trống, sẽ được đưa vào bộ nhớ và sẵn sàng nhận CPU, khi đó tiến trình từ trạng thái New được chuyển sang
trạng thái Ready
Được giao: Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU và cho tiến trình thực hiện, khi đó tiến trình từ trạng thái Ready được
chuyển sang trạng thái Running
Kết thúc: Khi tiến trình kết thúc việc thực hiện, khi đó tiến trình từ trạng thái Running được chuyển sang trạng thái End
Chờ I/O hoặc sự kiện: Khi tiến trình yêu cầu một tài nguyên những chưa được đáp ứng vì tài nguyên chưa sẵn sàng hoặc tiến trình chờ thao tác nhập/xuất
hoàn thành hoặc tiến trình chờ một sự kiện nào đó, khi đó tiến trình được chuyển từ trạng thái Running sang trạng thái Waiting
Ngắt: Khi tiến trình tạm dừng vì hết thời gian sử dụng CPU, bộ điều phối sẽ chọn một tiến tình khác để xử lý, khi đó tiến trình được chuyển từ trạng thái
Running sang trạng thái Ready
I/O hoặc sự kết thúc: Khi tài nguyên mà tiến trình yêu cầu trở nên sẵn sàng để cấp
phát, hay sự kiện hoặc thao tác nhập/ xuất mà tiến trình đang đợi hoàn tất, khi đó bộ
tiến trình được chuyển từ trạng thái Waiting sang trạng thái Ready
6 11
Cấu trúc của khối quản lý tiến trình (PCB) Process Control Block
Các con trỏ (địa chỉ liên kết)
Trạng thái tiến trình
Số hiệu tiến trình
Bộ đếm lệnh
Nội dung các thanh ghi của CPU
Thông tin quản lý bộ nhớ
Danh sách các file đang mở
Con trỏ tới PCB khác
Thông tin thống kê
Thông tin tài nguyên có thể sử dụng Thông tin dùng để điều phối tiến trình ...........
6 12
Cấu trúc của khối quản lý tiến trình (PCB) Process Control Block
Mỗi tiến trình được thể hiện trong hệ thống bởi một khối điều khiển tiến trình
PCB chứa các thông tin với mỗi tiến trình gồm có: để xác định duy nhất một TT
Process ID, Parent process ID
Trạng thái tiến trình: new, ready, running, waiting,end
Program counter: Địa chỉ của lệnh kế tiếp sẽ thực thi
Các thanh ghi CPU
Thông tin dùng để định thời CPU : priority...
Thông tin bộ nhớ : base/limit register, page tables
Thông tin thống kê: CPU time, time limits
Thông tin trạng thái I/O: danh sách thiết bị I/O được cấp phát, danh sách các file đang mở..
Con trỏ ( pointer) đến PCBs khác
PCB đơn giản phụ vụ như kho chứa cho bất cứ thông tin khác nhau từ quá
trình này tới quá trình khác
6 13
Khi có yêu cầu tài nguyên mà chưa được đáp ứng, tiến trình được đưa vào hàng đợi tài nguyên
• Cáctiếntrìnhdichuyểngiữahàngđợikhácnhau
• Tiếntrìnhmớitạo,đượcđặttronghàngđợisẵnsàng,vàđợi
cho tới khi được lựa chọn để thực hiện
6 20
Bộ điều phối
Lựa chọn tiến trình trong các hàng đợi
• Điều phối công việc (Job scheduler; Long – term
scheduler)
• Điều phối CPU (CPU scheduler; short-term
scheduler)
• Swap tiến trình ( Medium – term scheduler)
6 22
1. Tiến Trình
2. Luồng(thread)
3. Điều phối CPU
4. Tài nguyên găng và đồng bộ tiến trình 5. Bế tắc và xử lý bế tắc
1
Process Q
While(1){ Receive(P,Msg); PrintLine(Msg); ReadLine(Msg); Send(P,Msg);
}
Vấn đề nhận Msg
• Blocking Receive • Non-blocking
Receive
Giải quyết
Thực hiện song song Receive & Send
Process P
While(1){ ReadLine(Msg); Send(P,Msg); Receive(P,Msg); PrintLine(Msg); }
2. Luồng (Thread)
6 18
2. Luồng (Thread)
Là đơn vị sử dụng CPU cơ bản gồm
Định danh luồng (ID Thread)
Bộ đếm chương trình (Program Computer) Tập các thanh ghi (Registers)
Không gian stack
Chia sẻ cùng các luồng khác trong cùng một tiến trình Đoạn mã lệnh
Đoạn dữ liệu ( đối tượng toàn cục)
Các tài nguyên hệ điều hành khác ( file đang mở)
Các luồng có thể thực hiện cùng đoạn mã với ngữ cảnh ( Tập thanh ghi, Bộ đếm chương trình , stack) khác nhau
Còn được gọi là tiến trình nhẹ (LWP: Lightweight Process) Một tiến trình có ít nhất là một luồng
6 19
Định nghĩa
Thời gian chuyển đổi ngữ cảnh
Chia sẻ bộ nhớ
Giao tiếp
Khi bị chặn
Tiêu thụ tài nguyên
Sự phụ thuộc
Chia sẻ dữ liệu và code
Cách hệ điều hành nhìn nhận
Thời gian tạo
Thời gian chấm dứt
6
So sánh luồng với tiến trình
Tiêu chí
Tiến trình
Tiến trình là một chương trình đang được thực thi, tức là một chương trình đang hoạt động.
Các tiến trình đòi hỏi nhiều thời gian hơn để chuyển đổi ngữ cảnh vì chúng nặng hơn.
Các tiến trình hoàn toàn độc lập và không chia sẻ bộ nhớ.
Giao tiếp giữa các tiến trình đòi hỏi nhiều thời gian hơn giữa các luồng.
Nếu một tiến trình bị chặn, các tiến trình còn lại có thể tiếp tục thực thi.
Tiến trình yêu cầu nhiều tài nguyên hơn luồng.
Các tiến trình riêng lẻ độc lập với nhau.
Các tiến trình có dữ liệu và code segment độc lập.
Tất cả các tiến trình khác nhau được hệ điều hành xử lý riêng biệt.
Các tiến trình đòi hỏi nhiều thời gian hơn để tạo.
Các tiến trình yêu cầu nhiều thời gian hơn để chấm dứt.
Luồng
Luồng là một tiến trình gọn nhẹ có thể được quản lý độc lập bởi một bộ lập lịch.
Các luồng yêu cầu ít thời gian hơn để chuyển đổi ngữ cảnh vì chúng nhẹ hơn tiến trình.
Một luồng có thể chia sẻ một số bộ nhớ với các luồng ngang hàng của nó.
Giao tiếp giữa các luồng yêu cầu ít thời gian hơn giữa các quá trình.
Nếu một luồng cấp người dùng bị chặn, tất cả các luồng ngang hàng của nó cũng bị chặn.
Luồng thường cần ít tài nguyên hơn các tiến trình.
Luồng là các phần của một tiến trình và do đó chúng mang tính phụ thuộc.
Một luồng chia sẻ data segment, code segment, file, v.v... với các luồng ngang hàng
Tất cả các luồng ngang hàng cấp người dùng được hệ điều hành coi như một tác vụ duy nhất.
Các luồng yêu cầu ít thời gian hơn để tạo.
Luồng yêu cầu ít thời gian hơn để kết thúc.
20
2. Luồng (Thread)
Có 2 loại luồng cơ bản:
Luồng mức người dùng (User – Level Threads) Luồng mức hệ thống (Kernel - Level Threads)
6 22
•
•
Luồng mức người dùng (User – Level Threads)
Quản lý các luồng được thực hiện bởi chương trình ứng dụng Nhân hệ thống không biết gì về sự tồn tại luồng
• Điều phối tiến trình như một đơn vị duy nhất
• Gán cho mỗi tiến trình một trạng thái duy nhất
• Sẵn sàng, chờ đợi, thực hiện,..
Chương trình ứng dụng được lập trình theo mô hình đa luồng bởi sử dụng thư viện luồng
• Thư viện hỗ trợ tạo, hủy bỏ, truyền thông điệp giữa các luồng điều phối, lưu trữ, khôi phục trạng thái (context) luồng ,..
Ưu điểm
• Nhanh chóng trong tạo và quản lý luồng
Nhược điểm
• Khi một luồng rơi vào trạng thái chờ đợi, tất cả các luồng trong cùng tiến trình
bị chờ đợi theo =>Không tận dụng được ưu điếm của mô hình lập trình đa luồng
•
•
•
6 23
6 32
•
•
Tồn tại một phương thức run(), sẽ được thực hiện trên JVM Luồng được thực hiện bởi gọi phương thức start()
• Cung cấp vùng nhó và khởi tạo luồng mói trong máy ảo Java
• Gọi tói phương thức run()
•
••
Được cài đặt bởi
• Mở rộng lóp Thread (Thread class)
• Cài đặt giao diện có thê thực thi được (Runnable interíace)
Được quản lý bởi máy ảo Java Ụava Virtual Machine) Các trạng thái có thể
6 34
6 35
Trường hợp 1
Shared int y=1
Thread T1 Thread T2 x y+1 y2
yy*2
x=?
6 37
Trường hợp 2
Shared int y=1
Thread T1 Thread T2 x y+1 y2
yy*2
x=?
6 38
Trường hợp 3
Shared int y=1
Thread T1 Thread T2 x y+1 y2
yy*2
x=?
Kết quả thực hiện các luồng song song phụ thuộc trật tự truy nhập biến dùng chung giữa chúng
6 39
1. Tiến Trình
2. Luồng
3. Điều phối CPU
4. Tài nguyên găng và điều độ tiến trình 5. Bế tắc và xử lý bế tắc
1
1. Tiến Trình
2. Luồng
3. Điều phối CPU
4. Tài nguyên găng và điều độ tiến trình 5. Bế tắc và xử lý bế tắc
2
3.1. Các khái niệm
Hệ thống có một processor Chỉ có một tiến trình được thực hiện tại một thời điểm
Tiến trình được thực hiện (chiếm dụng VXL) có thể bị đẩy ra trong một số tình huống.
Hệ đơn chương trình: CPU không được sử dụng =>Lãng phí
Hệ đa chương trình: cố gắng sử dụng CPU (đang rảnh rỗi) cho các tiến trình khác (đang chờ đợi)
Cần nhiều tiến trình sẵn sàng trong bộ nhớ tại một thời điểm
Khi một tiến trình chạy xong đoạn mã của mình, hệ điều hành lấy lại processor
để phân cho tiến trình khác
Điều phối processor quan trọng với hệ điều hành đa nhiệm
Luân chuyển CPU giữa các tiến trình —> khai thác hệ thống hiệu quả hơn Điều phối processor là nền tảng trong thiết kế hệ điều hành
5
Xét ví dụ
Bài toán: Có 3 process P1, P2, P3 với thời gian CPU cần thực hiện tương ứng là 24, 3, 5. Thời gian yêu cầu CPU thực hiện (thời gian nhập) lần lượt là 0,5,7.
Process
T thực hiện
T nhập
P1
24
0
P2
3
5
P3
5
7
Ta sẽ xem xét bài toán trên với các phương pháp lựa chọn tiến trình cụ thể.
15
SJF
Ưu điểm:
Giải thuật được xem là tối ưu, thời gian chờ đợi trung
bình giảm
Tận dụng hết năng lực của CPU
Nhược điểm:
Cài đặt thuật toán phức tạp, tốn nhiều xử lý cho quá trình
quản lý.
Giải thuật SJF có thể trưng dụng hoặc không trưng dụng CPU, dẫn tới giải thuật này có nhiều dị bản khác nhau và sẽ tối ưu hay không tối ưu phụ thuộc vào
trưng dụng CPU.
22
Ví dụ
Cho 3 tiến trình với các dữ liệu như sau:
Process
T thực hiện
T nhập
Quyền ưu tiên
P1
24
0
1
P2
3
5
2
P3
5
7
3
Quyền ưu tiên 3>2>1
27
Multilevel feedback
Trong phương pháp sử dụng quyền ưu tiên các tiến trình có mức ưu tiên thấp rất dễ rơi vào tình trạng “đói” CPU. Để khắc phục tình trạng này người ta xây
dựng phương pháp sử dụng nhiều mức ưu tiên với ý tưởng sau mỗi lần sử dụng CPU mức ưu tiên của tiến trình sẽ giảm đi.
33
Bài tập
Bài 1: Xét tập các tiến trình sau (với thời gian yêu cầu CPU và độ ưu tiên kèm theo)
Tiến trình
T thực hiện
T nhập
Độ ưu tiên
P1
10
0
3
P2
1
1
1
P3
2
2
3
P4
1
3
4
P5
5
4
2
a)Cho biết kết quả điều phối hoạt động của các tiến trình trên theo thuật toán FIFO, SJF, điều phối theo độ ưu tiên độc quyền (độ ưu tiên 4 > 3 > ...) và
RR (quantum=2).
b)Cho biết thời gian lưu lại trong hệ thống (turnaround time) của từng tiến trình trong từng thuật toán điều phối ở câu a.
c)Cho biết thời gian chờ trong hệ thống (waiting time) của từng tiến trình trong từng thuật toán điều phối.
d)Thuật toán điều phối nào trong các thuật toán ở câu a cho thời gian chờ trung bình là cực tiểu ?
34
Vấn đề
Điều phối phức tạp hơn so với trường hợp có một VXL Vấn đề chia sẻ tải
Mỗi VXL có một hàng đợi sẵn sàng riêng
Tồn tại VXL rảnh rỗi với hàng đợi rỗng trong khi VXL khác
phải tính toán nhiều
Hàng đợi sẵn sàng dùng chung
Vấn đề dùng chung cấu trúc dữ liêu (hàng đợi) :
Một tiến trình được lựa chọn bởi 2 processors hoặc một tiến trình bị thất lạc trên hàng đợi
Đa xử lý không đối xứng
Chỉ có một processor truy nhập hàng đợi hủy bỏ vấn đề dùng
chung cơ sở dữ liệu
Có thể tắc nghẽn tại một processor
1. Tiến Trình
2. Luồng
3. Điều phối CPU
4. Tài nguyên găng và điều độ tiến trình
5. Bế tắc và xử lý bế tắc
1
Khái niệm
• Trong hệ đa chương có nhiều process hoạt động song hành, mỗi process có 1 không gian làm việc độc lập, không ai có thể truy xuất trực tiếp không
gian làm việc của mỗi process
• Khi 2 hay nhiều process cần trao đổi dữ liệu ta cần cung cấp cơ chế cho chúng. Có 2 cơ chế giao tiếp chính giữa những process là :Truy xuất bộ nhớ và
gửi/nhận thông điệp.
• Truy xuất bộ nhớ dùng chung là một trong nhiều hoạt động gây ra tương tranh. Như vậy ở đây bộ nhớ chung là một dạng tài nguyên “Găng”
5
Định nghĩa
• Tài nguyên : Tất cả những gì cần thiết cho thực hiện tiến trình
• Tài nguyên găng:
• Tài nguyên hạn chế về khả năng sử dụng chung cần đồng thời cho
nhiều tiến trình
• Tài nguyên găng có thể là thiết bị vật lý hay dữ liệu dùng chung
• Vấnđề
• Dùng chung tài nguyên găng có thể dẫn đến không đảm bảo tính
toàn vẹn dữ liệu
Đòi hỏi cơ chế đồng bộ hóa các tiến trình
6
•
Yêu cầu của chương trình điều độ
Loại trừ lẫn nhau (Mutual Exclusion) : Mỗi thời điểm, tài nguyên găng không phải phục vụ một số lượng tiến trình vượt quá khả năng của nó
• Một tiến trình đang thực hiện trong đoạn găng (sử dụng tài nguyên găng) Không một tiến trình nào khác được quyền vào đoạn găng
Tiến triển (Progress) Tài nguyên găng còn khả năng phục vụ và tồn tại tiến trình muốn vào đoạn găng thì tiến trình đó phải được sử dụng tài nguyên găng
Chờ đợi hữu hạn (Bounded Waiting) Nếu tài nguyên găng hết khả năng phục vụ và vẫn tồn tại tiến trình muốn vào đoạn găng, thì tiến trình đó phải được xếp
hàng chờ đợi và sự chờ đợi là hữu hạn
•
•
8
4.1. Khái niệm
4.2. Các phương pháp giải quyết bài toán tới hạn
9
Quy ước
• Có 2 tiến trình P1&P2 thực hiện đồng thời
• Các tiến trình dùng chung một tài nguyên găng
• Mỗi tiến trình đặt đoạn găng ở đầu, tiếp theo là phần còn lại
• Tiến trình phải xin phép trước khi vào đoạn găng {phần vào}
• Tiến trình khi thoát khỏi đoạn găng thực hiện {phần ra}
• Cấu trúc tổng quát của một tiến trình
Repeat
Phần vào
{Đoạn găng của tiến trình}
Phần ra
{Phân còn lại của tiến trình}
Until false
10
Sơ đồ điều độ
Test and Set
Var l1, l2, g: Integer; BEGIN
g := 0; PARBEGIN
TT1: Repeat l1 := 1;
W hile l1 = 1 do TS(l1); {Đoạn găng TT1}
g := 0;
{Phần còn lại của TT1}
Until false;
TT2: Repeat l2 := 1;
W hile l2 = 1 do TS(l2); {Đoạn găng TT2}
g := 0;
{Phần còn lại của TT2}
Until false
PAREND END.
g
01
1
1
10
111
l1
10
11
1
l2
11
11
10
17
Semaphore
Ý tưởng:
Mỗi tài nguyên Găng được biểu diễn bởi 1 biến nguyên dương s. Đa
số các tài nguyên găng đều có khả năng phục vụ bằng 1 (s=1)
Tồn tại 2 lệnh máy làm thay đổi giá trị của s.
P(s) s-1. If s<0 then đưa TT vào hàng đợi
V(s)s+1. If s=<0 then kích hoạt tiến trình đang xếp hàng.
19
Semaphore
Var s:Integerl BEGIN
s := 1; PARBEGIN
TT1:Repeat P(s);
TT1 vào
0
S=1
-1 TT1 chờ TT2 vào
0
{Đoạn găng TT1} V(s);
{Phần còn lại TT1}
Until false;
TT2:Repeat P(s);
-1
{Đoạn găng TT2} V(s);
{Phần còn lại TT2}
Until false
PAREND END.
TT2 chờ
0
TT1 vào
20
Semaphore
Đặc điểm: Mỗi tiến trình chỉ phải kiểm tra quyền vào đoạn găng 1 lần. Sau đó nó vào đoạn găng hoặc chờ tại hàng đợi. Trường hợp phải chờ ở hàng đợi nó sẽ
không phải làm gì mà sẽ chờ tiến trình trong đoạn găng đánh thức khi nó ra khỏi hàng đợi.
21
1. Tiến Trình
2. Luồng
3. Điều phối CPU
4. Tài nguyên găng và điều độ tiến trình
5. Bế tắc và xử lý bế tắc
22
23
Bế tắc (Deadlock)
Ví dụ 2 tiến trình P1 và P2 cùng sử dụng các tài nguyên r1 và r2 được điều khiển bởi 2 đèn hiệu S1 và S2. Tại mỗi thời điểm, mỗi tài nguyên chỉ phục vụ hoạt
động của 1 tiến trình.
P1 Thời điểm P2 Wait(S1) T1 Wait(S2) ... T2 ... Wait(S2) T3 ...
T4 Wait(S1)
T1: P1 yêu cầu được cấp r1, P2 yc cấp r2
T2: 2 tiến trình được cấp tài nguyên và đi vào hoạt động
T3: P1 yêu cầu hệ thống cấp tài nguyên r2, tuy nhiên r2 đang được P2
sử dụng nên P1 phải chờ r2
T4: P2 yêu cầu hệ thống cấp tài nguyên r1, tuy nhiên r1 đang được P1 sử dụng nên P2 phải chờ r1
Như vậy sau T4 cả 2 tiến trình rơi vào trạng thái chờ vô hạn.
Bế tắc
Khái niệm: Bế tắc là trạng thái khi hai hay nhiều tiến trình cùng chờ đợi một số sự kiện nào đó và nếu không có tác động từ bên ngoài thì sự chờ đợi đó là vô
hạn.
Điều kiện xảy ra bế tắc: Có tài nguyên Găng
Có hiện tượng giữ và đợi: Có một tiến trình đang giữ một số tài nguyên và đợi tài nguyên bổ sung đang được giữ bởi các tiến trình khác.
Không có hệ thống phân phối lại tài nguyên: Việc sử dụng tài nguyên Găng không bị ngắt
Có hiện tượng chờ đợi vòng tròn
25
Bế tắc
Các biện pháp phòng chống bế tắc: Để phòng chống bế tắc, cần đảm bảo sao cho 4 điều kiện gây bế tắc không đồng thời xảy ra:
Loại bỏ tài nguyên Găng: mô phỏng tài nguyên Găng bằng các tài nguyên có thể dùng chung được (áp dụng kỹ thuật SPOOL)
Loại bỏ yếu tố giữ và đợi:
Tiến trình yêu cầu tất cả tài nguyên 1 lần Chỉ xử lý khi đủ tài nguyên cần thiết
Xây dựng hệ thống ngắt tài nguyên: Nếu tiến trình yêu cầu tài nguyên bổ sung mà hệ thống không đáp ứng được thì mọi tài nguyên của nó sẽ bị giải phóng để
phục vụ tiến trình khác.
Loại bỏ yếu tố giữ và đợi
27
Bế tắc
Dãy tiến trình an toàn: Cho dãy tiến trình P1, P2, P3, ... Pn song hành. Dãy tiến trình được gọi là an toàn (Safe Process) nếu với mọi tiến trình Pi, tài nguyên
mà Pi cần có thể được thỏa mãn bởi các tài nguyên khả dụng của hệ thống và tài nguyên do các tiến trình Pj đang giữ với điều kiện j<i
Hệ thống ở trạng thái an toàn tại một thời điểm nếu dãy tiến trình song hành tại thời điểm đó có thể được sắp xếp thành 1 dãy an toàn.
28
Bế tắc
Xét một hệ thống có 12 tài nguyên là 12 băng từ và 3 tiến trình P0, P1, P2 với các yêu cầu cấp phát:
• P0 yêu cầu nhiều nhất 10 băng từ
• P1 yêu cầu nhiều nhát 4 băng từ
• P2 yêu cầu nhiều nhất 9 băng từ
Giả sử tại một thời điểm T0, P0 đang chiếm 5 băng từ, P1 và P2 mỗi tiến trình chiếm 2 băng từ. Như vậy có 3 băng từ rỗi
29
Bế tắc
• Tại thời điêm t0 hệ thống ở trạng thái an toàn
• Thứ tự <P1, P0, P2> thỏa mãn điều kiện an toàn
• Giả sử ở thời điểm t1 P2 có yêu cầu và được cấp phát 1
băng từ: Hệ thống không ở trạng thái an toàn nữa... quyết định cấp tài nguyên cho P2 là sai.
30
Bế tắc
31
Bế tắc
Ví dụ về dãy tiến trình an toàn: Có 5 tiến trình P0-P4 và 3 kiểu tài nguyên A, B, C ở trạng thái như sau:
P
Đang có
Cần tối đa
Cần thêm
Hệ thống còn
A
B
C
A
B
C
A
B
C
A
B
C
P0
3
0
2
7
0
3
4
0
1
1
2
2
P1
2
1
0
9
2
2
7
1
2
P2
0
1
1
2
5
3
2
4
2
P3
1
2
4
4
3
2
3
1
0
P4
2
0
0
3
2
2
1
2
2
A. Tìm dãy an toàn của các tiến trình trên
B. Giả sử P4 yêu cầu tài nguyên (1, 2, 2). Hỏi có thể phân
phối cho P4 được không? C. Tương tự câu B với P3?
Trường Đại học Xây Dựng Khoa Công nghệ Thông tin
1
3.2.2 Kỹ thuật phân vùng tĩnh một hàng chờ duy nhất
HĐH được load vào vùng nhớ thấp của Ram
Phần trống còn lại của Ram được chia thành nhiều phân vùng kích thước tăng dần (10K-20K-30K...)
Chỉ có 1 hàng chờ duy nhất cho các ứng dụng
Khi 1 phân vùng rỗng, HĐH sẽ chọn 1 tiến trình trong hàng chờ để phục vụ.
16
Các chiến lược cấp phát bộ nhớ First-Fit: Cấp khối nhớ đầu tiên thỏa mãn
Best-Fit: Cấp phát khối nhớ bé nhất đủ để đáp ứng cho tiến trình. Phải duyệt toàn bộ danh sách
Worst-Fit: Cấp phát khối nhớ lớn nhất đáp ứng được tiến trình. Phải duyệt toàn bộ danh sách
Như vậy: First-Fit và Best-Fit tốt hơn Worst-Fit về vấn đề tốc độ và tận dụng bộ nhớ
17
Quản lý bộ nhớ ảo
Việc quản lý bộ nhớ ảo như vậy sẽ gây ra vấn đề về tốc độ thực hiện chương trình do phải chờ việc giải phóng/nhập dữ liệu vào bộ nhớ. Để khắc phục người
ta thực hiện quản lý bộ nhớ ảo bằng phần cứng. Đơn vị quản lý bộ nhớ ảo là MMU (Memory Management Unit).
21
Quản lý bộ nhớ
Trong MMU có thanh ghi Relocation(định vị lại) sử dụng để tính toán địa chỉ vật lý từ địa chỉ ảo của 1 tiến trình của người sử dụng
22
Quản lý bộ nhớ
Có 3 phương pháp quản lý bộ nhớ ảo khác nhau:
Quản lý bộ nhớ ảo theo phân trang (Paging)
Quản lý bộ nhớ ảo theo phân đoạn (Segmentation)
Quản lý bộ nhớ ảo theo phân trang và phân đoạn (Paging and Segmentation)
23
Nguyên lý:
3.4 Phân trang (Paging)
Hệ điều hành chia bộ nhớ ảo chương trình thành nhiều đơn vị có kích thước bằng nhau, mỗi đơn vị này là 1 trang. Kích thước trang ảo = 2i (256, 512, 1K,
2K,...) (Page)
Bộ nhớ Ram cũng được chia thành nhiều đơn vị quản lý, mỗi đơn vị được gọi là trang thật (frame) và có kích thước bằng trang ảo.
Trang thật là nơi chứa trang ảo khi cần thiết.Tại 1 thời điểm 1 trang thật chứa duy nhất 1 trang ảo, nhưng theo thời gian nó có thể chứa nhiều trang ảo khác
nhau.
Hệ điều hành quản lý việc ánh xạ trang ảo và trang thật qua bảng trang (PCB – Page Control block)
24
Phân trang
Ví dụ ánh xạ giữa địa chỉ ảo và địa chỉ thật.
Máy tính RAM 32KB được chia thành 8 trang thật, mỗi trang kích thước 4KB.
Chương trình kích thước 64KB được chi thành 16 trang ảo, kích thước 4KB
Hiện 8 trang ảo đang chiếm hết Ram
25
Phân trang
Để quản lý việc ánh xạ trang ảo sang trang thật hệ điều hành sử dụng một bảng đặc tả trang ảo (bảng trang-page table), bảng trang có số phần tử bằng số trang
ảo của chương trình tương ứng, mỗi phần tử của bảng có cấu trúc như sau:
27
Phân trang
Chuyển đổi từ địa chỉ ảo sang địa chỉ thật:
Mỗi địa chỉ được sinh ra bởi CPU được chia thành 2 phần: Page number p (số trang) và Page offset d (số thứ tự trong trang).
Không gian ảo kích thước 2m , kích thước trang ảo 2n Địa chỉ ảo có m bit, sử dụng m-n bit cao làm số hiệu
trang và n bit thấp làm offset
m-n n
Page number (p)
Page offset (d)
28
Ví dụ:
Giả sử kích thước luận lý là 32 bytes, kích thước trang thật là 4 bytes => có 8 trang thật đánh số từ 0->7.
Kích thước page number là 5-2=3 bit, kích thước page offset là 2bit
(m=5, n=2, p=8, d=4)
Phân trang
Page number
Page offset
0
A
B
C
D
.....
.....
7
A
B
C
d
29
Phân trang
Khi chương trình được nạp vào bộ nhớ, hệ thống xây dựng 1 bảng quản lý trang PCB. Địa chỉ của bảng PCB được nạp vào thanh ghi Rp. Mỗi phần tử của
PCB gồm 2 phần:
D: cho biết trang đã được nạp vào bộ nhớ hay chưa.
Ap: là địa chỉ trang vật lý chứa trang logic đang xét. Nếu D=0,
Ap có thể chứa thông tin cần thiết để tìm trang ở bộ nhớ ngoài.
PCB = {Phần tử}
DP
AP
Dấu hiệu nạp trang:
0 - Chưa nạp, 1 - đã nạp.
Địa chỉ nạp trang
30
Phân trang
Để truy nhập dữ liệu hệ thống thực hiện như sau:
B1: lấy nội dung thanh ghi Rp + p để truy nhập tới phần tử thứ p trong PCB. Nếu D=0 thì hệ thống nạp trang vào bộ nhớ. Khi đó D=1 và Ap sẽ chứa địa chỉ
trang trong bộ nhớ vật lý.
B2: Hệ thống lấy địa chỉ trang Ap ghép với d tạo ra địa chỉ vật lý của dữ liệu đã đưa vào đó và truy nhập tới địa chỉ vừa tính được để truy xuất dữ liệu.
31
Ví dụ:
Phân trang
Rp = +
pd
123000
81
532
400
1
123
480 481
RAM
123532
400
Trang 81
RAM
32
... ...
Phân trang
Xét một không gian địa chỉ có 8 trang, mỗi trang có kích thước 1KB, ánh xạ vào bộ nhớ vật lý có 32 khung trang. Hỏi:
a) Địa chỉ logic và vật lý gồm bao nhiêu bit?
b) Bảng trang có bao nhiêu mục?
33
FIFO
Dùng 1 danh sách chứa các trang thật đã dùng theo thứ tự trang nào mới nhất sẽ đưa xuống cuối danh sách, các trang dùng cũ nhất sẽ đứng đầu danh sách. Khi
cần trang thật HĐH sẽ giải phóng các trang ở đầu danh sách trước.
35
FIFO
Như đã biết HĐH thường được nạp vào Ram đầu tiên do đó Phương pháp này rất dễ giải phóng các trang chưa module hệ điều hành.
Để khắc phục nhược điểm này ta sử dụng phương pháp cơ hội lần 2 với bit R (0/1) để xác định các trang dùng cũ nhất và không được truy xuất trong thời gian
gần.
36
Cơ hội lần 2
Biến R (0/1) được sử dụng như sau: Định kỳ R được xóa về 0
Khi được truy xuất R được set lên 1
Khi cần giải phóng trang, hệ điều hành tìm trang đầu danh sách và kiểm tra biến R của nó.
Nếu R=1 thì tha nó, set R=0 và tìm đến phần tử tiếp theo. Nếu R=0 thì giải phóng
Như vậy trang được giải phóng là trang không được truy xuất gần đây và cũ nhất.
37
Phân đoạn (Segmentation) Bộ nhớ quản lý các segment này bởi SCB.
Mỗi phần tử trong SCB đặc trưng bởi 3 trường tin:
D: cho biết module đã nạp vào bộ nhớ hay chưa( D=0 chưa nạp, D=1
đã nạp)
A: Địa chỉ của vùng nhớ sẽ định vị module L: Kích thước của module
Dấu hiệu nạp mô đun:
0 - Chưa nạp, 1-đãnạp.
Địa chỉ nạp mô đun
D
SCB = {Phần tử}
A
l
Độdàimôđun - Cấp phát bộ nhớ,
-Bảovệ,
44