1. Trang chủ
  2. » Giáo án - Bài giảng

Chương 2.2 hệ điều hành

39 35 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 39
Dung lượng 2,54 MB

Nội dung

1 Tiến Trình Luồng(thread) Điều phối CPU Tài nguyên găng đồng tiến trình Bế tắc xử lý bế tắc 1.3 Thao tác tiến trình Tạo tiến trình Kết thúc tiến trình Tạo tiến trình  Tiến trình tạo nhiều tiến trình hoạt động ( CreateProcess(), fork())  Tiến trình tạo: tiến trình cha  Tiến trình tạo: tiến trình  Tiến trình tạo tiến trình khác -> tiến trình  Vấn đề phân phối tài nguyên  Tiến trình lấy tài nguyên từ hệ điều hành  Tiến trình lấy tài nguyên từ tiến trình cha  Tất tài nguyên  Một phần tài nguyên tiến trình cha ( ngăn ngừa việc tạo nhiều tiến trình con)  Vấn đề thực  Tiến trình cha tiếp tục thực đồng thời với tiến trình  Tiến trình cha đợi tiến trình kết thúc Kết thúc tiến trình • Hoàn thành câu lệnh cuối yêu cầu HĐH xóa ( exit) • Gửi trả liệu tới tiến trình cha • Giải phóng tài ngun hệ thống cung cấp • Tiến trình cha kết thúc thực tiến trình • Tiến trình cha phải biết định danh tiến trình -> tiến trình phải gửi định danh cho tiến trình cha khởi tạo • Sử dụng lời gọi hệ thống (abort) • Tiến trình cha kết thúc tiến trình • Tiến trình sử dụng vượt q tài ngun cấp • Tiến trình khơng cịn cần thiết • Tiến trình cha kết thúc hệ điều hành khơng cho phép tiến trình tồn tiến trình cha kết thúc -> Cascading termination VD, kết thúc hệ thống 1.4 Phân loại tiến trình • Các tiến trình • Điểm bắt đầu tiến trình nằm sau điểm kết thúc tiến trình • Các tiến trình song song • Điểm bắt đầu tiến trình nằm điểm bắt đầu kết thúc tiến trình • Độc lập: Khơng ảnh hưởng tới bị ảnh hưởng tiến trình khác thực hệ thống • Có hợp tác: Ảnh hưởng tới chịu ảnh hưởng tiến trình khác thực hệ thống • Hợp tác tiến trình nhằm • Chia sẻ thơng tin • Tăng tốc độ tính tốn • Module hóa • Tiện dụng • Hợp tác tiến trình địi hỏi chế cho phép • Truyền thơng tiến trình • Đồng hóa hoạt động tiến trình 1.5 Liên lạc tiến trình  Bài tốn người sản xuất (producer) – Người tiêu thụ (consumer) • Hệ thống gồm tiến trình • Producer sản xuất sản phẩm • Consumer tiêu thụ sản phẩm sản xuất • Ứng dụng • Chương trình in (producer) sản xuất ký tự tiêu thụ điều khiển máy in (consumer) • Trình dịch (producer) sản xuất mã hợp ngữ, trình hợp ngữ (consumer/producer) tiêu thụ mã hợp ngữ sản xuất module đối tượng thực (consumer) tiêu thụ 6 1.5 Liên lạc tiến trình  Bài toán người sản xuất (producer) – Người tiêu thụ (consumer) • Producer Consumer hoạt động đồng thời • Sử dụng vùng đệm dùng chung (buffer) chứa sản phẩm điền vào producer lấy consumer IN Vị trí trống vùng đệm OUT Vị trí đầy vùng đệm Counter Số sản phẩm vùng đệm • Producer Consumer phải đồng Consumer không cố gắng tiêu thụ sản phẩm chưa sản xuất • Vùng đệm dung lượng vơ hạn • Khi Buffer rỗng, Consumer phải đợi • Producer khơng phải đợi đặ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 vùng đệm đầy 1.5 Liên lạc tiến trình  Trao đổi tiến trình • Dùng mơ hình nhớ phân chia • Các tiến trình chia sẻ vùng nhớ • Mã cài đặt viết tường minh người lập trình ứng dụng • Ví dụ: Bài tốn Producer – Consumer • Dùng mơ hình truyền thơng liên tiến trình (Interprocess communication) • Là chế cho phép tiến trình truyền thơng đồng hoạt động • Thường sử dụng hệ phân tán tiến tình truyền thơng nằm máy khác (chat) • Đảm bảo hệ thống truyền thông điệp 1.5 Liên lạc tiến trình Hệ thống truyền thơng điệp • Cho phép tiến trình trao đổi với không qua sử dụng biến phân chia • Yêu cầu thao tác • Send(msg) Các msg có kích thước cố định 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) • Nếu tiến trình P Q muốn trao đổi, chúng cần • Thiết lập liên kết truyền thơng (vật lý / logic) chúng • Trao đổi messages nhờ thao tác send/receive • Các vấn đề cài đặt • Các liên kết thiết lập nào? • Mộ liên kết dùng cho nhiều tiến trình? • Bao nhiêu liên kết tồn 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 6hay hai chiều? 1.5 Liên lạc tiến trình Liên lạc trực tiếp • Các tiến trình phải gọi tên tiến trình nhận/gửi cách tường minh • send(P,message)- gửi thơng báo tới tiến trình P • receive (Q,message)- Nhận thơng báo tiến trình Q • Tính chất liên kết truyền thơng • Các liên kết thiết lập tự động • Một liên kết gắn với cặp tiến trình truyền thơng • Chỉ tồn liên kết cặp tiến trình • Liên kết chiều, thường hai chiều 10 2.2 Mơ hình đa luồng Nhiều hệ thống hỗ trợ luồng mức người dùng luồng mức hệ thống -> Nhiều mơ hình đa luồng khác 25 Mơ hình nhiều – • Ánh xạ nhiều luồng mức người dùng tới luồng mức hệ thống • Quản lý luồng thực không gian người dùng • Hiệu • Cho phép tạo nhiều luồng tùy ý • Tồn tiến trình bị khóa luồng bị khóa • Khơng thể chạy song song máy nhiều vi xử lý ( luồng truy nhập nhân thời điểm) • Dùng hệ điều hành khơng hỗ trợ hệ thống 26 Mơ hình – • Ánh xạ luồng mức người dùng tới luồng hệ thống • Cho phép thực luồng khác luồng bị chờ đợi • Cho phép chạy song song đa luồng máy nhiều vi xử lý • Tạo luồng mức người dùng đòi hỏi tạo luồng mức hệ thống tương ứng • Ảnh hưởng tới hiệu ứng dụng • Chi phí cao -> Giới hạn số luồng hệ thống hỗ trợ • Được sử dụng Window NT/2000/XP 27 Mơ hình nhiều – nhiều • Nhiều luồng mức người dùng ánh xạ tới số nhỏ luồng mức hệ thống • Số lượng luồng nhân xác định tho máy theo ứng dụng • VD: Được cấp nhiều luồng nhân hệ thống nhiều VXL • Có ưu điểm mơ hình • 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 chạy song song hệ nhiều VXL • Một luồng bị khóa, nhân cho phép luồng khác thực • Ví dụ: UNIX 28 2.3 Cài đặt luồng  Cài đặt hệ điều hành windows 29 Một số hàm với luồng WIN32 API  HANDLE CreateThread(…);  LPSECURITY ATTRIBUTESIpThreadAttributes, =>Trỏ tói cấu trúc an ninh: thẻ trả kế thừa?       DWORD dwStackSize, =>Kích thưóc ban đầu stack cho luồng LPTHREAD START ROUTINE IpStartAddress, =>Trỏ tới hàm thực luồng LPVOID IpParameter, =>Trỏ tới biến gửi tới luồng (tham số hàm) DWORD dwCreationFlags, =>Phương pháp tạo luồng  CREATE_SUSPENDED : Luồng trạng thái tạm ngừng  0: Luồng thực LPDVVORD IpThreadld =>Biến ghi nhận định danh luồng Kết trả về: Thẻ luồng mói giá trị NULL khơng tạo luồng 30 #include #include void Routine(int *n) { printf("My argument is %d\n", &n); } int main() { int i, P[5]; DWORD Id; HANDLE hHandles[5]; for (i = 0; i < 5; i++) { P[i] = i; hHandles[i] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Routine, &P[i], 0, &Id); printf("Thread %d was created\n", Id); } for (i = 0; i < 5; i++) WaitForSingleObject(hHandles[i], INFINITE); getchar(); return 0; } 31 32 2.3 Cài đặt luồng  Cài đặt với Java Threads 33 • Được cài đặt • Mở rộng lóp Thread (Thread class) • Cài đặt giao diện có thê thực thi (Runnable interíace) • Được quản lý máy ảo Java Ụava Virtual Machine) • Các trạng thái • Tồn phương thức run(), thực JVM • Luồng thực gọi phương thức start() • Cung cấp vùng nhó khởi tạo luồng mói máy ảo Java • Gọi tói phương thức run() 34 35 2.4 Vấn đề đa luồng #include #include int x = 0, y = 1; void T1() { while (1) { x = y + 1; printf("%4d", x); } } void T2() { while (1) { y = 2; y = y * 2; } } int main() { HANDLE h1, h2; DWORD Id; h1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)T1, NULL, 0, &Id); h2 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)T2, NULL, 0, &Id); WaitForSingleObject(h1, INFINITE); WaitForSingleObject(h2, INFINITE); getchar(); return 0; } 36 Trường hợp Shared int y=1 Thread T1 Thread T2 x y+1 y2 yy*2 x=? 37 Trường hợp Shared int y=1 Thread T1 Thread T2 x y+1 y2 yy*2 x=? 38 Trường hợp Shared int y=1 Thread T1 Thread T2 x y+1 y2 yy*2 x=? Kết thực luồng song song phụ thuộc trật tự truy nhập biến dùng chung chúng 39 ... file, v.v với luồng ngang hàng Cách hệ điều hành nhìn nhận Tất tiến trình khác Tất luồng ngang hàng cấp người dùng hệ điều hành xử lý riêng biệt hệ điều hành coi tác vụ Thời gian tạo Các tiến... trường đa VXL, nhân điều phối luồng cho VXL khác • Hệ điều hành: Windows NT/2000/XP, Linux, OS/2, 24 2.2 Mơ hình đa luồng Nhiều hệ thống hỗ trợ luồng mức người dùng luồng mức hệ thống -> Nhiều... nhiều vi xử lý ( luồng truy nhập nhân thời điểm) • Dùng hệ điều hành khơng hỗ trợ hệ thống 26 Mơ hình – • Ánh xạ luồng mức người dùng tới luồng hệ thống • Cho phép thực luồng khác luồng bị chờ đợi

Ngày đăng: 20/12/2021, 14:55

TỪ KHÓA LIÊN QUAN