Bài giảng - Hệ điều hành Chương 2: Tiến trình, luồng - Lương Minh Huấn
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng - Hệ điều hành Chương 2: Tiến trình, luồng - Lương Minh Huấn", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_he_dieu_hanh_chuong_2_tien_trinh_luong_luong_minh.pdf
Nội dung text: Bài giảng - Hệ điều hành Chương 2: Tiến trình, luồng - Lương Minh Huấn
- I.4 HỢP TÁC TIẾN TRèNH ➢Khi phõn loại tiến trỡnh cú 2 loại ▪ Tiến trỡnh tuần tự • Điểm bắt đầu của tiến trỡnh này nằm sau điểm kết thỳc của tiến trỡnh kia. ▪ Tiến trỡnh song song • Điểm bắt đầu của tiến trỡnh này nằm giữa điểm bắt đầu và kết thỳc của tiến trỡnh kia. • Chia ra làm 2 loại – Tiến trỡnh độc lập – Tiến trỡnh hợp tỏc
- I.4 HỢP TÁC TIẾN TRèNH ➢Tiến trỡnh độc lập: khụng ảnh hưởng, và khụng bị ảnh hưởng bởi cỏc tiến trỡnh khỏc đang thực hiện trong hệ thống. ➢Tiến trỡnh hợp tỏc: Ảnh hưởng và chịu ảnh hưởng bởi cỏc tiến trỡnh khỏc đang thực hiện trong hệ thống. ▪ Lợi ớch của hợp tỏc tiến trỡnh: • Chia sẻ thụng tin • Tăng tốc độ tớnh toỏn • Module húa • Tiện dụng
- I.4 HỢP TÁC TIẾN TRèNH ▪ Khi thực hiện hợp tỏc tiến trỡnh đũi hỏi cơ chế: • Truyền thụng giữa cỏc tiến trỡnh. • Đồng bộ húa hoạt động của cỏc tiến trỡnh. ▪ Vớ dụ: bài toỏn producer – consumer • Hệ thống gồm 2 tiến trỡnh: – Producer sản xuất ra cỏc sản phẩm – Consumer tiờu thụ cỏc sản phẩm này.
- PRODUCER - CONSUMER ➢Ứng dụng: ▪ Chương trỡnh in (producer) sản xuất ra cỏc ký tự được tiờu thụ bởi bộ điều khiển mỏy in (consumer). ▪ Trỡnh dịch (producer) sản xuất ra mó hợp ngữ, trỡnh hợp ngữ (consumer/producer) tiờu thụ mó hợp ngữ rồi sản xuất ra module đối tượng được bộ thực hiện (consumer) tiờu thụ
- PRODUCER - CONSUMER ➢Producer và Consumer hoạt động đồng thời ➢Sử dụng vựng đệm dựng chung (Buffer) chứa sản phẩm được điền vào bởi producer và được lấy ra bởi consumer. ➢Producer và Consumer phải đồng bộ. ▪ Consumer khụng tiờu thụ sản phẩm mà producer chưa sản xuất.
- PRODUCER - CONSUMER ➢Vựng đệm giữa producer và consumer cú 2 dạng: ▪ Vựng đệm dung lượng vụ hạn: • Khi Buffer rỗng, Consumer phải đợi • Producer khụng phải đợi khi đặt sản phẩm vào buffer. ▪ Vựng đệm dung lượng hữu hạn. • Khi Buffer rỗng, Consumer phải đợi • Producer phải đợi khi vựng đệm đầy.
- I.5 TRUYỀN THễNG LIấN TIẾN TRèNH ➢Để cỏc tiến trỡnh cú thể hợp tỏc với nhau, cần phải cú một bộ truyền thụng liờn tiến trỡnh (interprocess communication – IPC). ➢Truyền thụng liờn tiến trỡnh cú 2 hỡnh thức: ▪ Dựng bộ nhớ phõn chia (share memory) ▪ Dựng mụ hỡnh truyền thụng liờn tiến trỡnh.
- I.5 TRUYỀN THễNG LIấN TIẾN TRèNH ➢Dựng mụ hỡnh bộ nhớ phõn chia (share memory): ▪ Cỏc tiến trỡnh chia sẻ vựng nhớ chớnh. ▪ Mó cài đặt được viết tường minh bởi người lập trỡnh ứng dụng ▪ Vớ dụ: Bài toỏn Producer-Consumer
- I.5 TRUYỀN THễNG LIấN TIẾN TRèNH ➢Shared data #define BUFFER_SIZE 10 typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; ➢Solution is correct, but can only use BUFFER_SIZE-1 elements
- I.5 TRUYỀN THễNG LIấN TIẾN TRèNH item next_produced; while (true) { /* produce an item in next produced */ while (((in + 1) % BUFFER_SIZE) == out) ; /* do nothing */ buffer[in] = next_produced; in = (in + 1) % BUFFER_SIZE; }
- I.5 TRUYỀN THễNG LIấN TIẾN TRèNH item next_consumed; while (true) { while (in == out) ; /* do nothing */ next_consumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; /* consume the item in next consumed */ }
- I.5 TRUYỀN THễNG LIấN TIẾN TRèNH ➢Dũng mụ hỡnh truyền thụng liờn tiến trỡnh (Interprocess communication) ▪ Là cơ chế cho phộp cỏc tiến trỡnh truyền thụng và đồng bộ cỏc hoạt động. ▪ Thường được sử dụng trong cỏc hệ phõn tỏn khi cỏc tiến trỡnh truyền thụng nằm trờn cỏc mỏy khỏc nhau (chat) ▪ Đảm bảo bởi hệ thống truyền thụng điệp.
- HỆ THỐNG TRUYỀN THễNG ĐIỆP ➢Cho phộp cỏc tiến trỡnh trao đổi với nhau khụng qua sử dụng cỏc biến phõn chia. ➢Yờu cầu 2 thao tỏc cơ bản ▪ Send (msg) Cỏc msg cú kớch thước cố định hoặc thay đổi • Cố định : dễ cài đặt mức hệ thống, nhiệm vụ lập trỡnh khú • Thay đổi: cài đặt mức hệ thống phức tạp, lập trỡnh đơn giản ▪ Receive (msg)
- HỆ THỐNG TRUYỀN THễNG ĐIỆP ➢Nếu 2 tiến trỡnh P và Q muốn trao đổi, chỳng cần ▪ Thiết lập một liờn kết truyền thụng (vật lý/ logic) giữa chỳng ▪ Trao đổi cỏc messages nhờ cỏc thao tỏc send/receive. ➢Cỏc vấn cài đặt: ▪ Cỏc liờn kết được thiết lập như thế nào? ▪ Một liờn kết cú thể dựng cho nhiều hơn 2 tiến trỡnh? ▪ Bao nhiờu liờn kết cú thể tồn tại giữa mọi cặp tiến trỡnh? ▪ Kớch thước thụng bỏo mà liờn kết chấp nhận cố định/thay đổi? ▪ Liờn kết một hay hai chiều?
- HỆ THỐNG TRUYỀN THễNG ĐIỆP ➢Trong vấn đề truyền thụng điệp, cú 2 loại truyền: ▪ Truyền trực tiếp ▪ Truyền giỏn tiếp
- TRUYỀN THễNG TRỰC TIẾP ➢Cỏc tiến trỡnh phải gọi tờn tiến trỡnh nhận/ gửi một cỏch tường minh. ▪ send (P, message) – gửi một thụng bỏo tới tiến trỡnh P ▪ receive(Q, message) – Nhận một thụng bỏo từ tiến trỡnh Q ➢Tớnh chất của liờn kết truyền thụng ▪ Cỏc liờn kết được thiết lập tự động. ▪ Một liờn kết gắn chỉ với cặp tiến trỡnh truyền thụng ▪ Chỉ tồn tại một liờn kết giữa cặp tiến trỡnh ▪ Liờn kết cú thể là một chiều, nhưng thường hai chiều
- TRUYỀN THễNG GIÁN TIẾP ➢Cỏc thụng điệp được gửi/ nhận tới/ từ cỏc hũm thư (mailboxes), cổng (ports). ▪ Một hũm thư cú định danh duy nhất ▪ Cỏc tiến trỡnh cú thể trao đổi nếu chỳng dựng chung hũm thư ➢Tớnh chất cỏc liờn kết ▪ Cỏc liờn kết được thiết lập chỉ khi cỏc tiến trỡnh dựng chung hũm thư ▪ Một liờn kết cú thể được gắn với nhiều tiến trỡnh ▪ Mỗi cặp tiến trỡnh cú thể dựng chung nhiều liờn kết truyền thụng ▪ Liờn kết cú thể một hay hai chiều
- TRUYỀN THễNG GIÁN TIẾP ➢Cỏc thao tỏc ▪ Tạo hũm thư ▪ Gửi/nhận thụng bỏo qua hũm thư • send(A, msg): Gỷi một msg tới hũm thư A • receive(A, msg): Nhận một msg từ hũm thư A ▪ Hủy bỏ hũm thư
- VẤN ĐỀ ĐỒNG BỘ HểA ➢Truyền thụng điệp cú thể phải chờ đợi (blocking), hoặc khụng chờ đợi (non blocking) ▪ Blocking Truyền thụng đồng bộ ▪ Non-blocking Truyền thụng khụng đồng bộ ➢Cỏc thủ tục send() và receive() cú thể bị chờ đợi hoặc khụng chờ đợi ▪ Blocking send: Tiến trỡnh gửi thụng bỏo và đợi cho tới khi msg được nhận bởi tiến trỡnh nhận hoặc bởi hũm thư ▪ Non blockking send: tiến trỡnh gửi thụng bỏo và tiếp tục làm việc
- VẤN ĐỀ ĐỒNG BỘ HểA ▪ Blocking receive: Tiến trỡnh nhận phải đợi cho tới khi cú thụng bỏo ▪ Non-blocking receive: Tiến trỡnh nhận trả về hoặc một thụng bỏo cú giỏ trị, hoặc giỏ trị null.
- VÙNG ĐỆM ➢Cỏc thụng điệp trao đổi giữa cỏc tiến trỡnh được lưu trong hàng đợi tạm thời ➢Hàng đợi cú thể được cài đặt theo: ▪ Khả năng chứa 0 (Zero capacity): độ dài hàng đợi là 0 • Khụng tồn tại thụng điệp trong đường liờn kết • Sender phải đợi cho tới khi thụng điệp được nhận ▪ Khả năng chứa cú giới hạn(Bound capacity) • Hàng đợi cú độ dài n, chứa nhiều nhất n thụng điệp • Nếu hàng đợi đầy, sender phải đợi cho tới khi cú chỗ trống
- VÙNG ĐỆM ▪ Khả năng chứa khụng giới hạn (Unbound capacity) • Sender khụng bao giờ phải đợi
- TRUYỀN THễNG TRONG HỆ THỐNG CLIENT - SERVER ➢Socket ➢RPC (Remote Procedure Calls) ➢RMI (Remote Method Invocation) Cơ chế truyền thụng của Java
- SOCKET ➢Được xem như một đầu mỳt cho truyền thụng ➢Bao gồm cặp địa chỉ IP và cổng: 146.86.5.20:1625
- SOCKET
- NỘI DUNG II. Luồng 1. Giới thiệu 2. Mụ hỡnh đa luồng 3. Vấn đề đa luồng
- II.1 GIỚI THIỆU
- II.1 GIỚI THIỆU
- II.1 GIỚI THIỆU ➢Chương trỡnh: Dóy lệnh, cỏc biến, ➢Tiến trỡnh: Chương trỡnh đang thực hiện: Stack, thiết bị, VXL, ➢Luồng: Chương trỡnh đang thực hiện trong ngữ cảnh tiến trỡnh
- II.1 GIỚI THIỆU ➢Hệ điều hành truyền thống (MS-DOS, UNIX) ▪ Tiến trỡnh cú một luồng điều khiển (heavyweight process) ➢Hệ điều hành hiện nay (Windows, Linux) ▪ Tiến trỡnh cú thể gồm nhiều luồng ▪ Cú thể thực hiện nhiều nhiệm vụ tại một thời điểm
- II.1 GIỚI THIỆU
- II.1 GIỚI THIỆU
- KHÁI NIỆM LUỒNG ➢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 (Rigisters) ▪ 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 ▪ Đọan 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ở)
- KHÁI NIỆM LUỒNG ➢Cỏc luồng cú thể thực hiện cựng đọan 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
- LỢI ÍCH CỦA LẬP TRèNH ĐA LUỒNG ➢Tăng tớnh đỏp ứng với người dựng ▪ Cho phộp chương trỡnh vẫn thực hiện ngay khi một phần đang chờ đợi (block) hoặc đang thực hiện tớnh toỏn tăng cường ▪ Vớ dụ trỡnh duyệt Web (Web browser) đa luồng • Một luồng tương tỏc với người dựng • Một luồng thực hiện nhiệm vụ tải dữ liệu
- LỢI ÍCH CỦA LẬP TRèNH ĐA LUỒNG ➢Chia sẻ tài nguyờn ▪ Cỏc luồng chia sẻ bộ nhớ và tài nguyờn của tiến trỡnh chứa nú • Tốt cho cỏc thuật toỏn song song (sử dụng chung cỏc CTDL) • Trao đổi giữa cỏc luồng thụng qua bộ nhớ phõn chia ▪ Cho phộp một ứng dụng chứa nhiều luồng hoạt động trong cựng khụng gian địa chỉ.
- LỢI ÍCH CỦA LẬP TRèNH ĐA LUỒNG ➢Tớnh kinh tế ▪ Cỏc thao tỏc khởi tạo, hủy bỏ và luõn chuyển luồng ớt tốn kộm • Minh họa được tớnh song song trờn bộ đơn VXL do thời gian luõn chuyển CPU nhanh (Thực tế chỉ một luồng thực hiện) ➢Sử dụng kiến trỳc nhiều vi xử lý ▪ Cỏc luồng chạy song song thực sự trờn cỏc bộ VXL khỏc nhau.
- LỢI ÍCH CỦA LẬP TRèNH ĐA LUỒNG
- CÀI ĐẶT LUỒNG
- LUỒNG NGƯỜI DÙNG ➢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 ,
- LUỒNG NGƯỜI DÙ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
- LUỒNG MỨC HỆ THỐNG ➢Nhõn duy trỡ thụng tin về tiến trỡnh và càc luồng ➢Quản lý luồng được thực hiện bởi nhõn ▪ Khụng tồn tại cỏc mó quản lý luồng trong ứng dụng ▪ Điều phối luồng được thực hiện bởi nhõn, dựa trờn cỏc luồng ➢Nhược điểm: ▪ Chậm trong tạo và quản lý luồng
- LUỒNG MỨC HỆ THỐNG ➢Ưu điểm: ▪ Một luồng chờ đợi vào ra, khụng ảnh hưởng tới luồng khỏc ▪ Trong mụi trường đa VXL, nhõn cú thể điều phối cỏc luồng cho cỏc VXL khỏc nhau ➢Hệ điều hành: Windows NT/2000/XP, Linux, OS/2,
- II.2 Mễ HèNH ĐA LUỒNG ➢Nhiều hệ thống hổ trợ cả luồng mức người dựng và luồng mức hệ thống => Nhiều mụ hỡnh đa luồng khỏc nhau
- Mễ HèNH NHIỀU MỘT ➢Ánh xạ nhiều luồng mức người dựng tới một luồng mức hệ thống ➢Quản lý luồng được thực hiện trong khụng gian người dựng ▪ Hiệu quả ▪ Cho phộp tạo nhiều luồng tựy ý ▪ Toàn bộ tiến trỡnh sẽ bị khúa nếu một luồng bị khúa ➢Khụng thể chạy song song trờn cỏc mỏy nhiều vi xử lý (Chỉ một luồng cú thể truy nhập nhõn tại một thời điểm) ➢Dựng trong hệ điều hành khụng hổ trợ luồng hệ thống
- Mễ HèNH NHIỀU MỘT
- Mễ HèNH MỘT MỘT ➢Ánh xạ mỗi luồng mức người dựng tới một luồng hệ thống ▪ Cho phộp thực hiện luồng khỏc khi một luồng bị chờ đợi ▪ Cho phộp chạy song song đa luồng trờn mỏy nhiều vi xử lý ➢Tạo luồng mức người dựng đũi hỏi tạo một luồng mức hệ thống tương ứng ▪ Ảnh hưởng tới hiệu năng của ứng dụng ▪ Chi phớ cao => Giới hạn số luồng được hệ thống hổ trợ ➢Được sử dụng trong Window NT/2000/XP
- Mễ HèNH MỘT MỘT
- Mễ HèNH NHIỀU NHIỀU ➢Nhiều luồng mức người dựng ỏnh xạ tới một số nhỏ luồng mức hệ thống ➢Số lượng luồng nhõn cú thể được xỏc định theo mỏy hoặc theo ứng dụng ▪ VD: Được cấp nhiều luồng nhõn hơn trờn hệ thống nhiều VXL ➢Cú được ưu điểm của 2 mụ hỡnh trờn ▪ Cho phộp tạo nhiều luồng mức ứng dụng theo yờu cầu ▪ Cỏc luồng nhõn tương ứng cú thể chạy song song trờn hệ nhiều VXL ▪ Một luồng bị khoỏ, nhõn cú thể cho phộp luồng khỏc thực hiện ➢Vớ dụ: UNIX
- Mễ HèNH NHIỀU NHIỀU
- II.3 VẤN ĐỀ ĐA LUỒNG
- II.3 VẤN ĐỀ ĐA LUỒNG
- II.3 VẤN ĐỀ ĐA LUỒNG
- II.3 VẤN ĐỀ ĐA LUỒNG
- II.3 VẤN ĐỀ ĐA LUỒNG