Bài giảng Hệ điều hành - Chương 2: Process và Threads (Tiến trình và luồng)

Tiến trình:

 Khái niệm tiến trình

 Lập lịch tiến trình

 Các hoạt động trên tiến trình

 Các tiến trình hợp tác (Cooperating Processes)

 Liên lạc liên tiến trình (Process Communication)

 Luồng( tiến trình mức thấp-tiểu trình):

 Mô tảluồng

 Các mô hình đa luồng

pdf40 trang | Chuyên mục: Hệ Điều Hành | Chia sẻ: dkS00TYs | Lượt xem: 10481 | Lượt tải: 1download
Tóm tắt nội dung Bài giảng Hệ điều hành - Chương 2: Process và Threads (Tiến trình và luồng), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ác tài nguyên của tiến trình cha.
 Tiến trình cha và con không có sự chia sẻ tài nguyên.
 Không gian địa chỉ (Address space)
 Tiến trình con là một bản sao của tiến trinh cha(ex: gọi đệ qui)
 Tiến trình con là một cái mới, chương trình hoàn toàn khác được 
tải vào trong bộ nhớ(ex: gọi hàm con)
 Sự thực hiện (execution)
 Tiến trình cha và con thực hiện đồng thời.
 Tiến trình cha đợi cho đến khi tiến trình con kết thúc.
4-Jun-14 TT. QTM 21
1.3.2. Sự kết thúc tiến trình-
Process Termination
 Tiến trình kết thúc xử lý khi nó hoàn tất chỉ thị cuối cùng và sử dụng 
một lời gọi hệ thống để yêu cầu HĐH hủy bỏ
 Trong quá trình kết thúc:
 Dữ liệu ra từ tiến trình con đến tiến trình cha (qua lệnh wait).
 Tiến trình cha có thể chấm dứt việc thực hiện tiến trình con (abort).
 Tiến trình con dùng quá tài nguyên được phân phối.
 Nhiệm vụ mà tiến trình con thực hiện không còn cần thiết.
 Khi tiến trình kết thúc, HĐH thực hiện các công việc:
 Thu hồi các tài nguyên hệ thống đã cấp phát cho tiến trình
 Hủy tiến trình khỏi tất cả các danh sách quản lý của hệ thống
 Hủy bỏ PCB của tiến trình
 Các tài nguyên được phân phối lại
 Hầu hết các hệ điều hành không cho phép các tiến trình con tiếp tục 
tồn tại nếu tiến trình cha đã kết thúc 
4-Jun-14 TT. QTM 22
1.4. Các tiến trình hợp tác(1)
 Tiến trình độc lập (Independent process):
 Không thể tác động hay chịu tác động bởi sự
thực hiện của tiến trình khác.
 Tiến trình hợp tác (Cooperating process):
 Có thể tác động hoặc chịu tác động bởi sự thực 
hiện của tiến trình khác.
 Vi du: tiến trình này chia sẻ dữ liệu với tiến 
trình khác.
4-Jun-14 TT. QTM 23
1.4. Các tiến trình hợp tác(2)
 Các lợi điểm của tiến trình hợp tác
 Chia sẻ thông tin - Information sharing
 Tăng tốc độ tính toán - Computation speed-up
 Mô-đun hóa - Modularity
 Sự tiện lợi - Convenience (vd người sử dụng cùng thực 
hiện soạn thảo, in ấn, biên dịch song song)
 Mô hình các tiến trình hợp tác: tiến trình sản xuất 
(producer process) tạo ra các thông tin để tiến 
trình tiêu thụ (consumer process) sử dụng.
4-Jun-14 TT. QTM 24
1.5. Liên lạc( giao tiếp) tiến 
trình(1)
 Mỗi tiến trình sở hữu một không gian địa chỉ riêng biệt, nên các 
tiến trình không thể liên lạc trực tiếp dễ dàng mà phải nhờ vào 
các cơ chế do HĐH cung cấp
 Hệ điều hành thường phải tìm giải pháp cho các vấn đề chính 
yếu:
 Liên lạc tường minh hay tiềm ẩn(explicit naming/implicit naming): 
tiến trình có cần phải biết tiến trình nào đang trao đổi hay chia sẻ
thông tin với nó
 Liên lạc theo chế độ đồng bộ hay không đồng bộ(blocking / non-
blocking): khi một tiến trình trao đổi thông tin với một tiến trình 
khác, các tiến trình có cần phải đợi cho thao tác liên lạc hoàn tất rồi 
mới tiếp tục các xử lý khác=>đồng bộ
 Liên lạc giữa các tiến trình trong hệ thống tập trung và hệ thống 
phân tán
 Mỗi HĐH thường đưa ra nhiều cơ chế liên lạc khác nhau, mỗi cơ 
chế có những đặc tính riêng, và thích hợp trong một hoàn cảnh 
chuyên biệt
4-Jun-14 TT. QTM 25
1.6. Phân phối tài nguyên cho 
tiến trình(1)
 Hệ điều hành quản lý nhiều loại tài nguyên khác nhau 
(CPU, bộ nhớ chính, các thiết bị ngoại vi …)
 Mỗi loại cần có một cơ chế cấp phát và các chiến lược cấp phát 
hiệu qủa.
 Mỗi tài nguyên được biễu diễn thông qua một cấu trúc dữ
liệu, khác nhau về chi tiết cho từng loại tài nguyên, nhưng 
cơ bản chứa đựng các thông tin sau:
 Định danh tài nguyên: để phân biệt các tài nguyên
 Trạng thái tài nguyên : đây là các thông tin mô tả chi tiết trạng 
thái tài nguyên: 
 Phần nào của tài nguyên đã cấp phát cho tiến trình
 Phần nào còn có thể sử dụng
 Hàng đợi trên một tài nguyên : danh sách chứa các tiến trình 
đang chờ được cấp phát tài nguyên tương ứng.
 Bộ cấp phát: là đoạn code đảm nhiệm việc cấp phát một tài 
nguyên đặc thù. 
4-Jun-14 TT. QTM 26
1.6. Phân phối tài nguyên cho 
tiến trình(2)
 Mục tiêu của kỹ thuật cấp 
phát :
 Bảo đảm một số lượng hợp lệ
các tiến trình truy xuất đồng 
thời đến các tài nguyên không 
chia sẻ được.
 Cấp phát tài nguyên cho tiến 
trình có yêu cầu trong một 
khoảng thời gian trì hoãn có
thể chấp nhận được.
 Tối ưu hóa sự sử dụng tài 
nguyên 
Khối quản lý tài nguyên
4-Jun-14 TT. QTM 27
2. Luồng - Threads
 Nội dung
 Mô tả luồng
 Các mô hình đa luồng
4-Jun-14 TT. QTM 28
2.1. Mô tả luồng(1)
 Vấn đề:
 Mỗi tiến trình có một không gian địa chỉ và chỉ có một 
dòng xử lý
 Để tăng tốc độ và sử dụng CPU hiệu quả hơn cần 
nhiều dòng xử lý cùng chia sẻ một không gian địa 
chỉ, và các dòng xử lý này hoạt động song song tương 
tự như các tiến trình phân biệt (ngoại trừ việc chia sẻ 
không gian địa chỉ)
 Mỗi dòng xử lý được gọi là một luồng(thread) hay một 
tiểu trình 
4-Jun-14 TT. QTM 29
2.1. Mô tả luồng(2)
 Khái niệm: Một luồng là một dòng xử lý cơ bản trong hệ thống . Mỗi 
luồng xử lý tuần tự đoạn code của nó, sỡ hữu một con trỏ lệnh, tập các 
thanh ghi và một vùng nhớ stack riêng 
 Phân biệt luồng và tiến trình:
 Luồng được coi là mức thấp hơn của tiến trình, mỗi tiến trình có thể gồm 
nhiều luồng
 Hoạt động của các luồng giống như tiến trình nhưng các luồng cùng chia 
xẻ không gian địa chỉ chung, các tiến trình thì hoàn toàn độc lập
 Khi máy tính có nhiều CPU, mỗi CPU có thể thực hiện các công việc 
khác nhau hoặc các luồng khác nhau cho cùng một công việc. 
 Khi hệ thống chỉ có một CPU, mỗi luồng được thực hiện luân phiên 
nhau. Không có luồng nào chiếm ưu thế trong CPÚ. 
 Luồng là hữu ích vì chúng loại trừ được sự cần thiết phải để cho hệ 
điều hành liên tục tải thông tin vào/ra bộ nhớ. 
4-Jun-14 TT. QTM 30
2.1. Mô tả luồng(3)
 Mỗi luồng có thể tương tác với một phần riêng của hệ 
thống, như đĩa, I/O trên mạng, hoặc người dùng. 
 Các luồng được lập lịch để thực hiện vì một số luồng có 
thể chờ một biến cố nào đó xảy ra hoặc chờ kết thúc một 
công việc nào đó từ luồng khác.
 Luồng bao gồm:
 Mã luồng (thread ID)
 Bộ đếm chương trình (PC)
 Tập thanh ghi (register set) 
 Stack
 Các luồng trong một tiến trình chia sẻ với nhau đoạn mã 
(code), đoạn dữ liệu (data) và các tài nguyên hệ thống khác 
như các tệp mở, các tín hiệu.
4-Jun-14 TT. QTM 31
2.1.1. Các tiến trình đơn và đa 
luồng
Vùng nhớ
chung 
Tài 
nguyên 
riêng
4-Jun-14 TT. QTM 32
2.1.2. Sự thúc đẩy
 Tạo tiến trình là một công việc "nặng nhọc"
 Nhiều phần mềm chạy trên các PC hiện nay là đa luồng 
(multithreaded). Một ứng dụng thường được thực hiện như 
một tiến trình riêng với một vài luồng điều khiển.
 Ex1: Trình soạn thảo văn bản
 1 luồng hiển thị ảnh, chữ
 1 luồng đọc phím nhấn bởi người sử dụng
 1 luồng thực hiện việc kiểm tra chính tả và ngữ pháp
 Ex2: web-server tạo 1 luồng nghe các yêu cầu từ client.
 Khi có yêu cầu, thay vì tạo 1 tiến trình khác, nó sẽ tạo một luồng 
khác để phục vụ yêu cầu.
4-Jun-14 TT. QTM 33
2.1.3. Lợi ích của tiến trình đa 
luồng
 Đáp ứng nhanh: cho phép chương trình tiếp tục thực hiện 
thậm chí khi một bộ phận của nó bị khóa hoặc đang thực 
hiện một hoạt động dài.
 Chia sẻ tài nguyên: cho phép một ứng dụng có một số
luồng khác nhau hoạt động trong cùng một không gian địa 
chỉ.
 Kinh tế: tạo và chuyển ngữ cảnh luồng kinh tế hơn so với 
tiến trình. Sử dụng CPU hiệu quả hơn
 Thực hiện trong kiến trúc multiprocessor: lợi ích của đa 
luồng tăng lên trong kiến trúc multiprocessor, vì các luồng 
có thể chạy song song trên các processor.
4-Jun-14 TT. QTM 34
2.1.4. Kernel Threads
 Khái niệm luồng có thể được cài đặt trong kernel của Hệ 
điều hành, khi đó đơn vị cơ sở sử dụng CPU để xử lý là
luồng
 Hệ điều hành sẽ phân phối CPU cho các luồng trong hệ
thống
 Các luồng này gọi là các luồng mức nhân(kernel)
 Kernel thực hiện tạo luồng, lập lịch và quản lý trong không 
gian kernel. Do đó, tạo và quản lý các kernel thread nói 
chung chậm hơn các user thread.
 Nếu một luồng thực hiện một system call bị khóa, kernel 
có thể lập lịch một luồng khác để thực hiện. 
 Trong môi trường multiprocessor, kernel có thể lập lịch 
các luồng trên các processor khác nhau.
4-Jun-14 TT. QTM 35
2.1.5. User-level Threads
 Được hỗ trợ trên kernel và được thực hiện bởi một thư 
viện luồng tại mức người sử dụng (user level).
 Tất cả sự tạo luồng và lập lịch được thực hiện trong không 
gian người sử dụng. Do đó, các user-level thread nói chung 
nhanh để tạo và quản lý.
 Luồng mức người dùng là các xử lý mức trên thuộc user 
mode, các luồng mức này sẽ được ánh xạ vào luồng hoặc 
tiến trình mức kernel để thực hiện
 Hạn chế: 
 Khi kernel là đơn luồng, nếu có 1 user-level thread thực hiện một 
system call bị khóa, nó sẽ gây cho toàn bộ tiến trình bị khóa, mặc 
dù các tiến trình khác vẫn có thể chạy trong ứng dụng.
4-Jun-14 TT. QTM 36
2.2. Các mô hình đa luồng
 Nhiều HĐH hỗ trợ cả user thread và kernel 
thread, thể hiện trong 3 mô hình đa luồng 
phổ biến:
 Many-to-One
 One-to-One
 Many-to-Many
4-Jun-14 TT. QTM 37
2.2.1. Mô hình Many-to-One
 Nhiều user-level thread được 
ánh xạ vào 1 kernel thread
 Quản lý luồng được thực 
hiện trong không gian người 
sử dụng → nhanh nhưng 
tiến trình dễ bị khóa.
 Các luồng không thể chạy 
song song trong các hệ
thống multiprocessor.
4-Jun-14 TT. QTM 38
2.2.2. Mô hình One-to-One
 Mỗi user-level thread được ánh xạ vào 1 kernel thread
 Cho phép tiến trình khác chạy khi có 1 tiến trình tạo 
system call bị khóa.
 Cho phép nhiều luồng chạy song song trên multiprocessor.
 Cần giới hạn số luồng được hỗ trợ bởi HĐH
 Vd: Windows NT/2000/XP
4-Jun-14 TT. QTM 39
2.2.3. Mô hình Many-to-Many 
 Nhiều user-level thread (n) được 
ánh xạ vào nhiều kernel thread (m)
 m ≤ n
 Người phát triển có thể tạo bao 
nhiêu user-level thread tùy ý, các 
kernel thread tương ứng có thể
chạy song song trên 
multiprocessor. 
 Khi 1 thread thực hiện 1 system call 
bị khóa, kernel có thể lập lịch 1 
thread khác để thực hiện.
 Vd: UNIX
4-Jun-14 TT. QTM 40
Q & A

File đính kèm:

  • pdfBài giảng Hệ điều hành - Chương 2 Process và Threads (Tiến trình và luồng).pdf