Nội dung chính của bài giảng Hệ điều hành Chương 2 Quản lý tiến trình nhằm trả lời cho câu hỏi Vì sao muốn xử lý đồng thời nhiều công việc trên máy tính? Việc chuyển trạng thái hệ thống tính toán phải dựa vào một sự kiện phát sinh trong hệ thống gọi là hiện tượng ngắt.
Trang 1CHƯƠNG 2
Quản lý tiến trình
Trang 21 TỔNG QUAN VỀ TIẾN TRÌNH
Trang 3 Vì sao muốn xử lý đồng thời nhiều công việc trênmáy tính ?
Trang 4 Vì sao muốn xử lý đồng thời nhiều công việc trênmáy tính ?
Xử lý đồng thời để tăng tốc độ xử lý
Trang 5Xử lý đồng hành, những khó khăn ?
- Tài nguyên giới hạn, ứng dụng
“vô hạn”
- Nhiều hoạt động đan xen
??? Phân chia tài nguyên ?
??? Chia sẻ tài nguyên ?
??? Bảo vệ?
Excel
Visual C++
CDplayer Winword
Trang 6Giải pháp
HĐH: “Ai cũng có phần khi đến lượt mà!”
-“Chia để trị”, cô lập các hoạt động.
- Mỗi thời điểm chỉ giải quyết 1 yêu cầu.
- Aûo hoá tài nguyên: biến
Trang 71 Tổng quan về tiến trỡnh
Trạng thái của một hệ thống tính toán tại một thời
điểm đ-ợc hiểu là một bộ thông tin của tất cả cácthành phần trong hệ thống tính toán
Một dãy chuyển trạng thái của hệ thống tính toán kýhiệu là S0, S1, Sn trong đó S0 là trạng thái đầu, Sn làtrạng thái kết thúc thì ta gọi đó là một tiến trình
Việc chuyển trạng thái hệ thống tính toán phải dựa vào một sự kiện phát sinh trong hệ thống gọi
là hiện t-ợng ngắt.
S 0 S 1 S 2 S 3 S 4 S 5 S n-1 S n S n+1 .
A
B
Trang 8Khái niệm tiến trình (process)
Tiến trình là một bộ phận của một chương trình đang thực hiện, đơn vị thực hiện tiến trình là processor.
Tiến trình sở hữu một con trỏ lệnh, một con trỏ stack, một tập các thanh ghi, một khơng gian địa chỉ trong bộ nhớ chính và tất cả các thơng tin cần thiết khác để tiến trình cĩ thể hoạt động được.
lần sẽ tạo ra 2 tiến trình khác nhau:
Microsoft Word – [Bai tap1.doc]
Microsoft Word – [Bai tap2.doc]
8
Trang 9Khái niệm khác
Saltzer: Tiến trình là một chương trình do một
processor logic thực hiện.
Horning & Rendell: Tiến trình là một quá trình
chuyển từ trạng thái này sang trạng thái khác dưới tác động của hàm hành động, xuất phát
từ một trạng thái ban đầu nào đó.
Trang 10Các loại tiến trình
Có thể chia thành hai loại: tiến trình tuần tự (MS_DOS)
và tiến trình song song (uniprocessor và multiprocessor)
Tiến trình tuần tự là các tiến trình mà điểm khởi tạo của
nó là điểm kết thúc của tiến trình trước đó
Tiến trình song song là các tiến trình mà điểm khởi tạocủa tiến trình này nằm ở thân của các tiến trình khác:
Trang 11Ph©n lo¹i tiÕn tr×nh song song
z
A B
C
Z
a b c
z
I
I
A B
C
Z
b c
z
A B
C
Z
a b c
z
Độc lập Quan hệ
thông Phân cấp
Đồng mức
Trang 13Các loại tiến trình
Nếu nhìn ở góc độ người dùng thì có 2 loại tiến trình:
Tiến trình của hệ điều hành: Được chạy ở chế độ đặcquyền và được truy xuất đến các vùng dữ liệu đượcbảo vệ của hệ thống
Tiến trình của chương trình ứng dụng: Chạy ở chế độkhông đặc quyền và không được truy xuất đến các dữliệu được bảo vệ một cách trực tiếp mà phải thôngqua lời gọi hệ thống
Trang 14Mô hình tiến trình
Về nguyên tắc, hệ thống phải có nhiều processor, mỗi processor có nhiệm vụ thực hiện một chương trình.
Tuy nhiên, mong muốn là thực hiện sự đa
chương trên các hệ thống chỉ có một processor.
Tức là, có thể có nhiều chương trình hoạt động đồng thời (concurrence) Sử dụng mô hình tiến trình để tạo ra sự song song giả hay tạo ra các processor logic từ processor vật lý.
14
Trang 15 Chế độ đa ch-ơng trình phân chia thời gian mỗi ng-ời sử dụng có cảm giác nh- chỉ có một mình mình là ng-ời duy nhất sử dụng toàn
bộ hệ thống.
Tất cả các hệ điều hành thực hiện song song
đều do một processor của hệ thống – processor vật lý điều khiển.
Ng-ời sử dụng đánh giá hoạt động processor trên cơ sở quan sát tiến trình của mình thực hiện -> Processor ng-ời sử dụng quan sát và
đánh giá: processor lôgic
Processor logic gắn với tiến trình.
Mụ hỡnh tiến trỡnh
Trang 16 Kém hiệu quả vì tài nguyên processor bị lãng phí nhiều.
Nâng cao hiệu quả khai thác của toàn hệ thống nóichung:
Phân chia bộ nhớ
Phân phối thời gian của processor cho nhiều tiến trình đồng thời tồn tại.
Đối với mỗi tiến trình, tốc độ thực hiện sẽ bị giảm :
Thời gian truy nhập bộ nhớ tăng
Không đ-ợc quyền sử dụng processor liên tục.
Đối với ng-ời sử dụng: thay đổi tâm lý khai thác hệthống
Trang 17Các vấn đề cần phải giải quyết đối với các hệ thống nhiều processor
a)Số l-ợng processor logic nên tạo ra là bao nhiêu?
b) Độ dài khoảng thời gian gắn liên tục processor vật lý cho một processor lôgic là bao nhiêu thì hợp lý?
c)Sau khi một processor lôgic hết quyền sử dụng processor vật lý thì cần chọn tiến trình nào để phân phối processor vật lý?
Các cách giải quyết khác nhau ba vấn đề nêu trên tạo ra các chiến l-ợc điều độ tiến trình khác
Trang 18 Hệ điều hành cấp processor cho một tiến trình trong
số các tiến trình ở trạng thái sẵn sàng, sau mộtkhoảng thời gian hệ điều hành thu hồi processor củatiến trình này để cấp cho một tiến trình sẵn sàngkhác
Khoảng thời gian đó là rất nhỏ tạo ra cảm giác cáctiến trình đều sở hữu processor song song giả
18
Trang 19Mô hình tiến trình
Ví dụ:
Giả sử trong hệ thống có 3 tiến trình sẵn sàng P1, P2, P3 thì quá trình chuyển processor giữa 3 tiến trình này có thể minh họa như sau:
t2 P1: bị thu hồi processor (khi chưa kết thúc)
P3: được cấp processor t3 P3: bị thu hồi processor (khi chưa kết thúc)
P1: được cấp processor t4 P1: kết thúc và trả lại processor
P2: được cấp processor t5 P2: kết thúc và trả lại processor
P3: được cấp processor t6 P3: kết thúc và trả lại processor
Trang 20Mô hình tiến trình
Ví dụ: Hình sau đây minh họa quá trình thực hiện
của 3 tiến trình P1, P2, P3 ở trên:
Trang 21Mô hình tiến trình
Ưu điểm: Tiết kiệm được bộ nhớ vì không phải nạp tất cả chương trình vào bộ nhớ mà chỉ nạp các tiến trình cần thiết nhất.
Cho phép các chương trình hoạt động song song nên tốc độ xử lý của toàn hệ thống tăng lên và khai thác tối đa thời gian xử lý của processor.
Việc thu hồi processor chuyển cho tiến trình khác
là những vấn đề phức tạp Bộ phận thực hiện chức năng này của hệ điều hành được gọi là bộ điều phối (dispatcher) tiến trình.
Trang 22Mô hình đa tiến trình (MultiProcesses)
Hệ thống là một tập các tiến trình hoạt động đồng thời
Các tiến trình độc lập với nhau => không có sự trao đổi thông tin hiển nhiên…
winword Visual C
CDplayer
Excel
OS
VD: Giờ thi lý thuyết môn Hệ Điều hành
Mỗi sinh viên là một tiến trình :
Cùng làm bài => Hoạt động đồng hành Có bài thi , bút, giấy…riêng => Tài nguyên riêng biệt Độc lập => Không trao đổi (về nguyên tắc)
22
Trang 23nó cũng phải xử lý tuần tự các chỉ thị máy, nó cũng
sở hữu con trỏ lệnh, một tập các thanh ghi, và một không gian stack riêng.
Một tiến trình bao gồm nhiều tiểu trình.
Trang 24Tieåu trình - Thread
Trang 25 Tiểu trình là một đơn vị xử lý cơ bản trong hệ thống, nó hoàn toàn tương tự như tiến trình.
Tức là nó cũng phải xử lý tuần tự các chỉ thị máy của nó, nó cũng sở hữu con trỏ lệnh, một tập các thanh ghi, và một không gian stack riêng.
Một tiến trình đơn có thể gồm nhiều tiểu trình Các tiểu trình trong một tiến trình chia sẻ một không gian địa chỉ chung => có thể chia sẻ các biến toàn cục của tiến trình và có thể truy xuất lên các vùng nhớ stack của nhau.
Tiểu trình
Trang 26PCB vàTCB trong mô hình multithreads
pid
Threads listContext
(Mem, global ressources…)
Scheduling statistic
Relatives( Dad, children)
PCB
tid
State(State, details)Context
(IP, local stack…)
Thread Control BlockTCB
26
Trang 27Lợi ích của Tiểu trình
Đáp ứng nhanh: Cho phép chương trình tiếp tục thực thi khi một bộ phận bị khóa hoặc một hoạt động dài
Chia sẻ tài nguyên: tiết kiệm không gian nhớ
Kinh tế: tạo và chuyển ngữ cảnh nhanh hơn tiến trình
VD: trong Solaris 2, tạo process chậm hơn 30 lần, chuyển chậm hơn 5 lần
Trong multiprocessor: có thể thực hiện song song
Trang 28Ví dụ: Tiểu trình
Mỗi nhóm 2 sinh viên là một tiến trình :
Mỗi sinh viên là một tiểu trình
Cùng làm bài => Hoạt động đồng hành
Cóù bài thực hành chung => Tài nguyênchung
Trao đổi với nhau
28
Trang 29Tiểu trình vs Tiến trình
Tiểu trình: 1 dòng xử lý
Tiến trình:
1 không gian địa chỉ
1 hoặc nhiều tiểu trình
Các tiến trình là độc lập
Các tiểu trình trong cùng 1
tiến trình không có sự bảo vệ lẫn nhau (cần thiết ? ).
P1
int a;
3
Trang 30Phân chia CPU?
1 CPU vật lý: làm thế nào để tạo ảo giác mỗi tiến trình sở hữu CPU riêng của mình ?
Luân chuyển CPU giữa các tiến trình
2 thành phần đảm nhiệm vai trò điều phối:
Scheduler chọn 1 tiến trình
Dispatcher chuyển CPU (processor) cho tiến trìnhđược chọn
CPU
30
Trang 31Scheduler - Nhiệm vụ
Ra quyết định chọn một tiến trình để cấp phát CPU :
Ứng cử viên = {Các tiến trình ready list}
0 tiến trình : CPU rảnh rỗi (idle)!
1 tiến trình : không cần suy nghĩ nhiều, đúngkhông ?
>1 : chọn ai bây giờ ? Cần có thuật toánđiều phối
Trang 32Dispatcher - Nhiệm vụ
Nhiệm vụ của Dispatcher: Chuyển đổi ngữ cảnh
Xét ví dụ
Tiến trình A đang dùng CPU 1 chút thì bị HĐH thu hồi CPU
HĐH cấp CPU cho B dùng 1 chút, HĐH thu hồi lại CPU.
HĐH cấp CPU trở lại cho A.
Giá trị các thanh ghi giữa những lần chuyển đổi CPU?
Kịch bản :
Lưu ngữ cảnh tiến trình hiện hành
Nạp ngữ cảnh tiến trình được chọn kế tiếp
32
Trang 33Phân biệt chương trình và tiến trình
Một chương trình là một thực thể thụ động, chứa đựng các chỉ thị điều khiển máy tính để tiến hành một tác vụ nào đó.
Khi cho thực hiện các chỉ thị này, chương trình chuyển thành tiến trình, là một thực thể hoạt động, với con trỏ lệnh xác định chỉ thị kế tiếp sẽ thi hành, kèm theo tập các tài nguyên phục vụ cho hoạt động của tiến trình.
Trang 342 TỔ CHỨC VÀ QUẢN LÝ TIẾN TRÌNH
Trang 352.1 Trạng thái tiến trình và sự chuyển trạng thái tiến trình
Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện thời của tiến trình tại thời điểm đó.
Nguyên nhân một tiến trình thay đổi trạng thái :
Phải chờ một sự kiện nào đó xảy ra
Đợi một thao tác nhập/xuất hoàn tất
Buộc phải dừng hoạt động do đã hết thời gian xử lý
…
Trang 36ready running
dispatch
interrupt I/O or event
completion
I/O or event wait
waiting
Trang 37Các trạng thái của tiến trình
New (Mới tạo): tiến trình đang được tạo lập
Running (thực hiện): Là trạng thái mà tiến trình đangđược sở hữu processor để hoạt động
Blocked hay waiting (khoá): Là trạng thái mà tiếntrình đang chờ để được cấp phát thêm tài nguyên haychờ một sự kiện xảy ra
Ready : là trạng thái của một tiến trình trong hệ thống
đã có đủ tài nguyên, đang chờ được cấp processor
để bắt đầu thực hiện
Kết thúc (terminated): tiến trình hoàn tất xử lý
Tại một thời điểm, chỉ có một tiến trình có thể nhậntrạng thái running trên một bộ xử lý bất kỳ Trong khi
đó, nhiều tiến trình có thể ở trạng thái blocked hayready
Trang 382.2 Cấu trúc dữ liệu khối quản lý
tiến trình
38
Khối quản lý tiến trình hay 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ê
Trang 39status pid
(4) Thông tin giao tiếp
(5) Thông tin thống kê
(2) Trạng thái trình
(1) Định danh trình
Trang 40Cấu trúc dữ liệu khối quản lý tiến trình
Định danh của tiến trình (1) : giúp phân biệt các tiến trình
Trạng thái tiến trình (2): xác định hoạt động hiện hành của tiến trình.
Ngữ cảnh của tiến trình (3): mô tả các tài nguyên tiến trình đang trong quá trình, hoặc để phục vụ cho hoạt động hiện tại, hoặc để làm cơ sở phục hồi hoạt động cho tiến trình, bao gồm các thông tin về:
Trạng thái CPU: nội dung các thanh ghi, quan trọngnhất là con trỏ lệnh IP lưu trữ địa chỉ câu lệnh kế tiếptiến trình sẽ xử lý Các thông tin này cần được lưu trữkhi xảy ra một ngắt, nhằm có thể cho phép phục hồihoạt động của tiến trình đúng như trước khi bị ngắt
Trang 42Cấu trúc dữ liệu khối quản lý tiến trình
Thông tin giao tiếp (4): phản ánh các thông tin về quan hệ của tiến trình với các tiến trình khác trong hệ thống :
Tiến trình cha: tiến trình tạo lập tiến trình này
Tiến trình con: các tiến trình do tiến trình này tạo lập
Độ ưu tiên : giúp bộ điều phối có thông tin để lựa chọntiến trình được cấp CPU
Thông tin thống kê (5): thống kê về hoạt động của tiến trình
Thời gian đã sử dụng CPU
Thời gian chờ
Các thông tin này có thể có ích cho công việc đánh giátình hình hệ thống và dự đoán các tình huống tươnglai.
Trang 43Lưu đồ chuyển CPU từ tiến trình này sang tiến trình khác
Trang 44Process table
Trang 45Process table
Hệ điều hành lưu con trỏ tới từng PCB của mỗi tiếntrình trong một bảng tiến trình của toàn hệ thốnghoặc từng người dùng
Truy cập nhanh tới các PCB
Khi một tiến trình bị dừng, hệ điều hành loại bỏ tiếntrình khỏi bảng tiến trình và giải phóng tất cả các tàinguyên của tiến trình
Trang 46 Tạo lập tiến trình (create)
Kết thúc tiến trình (destroy)
Tạm dừng tiến trình (suspend)
Tái kích hoạt tiến trình (resume)
Thay đổi độ ưu tiên tiến trình
Trang 473 TÀI NGUYÊN GĂNG VÀ ĐIỀU ĐỘ TIẾN TRÌNH
Trang 483.1 Tài nguyên găng (Critical Resource)
Trong môi trường đa nhiệm dẫn đến dùng chung tàinguyên -> cạnh tranh
Xung đột được thể hiện: Hai tiến trÌnh hoạt động đồngthời cùng ghi vào một không gian nhớ chung (mộtbiến chung) trên bộ nhớ hay hai cùng ghi dữ liệu vàomột file chia sẻ
Những tài nguyên được hệ điều hành chia sẻ chonhiều tiến trÌnh hoạt động đồng thời dùng chung, mà
có nguy cơ dẫn đến sự tranh chấp được gọi là tàinguyên găng
Tài nguyên găng có thể là tài nguyên phần cứng hoặctài nguyên phần mềm, có thể là tài nguyên phân chiađược hoặc không phân chia được
48
Trang 49Tà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
Trang 503.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
50
Trang 51 Trong khoảng thời gian tiến trình sử dụng tài nguyên găng thì ta gọi đó là tiến trình găng.
Một tiến trình có thể chia làm 2 đoạn : đoạn găng và đoạn còn lại.
Trang 522.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
52
Trang 53Điều độ tiến trỡnh qua đoạn găng
Có 2 mức độ điều độ sơ cấp và cao cấp.
ở mức sơ cấp
các lệnh điều độ đ-ợc đặt ngay trong ch-ơng trìnhng-ời dùng: Kỹ thuật khóa trong (đèn hiệu), Kỹ thuậtkiểm tra và xác lập, Kỹ thuật semaphore
Điều độ cao cấp
lệnh điều độ đặt trong thành phần hệ điều hành
ch-ơng trình điều phối công việc và điều phối chính
Ng-ời sử dụng không biết tài nguyên gì và khi nàothuộc loại găng => Hệ thống phải có trách nhiệm kiểmtra nhận biết và điều độ: Dùng ch-ơng trình monitor
Trang 544 TẮC NGHẼN VÀ CHỐNG TẮC NGHẼN
Trang 554.1 Tắc nghẽn (Deadlock)
Tắc nghẽn: Hiện tượng bắt nguồn từ sự xung đột
về tài nguyên của hai hoặc nhiều tiến trình đang hoạt động đồng thời trên hệ thống.
Trang 574.2 §iÒu kiÖn x¶y ra Tắc nghẽn
4 điều kiện cần có thể làm xuất hiện tắc nghẽn:
(Mutual exclusion): Mỗi thời điểm, một tài nguyên không thể chia sẻ được hệ thống cấp phát chỉ cho một tiến trình, khi tiến trình sử dụng xong tài nguyên này, hệ thống mới thu hồi và cấp phát tài nguyên cho tiến trình khác.