hệ điều hành phạm đăng hải c2 quản lý tiến trình sinhvienzone com

0 117 0
hệ điều hành phạm đăng hải c2 quản lý tiến trình sinhvienzone com

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

Thông tin tài liệu

Hệ điều hành HỆ ĐIỀU HÀNH Phạm Đăng Hải haipd-fit@mail.hut.edu.vn Bộ mơn Khoa học Máy tính Viện Cơng nghệ Thơng tin & Truyền Thông Ngày 19 tháng năm 2011 https://fb.com/sinhvienzonevn m / 201 Chương 2: Quản lý tiến trình Chương Quản lý tiến trình m https://fb.com/sinhvienzonevn / 201 Chương 2: Quản lý tiến trình Giới thiệu Chương trình thực Được cung cấp tài nguyên (CPU, nhớ, thiết bị vào/ra .) để hoàn thành công việc Tài nguyên cấp khởi tạo tiến trình hay tiến trình thực Gọi tiến trình (process) Hệ thống tập tiến trình thực đồng thời Tiến trình hệ điều hành Thực mã lệnh hệ thống Tiến trình người dùng Thực mã lệnh người dùng Tiến trình chứa nhiều luồng điều khiển Trách nhiệm Hệ điều hành: Đảm bảo họat động tiến trình tiểu trình (luồng ) Tạo/xóa tiến trình (người dùng, hệ thống) Điều phối tiến trình Cung cấp chế đồng bộ, truyền thơng ngăn ngừa tình trạng bếhttps://fb.com/sinhvienzonevn tắc tiến trình m / 201 Chương 2: Quản lý tiến trình Nội dung m https://fb.com/sinhvienzonevn / 201 Chương 2: Quản lý tiến trình Tiến trình Nội dung Tiến trình Luồng (Thread) Điều phối CPU Tài nguyên găng điều độ tiến trình Bế tắc xử lý bế tắc m https://fb.com/sinhvienzonevn / 201 Chương 2: Quản lý tiến trình Tiến trình 1.1 Khái niệm tiến trình Tiến trình Khái niệm tiến trình Điều phối tiến trình (Process Scheduling) Thao tác tiến trình Hợp tác tiến trình Truyền thơng liên tiến trình m https://fb.com/sinhvienzonevn / 201 Chương 2: Quản lý tiến trình Tiến trình 1.1 Khái niệm tiến trình Định nghĩa tiến trình Là dãy thay đổi trạng thái hệ thống Chuyển từ trạng thái sang trạng thái khác thực theo yêu cầu nằm chương trình người sử dụng Xuất phát từ trạng thái ban đầu m https://fb.com/sinhvienzonevn / 201 Chương 2: Quản lý tiến trình Tiến trình 1.1 Khái niệm tiến trình Định nghĩa tiến trình Là dãy thay đổi trạng thái hệ thống Chuyển từ trạng thái sang trạng thái khác thực theo yêu cầu nằm chương trình người sử dụng Xuất phát từ trạng thái ban đầu Là chương trình thực Tài nguyên tối thiểu cần có Bộ nhớ cho mã chương trình liệu Các ghi processor phục vụ cho trình thực chương trình Tiến trình >< chương trình Chương trình: thực thể thụ động (nội dung file đĩa) Tiến trình: thực thể chủ động (bộ đếm lệnh, tập tài ngun) Một chương trình ⇒Được thực tiến trình khác nhau,với liệu khác (một chương trình, nhiều tiến trình) ⇒Gọi tới nhiều tiến trình m https://fb.com/sinhvienzonevn / 201 Chương 2: Quản lý tiến trình Tiến trình 1.1 Khái niệm tiến trình Định nghĩa tiến trình Chương trình gồm Mã chương trình: Lệnh máy (CD2190EA ) Dữ liệu: Biến lưu trữ sử dụng nhớ Biến toàn cục Biến cung cấp động (malloc, new, ) Biến stack (tham số hàm, biến cục ) Thư viện liên kết động: không dịch & liên kết với chương trình (DLL) Quá trình dịch chương trình m https://fb.com/sinhvienzonevn / 201 Chương 2: Quản lý tiến trình Tiến trình 1.1 Khái niệm tiến trình Định nghĩa tiến trình Thực chương trình m https://fb.com/sinhvienzonevn / 201 Chương 2: Quản lý tiến trình Tiến trình 1.1 Khái niệm tiến trình Định nghĩa tiến trình Thực chương trình Hệ điều hành tạo tiến trình phân phối vùng nhớ cho Bộ thực (loader/exec) Đọc dịch (interprets) file thực thi Thiết lập khơng gian địa cho tiến trình để chứa mã lệnh liệu từ file thực thi Đặt tham số dòng lệnh, mơi trường (argc, argv, envp) vào stack Thiết lập ghi VXL thích hợp gọi hàm "_start()" (hệ điều hành) Chương trình bắt đầu thực "_start()" Hàm gọi tới hàm main()(hàm chương trình) ⇒"Tiến trình" thực hiện, khơng đề cập đến "chương trình" Khi hàm main() kết thúc, OS gọi tới hàm "_exit()" để hủy bỏ tiến trình thu hồi tài nguyên m https://fb.com/sinhvienzonevn 10 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.1 Khái niệm tiến trình Định nghĩa tiến trình Thực chương trình Hệ điều hành tạo tiến trình phân phối vùng nhớ cho Bộ thực (loader/exec) Đọc dịch (interprets) file thực thi Thiết lập không gian địa cho tiến trình để chứa mã lệnh liệu từ file thực thi Đặt tham số dòng lệnh, mơi trường (argc, argv, envp) vào stack Thiết lập ghi VXL thích hợp gọi hàm "_start()" (hệ điều hành) Chương trình bắt đầu thực "_start()" Hàm gọi tới hàm main()(hàm chương trình) ⇒"Tiến trình" thực hiện, khơng đề cập đến "chương trình" Khi hàm main() kết thúc, OS gọi tới hàm "_exit()" để hủy bỏ tiến trình thu hồi tài nguyên ✞ ☎ Tiến trình chương trình thực thi https://fb.com/sinhvienzonevn m ✝ 10 / 201 ✆ Chương 2: Quản lý tiến trình Tiến trình 1.1 Khái niệm tiến trình Trạng thái tiến trình I Khi thực hiện, tiến trình thay đổi trạng thái Trạng thái tiến trình phần hoạt động tiến trình: Khởi tạo (New) Tiến trình khởi tạo Sẵn sàng (Ready) Tiến trình đợi sử dụng processor vật lý Thực (Running) Các câu lệnh tiến trình thực Chờ đợi (Waiting) Tiến trình chờ đợi kiện xuất (sự hoàn thành thao tác vào/ra) Kết thúc (Terminated) Tiến trình thực xong Hệ thống có processor Có tiến trình trạng thái thực Có thể có nhiều tiến trình trạng thái chờ đợi sẵn sàng https://fb.com/sinhvienzonevn m 11 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.1 Khái niệm tiến trình Trạng thái tiến trình II Lưu đồ thay đổi trạng thái tiến trình (Silberschatz 2002) m https://fb.com/sinhvienzonevn 12 / 201 m Chương 2: Quản lý tiến trình Tiến trình 1.1 Khái niệm tiến trình Khối điều khiển tiến trình (PCB: Process Control Block) Mỗi tiến trình thể hệ thống khối điều khiển tiến trình PCB: cấu trúc thơng tin cho phép xác định tt Trạng thái tiến trình Bộ đếm lệnh Các ghi CPU Thơng tin dùng để điều phối tiến trình Thơng tin quản lý nhớ Thơng tin tài ngun sử dụng Thông tin thống kê https://fb.com/sinhvienzonevn Con trỏ tới PCB khác 13 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.1 Khái niệm tiến trình Tiến trình Luồng Tiến trình đơn luồng: Là chương trình thực luồng thực thi ⇒Có luồng câu lệnh thực thi ⇒Cho phép thực nhiệm vụ thời điểm Tiến trình đa luồng: Có nhiều luồng thực thi ⇒Cho phép thực nhiều nhiệm vụ thời điểm m https://fb.com/sinhvienzonevn 14 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.2 Điều phối tiến trình Tiến trình Khái niệm tiến trình Điều phối tiến trình (Process Scheduling) Thao tác tiến trình Hợp tác tiến trình Truyền thơng liên tiến trình m https://fb.com/sinhvienzonevn 15 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.2 Điều phối tiến trình Giới thiệu Mục đích Sử dụng tối đa thời gian CPU ⇒ Cần có nhiều tiến trình hệ thống Vấn đề Ln chuyển CPU tiến trình ⇒ Phải có hàng đợi cho tiến trình Hệ thống processor ⇒ Một tiến trình thực ⇒ Các tiến trình khác phải đợi tới CPU tự m https://fb.com/sinhvienzonevn 16 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.2 Điều phối tiến trình Các hàng đợi tiến trình I Hệ thống có nhiều hàng đợi dành cho tiến trình Job-queue Tập tiến trình hệ thống Ready-Queue Tập tiến trình tồn nhớ, sẵn sàng chờ đợi để thực Device queues Tập tiến trình chờ đợi thiết bị vào Phân biệt hàng đợi cho thiết bị m https://fb.com/sinhvienzonevn 17 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.2 Điều phối tiến trình Các hàng đợi tiến trình II Các tiến trình di chuyển hàng đợi khác Tiến trình tạo, đặt hàng đợi sẵn sàng, đợi lựa chọn để thực m https://fb.com/sinhvienzonevn 18 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.2 Điều phối tiến trình Các hàng đợi tiến trình III Tiến trình chọn thực hiên Đưa yêu cầu vào ra: đợi hàng đợi thiết bị Tạo tiến trình đợi tiến trình kết thúc Hết thời gian sử dụng CPU, phải quay lại hàng đợi sẵn sàng Trường hợp (1&2) sau kiện chờ đợi hồn thành, Tiến trình chuyển từ trạng thái đợi sang trạng thái sẵn sàng Tiến trình quay lại hàng đợi sẵn sàng Tiến trình tiếp tục chu kỳ (sẵn sàng, thực hiện, chờ đợi) kết thúc Xóa khỏi tất hàng đợi PCB tài nguyên cấp giải phóng m https://fb.com/sinhvienzonevn 19 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.2 Điều phối tiến trình Bộ điều phối (Scheduler) I Lựa chọn tiến trình 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 ) Điều phối cơng việc : Chọn tiến trình từ hàng đợi tiến trình lưu vùng đệm (đĩa từ) đưa vào nhớ để thực Thực không thường xuyên (đơn vị giây/phút) Điều khiển mức độ đa chương trình (số t/trình nhớ ) Khi mức độ đa chương trình ổn định, điều phối cơng việc gọi có tiến trình rời khỏi hệ thống Vấn đề lựa chọn công việc Tiến trình thiên vào/ra: sử dụng thời gian CPU Tiến trình thiên tính tốn: sử dụng nhiều thời gian CPU Cần lựa chọn lẫn loại tiến tình ⇒ tt vào ra: hàng đợi sẵn sàng rỗng, lãng phí CPU ⇒ tthttps://fb.com/sinhvienzonevn tính tốn: hàng đợi thiết bị rỗng, lãng phí thiết bị m 20 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.2 Điều phối tiến trình Bộ điều phối (Scheduler) II Điều phối CPU : Lựa chọn tiến trình từ hàng đợi tiến trình sẵn sàng thực phân phối CPU cho Được thực thường xuyên (VD: 100ms/lần) Tiến trình thực vài ms thực vào Lựa chọn tiến trình mới, sẵn sàng Phải thực nhanh 10ms để định ⇒10/(110)=9% thời gian CPU lãng phí Vấn đề luân chuyển CPU từ tiến trình tới tiến trình khác Phải lưu trạng thái tiến trình cũ (PCB) khơi phục trạng thái cho tiến trình Thời gian luân chuyển lãng phí Có thể hỗ trợ phần cứng Vấn đề lựa chọn tiến trình (điều phối CPU) m https://fb.com/sinhvienzonevn 21 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.2 Điều phối tiến trình Swapping tiến trình (Medium-term scheduler) Nhiệm vụ Đưa t/trình khỏi nhớ (làm giảm mức độ đa chương trình) Sau đưa tiến trình quay trở lại (có thể vị trí khác) tiếp tục thực Mục đích: Giải phóng vùng nhớ, tạo vùng nhớ tự rộng m https://fb.com/sinhvienzonevn 22 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.2 Điều phối tiến trình Chuyển ngữ cảnh (context switch) Chuyển CPU từ tiến trình sang tiến trình khác (hốn đổi tiến trình thực hiện) Thực xuất tín hiệu ngắt (ngắt thời gian) tiến trình đưa lời gọi hệ thống (thực ra) Lưu đồ chuyển CPU t/trình(Silberschatz 2002) m https://fb.com/sinhvienzonevn 23 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.3 Thao tác tiến trình Tiến trình Khái niệm tiến trình Điều phối tiến trình (Process Scheduling) Thao tác tiến trình Hợp tác tiến trình Truyền thơng liên tiến trình m https://fb.com/sinhvienzonevn 24 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.3 Thao tác tiến trình Thao tác tiến trình Tạo tiến trình Kết thúc tiến trình m https://fb.com/sinhvienzonevn 25 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.3 Thao tá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 ⇒Cây 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 m https://fb.com/sinhvienzonevn 26 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.3 Thao tác tiến trình Kết thúc tiến trình Hồ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 Các tài nguyên cung cấp trả lại hệ thống 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 mức tài nguyên cấp Nhiệm vụ cung cấp cho tiến trình khơng 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 m https://fb.com/sinhvienzonevn 27 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.3 Thao tác tiến trình Một số hàm với tiến trình WIN32 API CreateProcess( .) LPCTSTR Tên chương trình thực LPTSTR Tham số dòng lệnh LPSECURITY_ATTRIBUTES Thuộc tính an ninh t/trình LPSECURITY_ATTRIBUTES Thuộc tính an ninh luồng BOOL Cho phép kế thừa thẻ thiết bị (TRUE/FALSE ) DWORD Cờ tạo tiến trình (VD CREATE_NEW_CONSOLE ) LPVOID Trỏ tới khối môi trường LPCTSTR Đường dẫn đầy đủ đến chương trình LPSTARTUPINFO Cấu trúc thơng tin cho tiến trình LPPROCESS_INFORMATION Thơng tin tiến trình m 28 / TerminateProcess(HANDLE hProcess, UINT uExitCode) hProcess Thẻ tiến trình bị kết thúc đóng uExitCode Mã kết thúc tiến trình WaitForSingleObject(HANDLE hHandle, DWORD dwMs) hHandle https://fb.com/sinhvienzonevn Thẻ đối tượng dwMs Thời gian chờ đợi (INFINITE ) 201 m Chương 2: Quản lý tiến trình Tiến trình 1.3 Thao tác tiến trình Ví dụ #include #include int main(){ STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); CreateProcess("Child.exe",NULL,NULL,NULL,FALSE, CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi); WaitForSingleObject(pi.hProcess,10000);//INFINITE TerminateProcess(pi.hProcess, 0); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); return 0; } 29 / 201 https://fb.com/sinhvienzonevn Chương 2: Quản lý tiến trình Tiến trình 1.4 Hợp tác tiến trình Tiến trình Khái niệm tiến trình Điều phối tiến trình (Process Scheduling) Thao tác tiến trình Hợp tác tiến trình Truyền thơng liên tiến trình m https://fb.com/sinhvienzonevn 30 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.4 Hợp tác tiến trình 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 https://fb.com/sinhvienzonevn Đồng hóa hoạt động tiến trình m 31 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.4 Hợp tác tiến trình Bài tốn người sản xuất (producer)-người tiêu thụ(consumer) I 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 Ví dụ ứ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 modulehttps://fb.com/sinhvienzonevn đối tượng thực (consumer ) tiêu thụ m 32 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.4 Hợp tác tiến trình Bài tốn người sản xuất (producer)-người tiêu thụ(consumer) II 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 đợ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 https://fb.com/sinhvienzonevn đợi vùng đệm đầy Producer phải m 33 / 201 m Chương 2: Quản lý tiến trình Tiến trình 1.4 Hợp tác tiến trình Bài toán người sản xuất (producer)-người tiêu thụ(consumer) III Producer while(1){ /*produce an item in nextProduced*/ while (Counter == BUFFER_SIZE) ; /*do nothing*/ Buffer[IN] = nextProduced; IN = (IN + 1) % BUFFER_SIZE; Counter++; } Consumer while(1){ while(Counter == 0) ; /*do nothing*/ nextConsumed = Buffer[OUT]; OUT =(OUT + 1) % BUFFER_SIZE; Counter ; /*consume the item in nextConsumed*/ } https://fb.com/sinhvienzonevn 34 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.5 Truyền thơng liên tiến trình Tiến trình Khái niệm tiến trình Điều phối tiến trình (Process Scheduling) Thao tác tiến trình Hợp tác tiến trình Truyền thơng liên tiến trình m https://fb.com/sinhvienzonevn 35 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.5 Truyền thơng liên 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 trình truyền thơng nằm máy khác (chat) Đảm bảo hệ thống truyền thông báo https://fb.com/sinhvienzonevn m 36 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.5 Truyền thơng liên tiến trình Hệ thống truyền thơng báo 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ột 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 https://fb.com/sinhvienzonevn hay hai chiều? m 37 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.5 Truyền thơng liên tiến trình 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 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 từ 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 m https://fb.com/sinhvienzonevn 38 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.5 Truyền thơng liên tiến trình Truyền thơng gián tiếp Các thơng báo gửi/nhận tới/từ hòm thư (mailboxes), cổng (ports) Mỗi hòm thư có định danh Các tiến trình trao đổi chúng dùng chung hòm thư Tính chất liên kết Các liên kết thiết lập tiến trình dùng chung hòm thư Một liên kết gắn với nhiều tiến trình Mỗi cặp tiến trình dùng chung nhiều liên kết truyền thông Liên kết hay hai chiều 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 msg tới hòm thư A receive(A, msg): Nhận msg từ hòm thư A https://fb.com/sinhvienzonevn Hủy bỏ hòm thư m 39 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.5 Truyền thơng liên tiến trình Vấn đề đồng hóa Truyền thơng báo phải chờ đợi (blocking ), không chờ đợi (non blocking ) Blocking Truyền thông đồng Non-blocking Truyền thông khơng đồng Các thủ tục send receive bị chờ đợi không chờ đợi Blocking send Tiến trình gửi thơng báo đợi msg nhận tiến trình nhận hòm thư Non blockking send Tiến trình gửi thơng báo tiếp tục làm việc Blocking receive Tiến trình nhận phải đợi có thơng báo Non-blocking receive Tiến trình nhận trả thơng báo có giá trị, giá trị null m https://fb.com/sinhvienzonevn 40 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.5 Truyền thơng liên tiến trình Vùng đệm Các thơng báo trao đổi tiến trình lưu hàng đợi tạm thời Hàng đợi cài đặt theo Khả chứa (Zero capacity ): Độ dài hàng đợi Không tồn thông báo đường liên kết ⇒ Sender phải đợi thơng báo nhận Khả chứa có giới hạn(Bound capacity ) Hàng đợi có đọ dài n ⇒ chứa nhiều n thông báo Nếu hàng đợi không đầy, thông báo lưu vào vùng đệm Sender tiếp tục bình thường Nếu hàng đợi đầy, sender phải đợi có chỗ trống Khả chứa không giới hạn (Unbound capacity ) Sender đợi m https://fb.com/sinhvienzonevn 41 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.5 Truyền thơng liên tiến trình Truyền thơng hệ thống Client-Server Socket Ràng buộc với địa IP cổng RPC (Remote Procedure Calls) RMI (Remote Method Invocation) Cơ chế Java m https://fb.com/sinhvienzonevn 42 / 201 Chương 2: Quản lý tiến trình Tiến trình 1.5 Truyền thơng liên tiến trình Bài tập Tìm hiểu phương pháp truyền thơng Client-Server Viết chương trình giải tốn Producer-Consumer m https://fb.com/sinhvienzonevn 43 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) Nội dung Tiến trình Luồng (Thread) Điều phối CPU Tài nguyên găng điều độ tiến trình Bế tắc xử lý bế tắc m https://fb.com/sinhvienzonevn 44 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Luồng (Thread) Giới thiệu Mơ hình đa luồng Cài đặt luồng m https://fb.com/sinhvienzonevn 45 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Ví dụ: Vector Tính tốn vector kích thước lớn for(k = 0; k < n; k + +){ a[k] = b[k] ∗ c[k]; } m https://fb.com/sinhvienzonevn 46 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Ví dụ: Vector Tính tốn vector kích thước lớn for(k = 0; k < n; k + +){ a[k] = b[k] ∗ c[k]; } Với hệ thống nhiều vi xử lý m https://fb.com/sinhvienzonevn 46 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Ví dụ: Chat m https://fb.com/sinhvienzonevn 47 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Ví dụ: Chat Process Q while(1){ Receive(P,Msg); PrintLine(Msg); ReadLine(Msg); Send(P,Msg); m} https://fb.com/sinhvienzonevn 47 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Ví dụ: Chat Process Q while(1){ Receive(P,Msg); PrintLine(Msg); ReadLine(Msg); Send(P,Msg); m} https://fb.com/sinhvienzonevn 47 / 201 Process P while(1){ ReadLine(Msg); Send(Q,Msg); Receive(Q,Msg); PrintLine(Msg); } Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Ví dụ: Chat Process Q while(1){ Receive(P,Msg); PrintLine(Msg); ReadLine(Msg); Send(P,Msg); m} Vấn đề nhận Msg Blocking Receive Non-blocking Receive https://fb.com/sinhvienzonevn 47 / 201 Process P while(1){ ReadLine(Msg); Send(Q,Msg); Receive(Q,Msg); PrintLine(Msg); } Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Ví dụ: Chat Process Q while(1){ Receive(P,Msg); PrintLine(Msg); ReadLine(Msg); Send(P,Msg); m} Vấn đề nhận Msg Blocking Receive Non-blocking Receive Giải Thực song song https://fb.com/sinhvienzonevn Receive & Send 47 / 201 Process P while(1){ ReadLine(Msg); Send(Q,Msg); Receive(Q,Msg); PrintLine(Msg); } Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Tiến trình đơn luồng đa luồng Hệ điều hành truyền thống Tiến trình có luồng điều khiển (heavyweight process) Hệ điều hành Tiến trình gồm nhiều luồng Có thể thực nhiều nhiệm vụ thời điểm m https://fb.com/sinhvienzonevn 48 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Ví dụ: Word processor (Tanenbaum 2001) m https://fb.com/sinhvienzonevn 49 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Khái niệm luồng Là đơn vị sử dụng CPU bản, gồm Định danh luồng (ID Thread ) Bộ đếm chương trình (Program Computer ) Tập ghi (Rigisters) Không gian stack Phân chia luồng khác tiến trình Đoạn mã lệnh Đoạn liệu (đối tượng toàn cục) Các tài nguyên hệ điều hành khác (file mở ) Các luồng thực đoạn mã với ngữ cảnh (Tập ghi, Bộ đếm chương trình, stack) khác Còn gọi tiến trình nhẹ (LWP: Lightweight Process) Một tiến trình có luồng m https://fb.com/sinhvienzonevn 50 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Lợi ích 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 thực phần chờ đợi (block) thực tính tố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 nhiệm vụ tải liệu m https://fb.com/sinhvienzonevn 51 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Lợi ích 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 thực phần chờ đợi (block) thực tính tố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 nhiệm vụ tải liệu Chia sẻ tài nguyên Các luồng chia sẻ nhớ tài nguyên tiến trình chứa Tốt cho thuật tốn song song (sử dụng chung CTDL) Trao đổi luồng thông qua nhớ phân chia Cho phép ứng dụng chứa nhiều luồng hoạt động không gian địa m https://fb.com/sinhvienzonevn 51 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Lợi ích 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 thực phần chờ đợi (block) thực tính tố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 nhiệm vụ tải liệu Chia sẻ tài nguyên Các luồng chia sẻ nhớ tài nguyên tiến trình chứa Tốt cho thuật tốn song song (sử dụng chung CTDL) Trao đổi luồng thông qua nhớ phân chia Cho phép ứng dụng chứa nhiều luồng hoạt động không gian địa Tính kinh tế Các thao tác khởi tạo, hủy bỏ luân chuyển luồng tốn Minh họa tính song song đơn VXL thời gian luân chuyển CPU nhanh (Thực tế luồng thực hiện) m https://fb.com/sinhvienzonevn 51 / 201 m Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Lợi ích 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 thực phần chờ đợi (block) thực tính tố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 nhiệm vụ tải liệu Chia sẻ tài nguyên Các luồng chia sẻ nhớ tài nguyên tiến trình chứa Tốt cho thuật tốn song song (sử dụng chung CTDL) Trao đổi luồng thông qua nhớ phân chia Cho phép ứng dụng chứa nhiều luồng hoạt động không gian địa Tính kinh tế Các thao tác khởi tạo, hủy bỏ luân chuyển luồng tốn Minh họa tính song song đơn VXL thời gian luân chuyển CPU nhanh (Thực tế luồng thực hiện) Sử dụng kiến trúc nhiều vi xử lý https://fb.com/sinhvienzonevn Các luồng chạy song song thực VXL khác 51 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Tiến trình >< Luồng Tiến trình Luồng Tiến trình có đoạn mã/dữ liệu/heap & đoạn khác m https://fb.com/sinhvienzonevn 52 / 201 Luồng khơng có đoạn liệu hay heap riêng Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Tiến trình >< Luồng Tiến trình Luồng Tiến trình có đoạn mã/dữ liệu/heap & đoạn khác Luồng khơng có đoạn liệu hay heap riêng Phải có luồng tiến trình Luồng khơng đứng riêng mà nằm tiến trình m https://fb.com/sinhvienzonevn 52 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Tiến trình >< Luồng Tiến trình Luồng Tiến trình có đoạn mã/dữ liệu/heap & đoạn khác Luồng khơng có đoạn liệu hay heap riêng Phải có luồng tiến trình Luồng khơng đứng riêng mà nằm tiến trình Các luồng phạm vi tiến trình chia sẻ mã/dữ liệu/heap, vào/ra có stack tập ghi riêng Có thể tồn nhiều luồng mỗt tiến trình Luồng đầu luồng sở hữu khơng gian stack tiến trình m https://fb.com/sinhvienzonevn 52 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Tiến trình >< Luồng Tiến trình Luồng Tiến trình có đoạn mã/dữ liệu/heap & đoạn khác Luồng khơng có đoạn liệu hay heap riêng Phải có luồng tiến trình Luồng khơng đứng riêng mà nằm tiến trình Các luồng phạm vi tiến trình chia sẻ mã/dữ liệu/heap, vào/ra có stack tập ghi riêng Có thể tồn nhiều luồng mỗt tiến trình Luồng đầu luồng sở hữu khơng gian stack tiến trình Thao tác khởi tạo, luân chuyển tiến trình tốn Thao tác khởi tạo luân chuyển luồng không tốn m https://fb.com/sinhvienzonevn 52 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Tiến trình >< Luồng Tiến trình Luồng Tiến trình có đoạn mã/dữ liệu/heap & đoạn khác Luồng khơng có đoạn liệu hay heap riêng Phải có luồng tiến trình Luồng khơng đứng riêng mà nằm tiến trình Các luồng phạm vi tiến trình chia sẻ mã/dữ liệu/heap, vào/ra có stack tập ghi riêng Có thể tồn nhiều luồng mỗt tiến trình Luồng đầu luồng sở hữu khơng gian stack tiến trình Thao tác khởi tạo, luân chuyển tiến trình tốn Thao tác khởi tạo luân chuyển luồng khơng tốn Bảo vệ tốt có khơng gian điạ riêng Không gian điạ chung, cần phải bảo vệ m https://fb.com/sinhvienzonevn 52 / 201 m Chương 2: Quản lý tiến trình Luồng (Thread) 2.1 Giới thiệu Tiến trình >< Luồng Tiến trình Luồng Tiến trình có đoạn mã/dữ liệu/heap & đoạn khác Luồng khơng có đoạn liệu hay heap riêng Phải có luồng tiến trình Luồng khơng đứng riêng mà nằm tiến trình Các luồng phạm vi tiến trình chia sẻ mã/dữ liệu/heap, vào/ra có stack tập ghi riêng Có thể tồn nhiều luồng mỗt tiến trình Luồng đầu luồng sở hữu khơng gian stack tiến trình Thao tác khởi tạo, luân chuyển tiến trình tốn Thao tác khởi tạo luân chuyển luồng không tốn Bảo vệ tốt có khơng gian điạ riêng Không gian điạ chung, cần phải bảo vệ Khi tiến trình kết thúc, tài Luồng kết thúc, stack ngun đòi lại luồng thu hồi https://fb.com/sinhvienzonevn phải kết thúc theo 52 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.2 Mơ hình đa luồng Luồng (Thread) Giới thiệu Mơ hình đa luồng Cài đặt luồng m https://fb.com/sinhvienzonevn 53 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.2 Mơ hình đa luồng Luồng người dùng luồng nhân Luồng mức người dùng (User threads) Được cài đặt thư viện luồng mức người dùng Thư viện hỗ trợ tạo, điều phối, quản lý luồng Thao tác luồng thực không gian người dùng (nhân khơng biết luồng người dùng nên khơng can thiệp) Tạo quản lý luồng nhanh chóng Nếu nhân đơn luồng ⇒Một luồng chờ đợi vào làm cho tồn tiến trình phải đợi theo Luồng mức hệ thống (Kernel threads) Được hỗ trợ trực tiếp HĐH Nhân thực tạo, lập lịch, quản lý luồng không gian nhân Hệ điều hành quản lý luồng: Chậm tạo quản lý luồng 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 điều phối luồng https://fb.com/sinhvienzonevn cho VXL khác m 54 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.2 Mơ hình đa luồng Mơ hình nhiều-một Á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ý (Chỉ luồng truy nhập nhân thời điểm) Dùng hệ điều hành không hỗ trợ luồng hệ thống m https://fb.com/sinhvienzonevn 55 / 201 m Chương 2: Quản lý tiến trình Luồng (Thread) 2.2 Mơ hình đa luồng Mơ hình một-một Á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ị khóa 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 phi cao ⇒ Giới hạn số luồng hệ thống hỗ trợ https://fb.com/sinhvienzonevn Được sử dụng Win XP 56 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.2 Mơ hình đa luồng 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 theo 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 m https://fb.com/sinhvienzonevn 57 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.3 Cài đặt luồng Luồng (Thread) Giới thiệu Mô hình đa luồng Cài đặt luồng m https://fb.com/sinhvienzonevn 58 / 201 m Chương 2: Quản lý tiến trình Luồng (Thread) 2.3 Cài đặt luồng Một số hàm với luồng WIN32 API HANDLE CreateThread( .); LPSECURITY_ATTRIBUTESlpThreadAttributes, ⇒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 lpStartAddress, ⇒Trỏ tới hàm thực luồng LPVOID lpParameter, ⇒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 LPDWORD lpThreadId ⇒Biến ghi nhận định danh luồng Kết trả về: Thẻ luồng giá trị NULL https://fb.com/sinhvienzonevn không tạo luồng 59 / 201 m Chương 2: Quản lý tiến trình Luồng (Thread) 2.3 Cài đặt luồng Ví dụ #include #include void Routine(int n){ printf("My argument is %d\n", n); } int main(){ int i, P[5]; HANDLE hHandles[5]; DWORD Id; for (i=0;i < 5;i++) { P[i] = i; hHandles[i] = CreateThread(NULL,0,Routine,P[i],0,&Id); printf("Thread %d was created\n",Id); } for (i=0;i < 5;i++) WaitForSingleObject(hHandles[i],INFINITE); return 0; https://fb.com/sinhvienzonevn } 60 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.3 Cài đặt luồng Java Threads Được cài đặt Mở rộng lớp Thread (Thread class) Cài đặt giao diện thực thi (Runnable interface) Được quản lý máy ảo Java (Java 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áy ảo Java Gọi tới phương thức run() https://fb.com/sinhvienzonevn m 61 / 201 m Chương 2: Quản lý tiến trình Luồng (Thread) 2.3 Cài đặt luồng Ví dụ class Sum extends Thread{ int low, up, S; public Sum(int a, int b){ low = a; up = b; S= 0; System.out.println("This is Thread "+this.getId()); } public void run(){ for(int i= low; i < up; i ++) S+= i; System.out.println(this.getId()+ " : " + S); } } public class Tester { public static void main(String[] args) { Sum T1 = new Sum(1,100); T1.start(); Sum T2 = new Sum(10,200); T2.start(); System.out.println("Main process terminated"); } https://fb.com/sinhvienzonevn } 62 / 201 m Chương 2: Quản lý tiến trình Luồng (Thread) 2.3 Cài đặt luồng 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 ThreadId; h1 = CreateThread(NULL,0,T1, NULL,0,&ThreadId); h2 = CreateThread(NULL,0,T2, NULL,0,&ThreadId); WaitForSingleObject(h1,INFINITE); WaitForSingleObject(h2,INFINITE); return 0; } https://fb.com/sinhvienzonevn 63 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.3 Cài đặt luồng Vấn đề đa luồng Shared int y = Thread T1 Thread T2 y ←2 x ←y+ y←y*2 x=? Thread A Thread B t m https://fb.com/sinhvienzonevn 64 / 201 Chương 2: Quản lý tiến trình Luồng (Thread) 2.3 Cài đặt luồng Vấn đề đa luồng Shared int y = Thread T1 Thread T2 y ←2 x ←y+ y←y*2 x=? Thread A x ←y+ x=2 m https://fb.com/sinhvienzonevn 64 / 201 Thread B ta t1 y ←2 t2 x ←y*2 t Chương 2: Quản lý tiến trình Luồng (Thread) 2.3 Cài đặt luồng Vấn đề đa luồng Shared int y = Thread T1 Thread T2 y ←2 x ←y+ y←y*2 x=? Thread A x ←y+ x=3 m https://fb.com/sinhvienzonevn 64 / 201 Thread B t1 y ←2 t2 x ←y*2 ta t Chương 2: Quản lý tiến trình Luồng (Thread) 2.3 Cài đặt luồng Vấn đề đa luồng Shared int y = Thread T1 Thread T2 y ←2 x ←y+ y←y*2 x=? Thread A x ←y+ x=5 m https://fb.com/sinhvienzonevn 64 / 201 Thread B t1 y ←2 t2 x ←y*2 ta t Chương 2: Quản lý tiến trình Luồng (Thread) 2.3 Cài đặt luồng Vấn đề đa luồng Shared int y = Thread T1 Thread T2 y ←2 x ←y+ 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 m Thread A x ←y+ x=5 https://fb.com/sinhvienzonevn 64 / 201 Thread B t1 y ←2 t2 x ←y*2 ta t Chương 2: Quản lý tiến trình Luồng (Thread) 2.3 Cài đặt luồng Bài tập Cài đặt toán Producer-Consumer sử dụng khái niệm luồng Viết chương trình trao đổi thơng báo máy (chat) m https://fb.com/sinhvienzonevn 65 / 201 Chương 2: Quản lý tiến trình Điều phối CPU Nội dung Tiến trình Luồng (Thread) Điều phối CPU Tài nguyên găng điều độ tiến trình Bế tắc xử lý bế tắc m https://fb.com/sinhvienzonevn 66 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.1 Các khái niệm Điều phối CPU Các khái niệm Tiêu chuẩn điều phối Các thuật toán điều phối CPU Điều phối đa xử lý m https://fb.com/sinhvienzonevn 67 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.1 Các khái niệm Giới thiệu Tiến trình thực phải chờ đợi thao tác vào Hệ đơn chương trình: CPU khơng 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 tiến trình khác (đang chờ đợi) Cần nhiều tiến trình sẵn sàng nhớ thời điểm Khi tiến trình phải chờ, hệ điều hành lấy CPU cho tiến trình khác Điều phối CPU quan với hệ điều hành đa nhiệm Luân chuyển CPU tiến trình làm cho máy tính khai thác hiệu m https://fb.com/sinhvienzonevn 68 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.1 Các khái niệm Chu CPU - I/O Tiến trình chuỗi luân phiên chu kỳ tính tốn chờ đợi vào/ra Bắt đầu chu kỳ tính tốn Tiếp theo chu kỳ đợi vào/ra Tính tốn→ đợi vào/ra → tính tốn → đợi vào/ra → Kết thúc: Tính tốn (u cầu hệ thống kết thúc thực hiện) Phân biệt kiểu tiến trình Dựa phân bổ thời gian cho chu kỳ CPU & vào/ra Tiến trình tính tốn (CPU-bound process) có vài chu kỳ CPU dài Tiến trình vào (I/0-bound process) có nhiều chu kỳ CPU ngắn Để chọn giải thuật điều phối thích hợp https://fb.com/sinhvienzonevn m 69 / 201 m Chương 2: Quản lý tiến trình Điều phối CPU 3.1 Các khái niệm Bộ điều phối CPU Lựa chọn số tiến trình sẵn sàng nhớ cung cấp CPU cho Các tiến trình phải hàng hàng đợi Hàng đợi FIFO, Hàng đợi ưu tiên, DSLK đơn giản Quyết định điều phối CPU xảy tiến trình Chuyển từ trạng thái thực sang trạng thái chờ đợi (y/c vào/ra) Chuyển từ trạng thái thực sang trạng thái sẵn sàng (, hết thời gian sử dụng CPU: ngắt thời gian) Chuyển từ trạng thái chờ đợi sang trạng thái sẵn sàng (hoàn thành vào/ra) Tiến trình kết thúc Trường hợp 1&4 ⇒Điều phối khơng trưng dụng (non-preemptive) Trường hợp khác ⇒Điều phối trưng dụng (preemptive) https://fb.com/sinhvienzonevn 70 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.1 Các khái niệm Điều phối trưng dụng không trưng dụng Điều phối khơng trưng dụng Tiến trình chiếm CPU giải phóng Kết thúc nhiệm vụ Chuyển sang trạng thái chờ đợi Khơng đòi hỏi phần cứng đặc biệt (đồng hồ ) Ví dụ: DOS, Win 3.1, Macintosh Điều phối trưng dụng Tiến trình phép thực khoảng thời gian Kết thúc khoảng thời gian định nghĩa trước, ngắt thời gian xuất hiện, điều vận (dispatcher ) kích hoạt để định hồi phục lại tiến trình hay lựa chọn tiến trình khác Bảo vệ CPU khỏi tiến trình "đói-CPU" Vấn đề liệu dùng chung Tiến trình cập nhật DL bị CPU Tiến trình 2, giao CPU đọc DL cập nhật Ví dụ: Hệ điều hành đa nhiệm WinNT, UNIX https://fb.com/sinhvienzonevn m 71 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.2 Tiêu chuẩn điều phối Điều phối CPU Các khái niệm Tiêu chuẩn điều phối Các thuật toán điều phối CPU Điều phối đa xử lý m https://fb.com/sinhvienzonevn 72 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.2 Tiêu chuẩn điều phối Tiêu chuẩn điều phối I Sử dụng CPU (Lớn nhất) Mục đích điều độ làm CPU hoạt động nhiều Độ sử dụng CPU thay đổi từ 40% (hệ thống tải nhẹ) đến 90% (hệ thống tải nặng ) Thông lượng (throughput) (Lớn nhất) Số lượng tiến trình hồn thành đơn vị thời gian Các tiến trình dài: tiến trình/giờ Các tiến trình ngắn: 10 tiến trình/giây Thời gian hồn thành (Nhỏ nhất) Khoảng thời gian từ thời điểm gửi đến hệ thống tới q trình hồn thành Thời gian chờ đợi để đưa tiến trình vào nhớ Thời gian chờ đợi hàng đợi sẵn sàng Thời gian chờ đợi hàng đợi thiết bị Thời gian thực thực tế https://fb.com/sinhvienzonevn m 73 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.2 Tiêu chuẩn điều phối Tiêu chuẩn điều phối II Thời gian chờ đợi (Nhỏ nhất) Tổng thời gian chờ hàng đợi sẳn sàng (Giải thuật điều độ CPU không ảnh hưởng tới tiến trình thực hay đợi thiết bị vào ra) Thời gian đáp ứng (Nhỏ nhất) Từ lúc gửi câu hỏi câu trả lời tạo Tiến trình tạo kết phần Tiến trình tiếp tục tính tốn kết hi kết cũ gửi tới người dùng Giả thiết: Các tiến trình có chu kỳ tính tốn (ms) Đo đạc: Thời gian chờ đợi trung bình m https://fb.com/sinhvienzonevn 74 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.3 Các thuật toán điều phối CPU Điều phối CPU Các khái niệm Tiêu chuẩn điều phối Các thuật toán điều phối CPU Điều phối đa xử lý m https://fb.com/sinhvienzonevn 75 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.3 Các thuật toán điều phối CPU Đến trước phục vụ trước (FCFS: First Come, First Served) Nguyên tắc: Tiến trình quyền sử dụng CPU theo trình tự xuất Tiến trình sở hữu CPU tới kết thúc chờ đợi vào Ví dụ Tiến trình P1 P2 P3 Thời gian 24 3 Đặc điểm Đơn giản, dễ thực Tiến trình ngắn phải chờ đợi tiến trình dài (Nếu P1 thực sau ?) https://fb.com/sinhvienzonevn m 76 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.3 Các thuật toán điều phối CPU Công việc ngắn trước (SJF: Shortest Job First) Nguyên tắc Mỗi tiến trình lưu trữ thời gian chu kỳ sử dụng CPU Tiến trình có thời gian sử dụng CPU ngắn sở hữu CPU Hai phương pháp Khơng trưng dụng CPU Có trưng dụng CPU (SRTF: Shortest Remaining Time First) Ví dụ Tiến trình P1 P2 P3 P3 Thời gian Thời điểm đến Đặc điểm SJF tối ưu: Đưa thời gian chờ đợi trung bình nhỏ Khơng thể biết xác thời gian chu kỳ sử dụng CPU m https://fb.com/sinhvienzonevn Dự báo dựa giá trị trước 77 / 201 m Chương 2: Quản lý tiến trình Điều phối CPU 3.3 Các thuật tốn điều phối CPU Điều phối có ưu tiên (Priority Scheduling) Nguyên tắc Mỗi tiến trình gắn với sô hiệu ưu tiên (số nguyên) CPU phân phối cho tiến trình có độ ưu tiên cao SJF: độ ưu tiên gắn liền với thời gian thực Hai phương pháp Khơng trưng dụng CPU Có trưng dụng CPU Ví dụ Tiến trình P1 P2 P3 P3 P3 Thời gian 10 Độ ưu tiên Vấn đề "Nạn đói": Tiến trình có độ ưu tiên thấp phải chờ đợi lâu (thậm chí khơng thực hiện) https://fb.com/sinhvienzonevn Giải pháp tăng dần độ ưu tiên tt theo t/gian hệ thống 78 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.3 Các thuật tốn điều phối CPU Vòng tròn (RR: Round Robin Scheduling) Nguyên tắc Mỗi tiến trình cấp lượng tử thời gian τ để thực Khi hết thời gian, tiến trình bị trưng dụng processor đưa vào cuối hàng đợi sẵn sàng Nếu có n tiến trình, thời gian chờ đợi nhiều (n − 1)τ Ví dụ Tiến trình P1 P2 P3 Thời gian 24 3 Lượng tử thời gian τ = ⇒ t wait = 5.66 Vấn đề: Lựa chọn lượng tử thời gian τ τ lớn: FCFS τ nhỏ: Hãy phải luân chuyển CPU τ = 10-100ms Thông thường https://fb.com/sinhvienzonevn m 79 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.3 Các thuật toán điều phối CPU Điều phối hàng đợi đa mức (Multilevel Queue Scheduling) m https://fb.com/sinhvienzonevn 80 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.3 Các thuật toán điều phối CPU Hàng đợi đa mức có phản hồi (Multilevel Feeedback Queue) m https://fb.com/sinhvienzonevn 81 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.4 Điều phối đa xử lý Điều phối CPU Các khái niệm Tiêu chuẩn điều phối Các thuật toán điều phối CPU Điều phối đa xử lý m https://fb.com/sinhvienzonevn 82 / 201 Chương 2: Quản lý tiến trình Điều phối CPU 3.4 Điều phối đa xử lý Vấn đề Điều phối phức tạp so với trường hợp có VXL Vấn đề chia sẻ tải Mỗi VXL có hàng đợi sẵn sàng riêng Tồn VXL rảnh rỗi với hàng đợi rỗng VXL khác phải tính tốn nhiều Hàng đợi sẵn sàng dùng chung Vấn đề dùng chung CTDL, phải điều độ Đa xử lý không đối xứng Chỉ có VXL sử dụng hàng đợi Hủy bỏ vấn đề dùng chung CTDL m https://fb.com/sinhvienzonevn 83 / 201 Chương 2: Quản lý tiến trình Điều phối CPU Bài tập Viết chương trình mơ hàng đợi đa mức có phản hồi m https://fb.com/sinhvienzonevn 84 / 201 Chương 2: Quản lý tiến trình Điều phối CPU Kết luận m https://fb.com/sinhvienzonevn 85 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình Tiến trình Luồng (Thread) Điều phối CPU Tài nguyên găng điều độ tiến trình Bế tắc xử lý bế tắc m https://fb.com/sinhvienzonevn 86 / 201 m (Nguồn: http://sedition.com/a/393 ) https://fb.com/sinhvienzonevn Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Khái niệm tài nguyên găng Phương pháp khóa Phương pháp kiểm tra xác lập Kỹ thuật đèn báo Ví dụ đồng tiến trình Cơng cụ điều độ cấp cao m https://fb.com/sinhvienzonevn 88 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Luồng song song #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 ThreadId; h1 = CreateThread(NULL,0,T1, NULL,0,&ThreadId); h2 = CreateThread(NULL,0,T2, NULL,0,&ThreadId); WaitForSingleObject(h1,INFINITE); WaitForSingleObject(h2,INFINITE); return 0; } https://fb.com/sinhvienzonevn 89 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Luồng song song Shared int y = Thread T1 Thread T2 y ←2 x ←y+ y←y*2 x=? Thread A Thread B t m https://fb.com/sinhvienzonevn 90 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Luồng song song Shared int y = Thread T1 Thread T2 y ←2 x ←y+ y←y*2 x=? Thread A x ←y+ x=2 m https://fb.com/sinhvienzonevn 90 / 201 Thread B ta t1 y ←2 t2 x ←y*2 t Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Luồng song song Shared int y = Thread T1 Thread T2 y ←2 x ←y+ y←y*2 x=? Thread A x ←y+ x=3 m https://fb.com/sinhvienzonevn 90 / 201 Thread B t1 y ←2 t2 x ←y*2 ta t Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Luồng song song Shared int y = Thread T1 Thread T2 y ←2 x ←y+ y←y*2 x=? Thread A x ←y+ x=5 m https://fb.com/sinhvienzonevn 90 / 201 Thread B t1 y ←2 t2 x ←y*2 ta t Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Luồng song song Shared int y = Thread T1 Thread T2 y ←2 x ←y+ 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 m Thread A x ←y+ x=5 https://fb.com/sinhvienzonevn 90 / 201 Thread B t1 y ←2 t2 x ←y*2 ta t m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Producer-Consumer Producer while(1){ /*produce an item */ while(Counter==BUFFER_SIZE); Buffer[IN] = nextProduced; IN = (IN+1)%BUFFER_SIZE; Counter++; } Consumer while(1){ while(Counter == 0); nextConsumed = Buffer[OUT]; OUT=(OUT+1)%BUFFER_SIZE; Counter ; /*consume the item*/ } Nhận xét Producer sản xuất sản phẩm Consumer tiêu thụ sản phẩm ⇒Số sản phẩm Buffer khơng thay đổi https://fb.com/sinhvienzonevn 91 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Producer-Consumer Counter++ Load R1, Counter Inc R1 Store Counter, R1 Counter−− Load R2, Counter Dec R2 Store Counter, R2 m https://fb.com/sinhvienzonevn 92 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Producer-Consumer Counter++ Load R1, Counter Inc R1 Store Counter, R1 Counter−− Load R2, Counter Dec R2 Store Counter, R2 m Counter++ R1 =? https://fb.com/sinhvienzonevn 92 / 201 Counter−− t Counter=5 R2 =? Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Producer-Consumer Counter++ Load R1, Counter Inc R1 Store Counter, R1 Counter−− Load R2, Counter Dec R2 Store Counter, R2 m Counter++ Load R1,Counter R1 = https://fb.com/sinhvienzonevn 92 / 201 Counter−− t Counter=5 R2 =? Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Producer-Consumer Counter++ Load R1, Counter Inc R1 Store Counter, R1 Counter−− Load R2, Counter Dec R2 Store Counter, R2 m Counter++ Load R1,Counter Load R2,Counter R1 = https://fb.com/sinhvienzonevn 92 / 201 Counter−− t Counter=5 R2 = Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Producer-Consumer Counter++ Load R1, Counter Inc R1 Store Counter, R1 Counter++ Counter−− Load R1,Counter Load R2,Counter Inc R1 Counter−− Load R2, Counter Dec R2 Store Counter, R2 m R1 = https://fb.com/sinhvienzonevn 92 / 201 t Counter=5 R2 = Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Producer-Consumer Counter++ Load R1, Counter Inc R1 Store Counter, R1 Counter++ Counter−− Load R1,Counter Load R2,Counter Inc R1 Dec R2 Counter−− Load R2, Counter Dec R2 Store Counter, R2 m R1 = https://fb.com/sinhvienzonevn 92 / 201 t Counter=5 R2 = Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Producer-Consumer Counter++ Load R1, Counter Inc R1 Store Counter, R1 Counter++ Counter−− Load R1,Counter Load R2,Counter Inc R1 Dec R2 Counter−− Load R2, Counter Dec R2 Store Counter, R2 m Store Counter, R1 R1 = https://fb.com/sinhvienzonevn 92 / 201 t Counter=6 R2 = Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Producer-Consumer Counter++ Load R1, Counter Inc R1 Store Counter, R1 Counter++ Counter−− Load R1,Counter Load R2,Counter Inc R1 Dec R2 Counter−− Load R2, Counter Dec R2 Store Counter, R2 m Store Counter, R1 Store Counter, R2 R1 = https://fb.com/sinhvienzonevn 92 / 201 t Counter=4 R2 = Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Định nghĩa Tài nguyên Tất cần thiết cho thực tiến trình m https://fb.com/sinhvienzonevn 93 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Định nghĩa Tài nguyên Tất cần thiết cho thực tiến trình Tài nguyên găng Tài nguyên hạn chế khả sử dụng chung Cần đồng thời cho nhiều tiến trình Tài ngun găng thiết bị vật lý hay liệu dùng chung m https://fb.com/sinhvienzonevn 93 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Định nghĩa Tài nguyên Tất cần thiết cho thực tiến trình Tài nguyên găng Tài nguyên hạn chế khả sử dụng chung Cần đồng thời cho nhiều tiến trình Tài nguyên găng thiết bị vật lý hay liệu dùng chung Vấn đề Dùng chung tài ngun găng dẫn đến khơng đảm bảo tính tồn vẹn liệu ⇒ Đòi hỏi chế đồng hóa tiến trình https://fb.com/sinhvienzonevn 93 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Điều kiện cạnh tranh (Race condition) Tình trạng kết việc nhiều tiến trình truy nhập tới liệu phân chia phụ thuộc vào trật tự truy nhập Làm cho chương trình khơng xác định Ngăn ngừa điều kiện cạnh tranh thực đồng hóa (synchronize) tiến trình thực đồng thời Chỉ tiến trình truy nhập tới liệu phân chia thời điểm Biến counter v/đề Producer-Consumer Đoạn lệnh truy nhập tới liệu phân chia tiến trình phải thực theo thứ tự xác định VD Lệnh x←y+1 Thread T1 thực https://fb.com/sinhvienzonevn lệnh Thread T2 thực xong m 94 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Đoạn găng (Critical section) Đoạn găng (chỗ hẹp) đoạn chương trình sử dụng tài nguyên găng (thực truy nhập thao tác liệu dùng chung ) Khi có nhiều tiến trình sử dụng tài ngun găng phải điều độ Mục đích: đảm bảo khơng có q tiến trình nằm đoạn găng m https://fb.com/sinhvienzonevn 95 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Yêu cầu chương trình điều độ Loại trừ lẫn (Mutual Exclusion) Khi tiến trình thực đoạn găng khơng tiến trình khác quyền vào đoạn găng Tiến triển (Progress) Tài nguyên găng khả phục vụ tồn tiến trình muốn vào đoạn găng, tiến trình phải sử dụng tài ngun găng Chờ đợi hữu hạn (Bounded Waiting) Nếu tài nguyên găng hết khả phục vụ tồn tiến trình muốn vào đoạn găng, tiến trình phải xếp hàng chờ đợi chờ đợi hữu hạn m https://fb.com/sinhvienzonevn 96 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Quy ước Có tiến trình P1 &P2 thực đồng thời Các tiến trình dùng chung tài nguyên găng Mỗi tiến trình đặt đoạn găng đầu, phần lại Tiến trình phải xin phép trước vào đoạn găng {phần vào} Tiến trình khỏi đoạn găng thực {phần ra} Cấu trúc tổng quát tiến trình do{ Phần vào {Đoạn găng tiến trình} Phần {Phần lại tiến trình} }while(1); m https://fb.com/sinhvienzonevn 97 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.1 Khái niệm tài nguyên găng Phân loại phương pháp Các công cụ cấp thấp Phương pháp khóa Phương pháp kiểm tra xác lập Kỹ thuật đèn báo Các công cụ cấp cao Monitor m https://fb.com/sinhvienzonevn 98 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.2 Phương pháp khóa Tài nguyên găng điều độ tiến trình Khái niệm tài nguyên găng Phương pháp khóa Phương pháp kiểm tra xác lập Kỹ thuật đèn báo Ví dụ đồng tiến trình Công cụ điều độ cấp cao m https://fb.com/sinhvienzonevn 99 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.2 Phương pháp khóa Nguyên tắc Mỗi t/trình dùng byte vùng nhớ chung làm khóa Tiến trình vào đoạn găng, bật khố (byte khóa: true) Tiến trình khỏi đoạn găng, mở khóa (byte khóa: false) Tiến trình muốn vào đoạn găng: kiểm tra khóa tiến trình lại Đang khóa ⇒ Đợi Được quyền vào đoạn găng Đang mở ⇒ https://fb.com/sinhvienzonevn m 100 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.2 Phương pháp khóa Thuật tốn điều độ Các biến dùng chung: Boolean C1 ,C2 (Các khóa) Khởi tạo Ci = Cj = false m https://fb.com/sinhvienzonevn 101 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.2 Phương pháp khóa Thuật toán điều độ Các biến dùng chung: Boolean C1 ,C2 (Các khóa) Khởi tạo Ci = Cj = false Process P1 do{ while(C2 == true); C1 == true; {Đoạn găng tiến trìnhP1 } C1 == false; {Phần lại tiến trìnhP1 } }while(1); m Process P2 do{ while(C1 == true); C2 == true; {Đoạn găng tiến trìnhP2 } C2 == false; {Phần lại tiến trìnhP2 } }while(1); https://fb.com/sinhvienzonevn 101 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.2 Phương pháp khóa Thuật toán điều độ Các biến dùng chung: Boolean C1 ,C2 (Các khóa) Khởi tạo Ci = Cj = false Process P1 do{ while(C2 == true); C1 == true; {Đoạn găng tiến trìnhP1 } C1 == false; {Phần lại tiến trìnhP1 } }while(1); C1 == true; while(C2 == true); 101 / 201 Process P2 do{ while(C1 == true); C2 == true; {Đoạn găng tiến trìnhP2 } C2 == false; {Phần lại tiến trìnhP2 } }while(1); C2 == true; while(C1 == true); https://fb.com/sinhvienzonevn Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.2 Phương pháp khóa Nhận xét Điều độ chưa hợp lý Hai t/trình yêu cầu tài nguyên thời điểm Vấn đề loại trừ lẫn (trường hợp ) Vấn đề tiến triển (trường hợp ) Nguyên nhân : Do tách rời Kiểm tra quyền vào đoạn găng Xác lập quyền sử dụng tài nguyên găng m https://fb.com/sinhvienzonevn 102 / 201 m} Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.2 Phương pháp khóa Thuật toán Dekker Sử dụng biến turn để tiến trình quyền ưu tiên Process P1 Process P2 do{ C1 ← true; while(C2 ==true){ if(turn == 2){ C1 ← false; while(turn ==2); C1 ← true; } } {Đoạn găng tiến trình P1 } turn = 2; C1 ← false; do{ C2 ← true; while(C1 ==true){ if(turn == 1){ C2 ← false; while(turn ==1); C2 ← true; } } {Đoạn găng tiến trình P2 } turn = 1; C2 ← false; {Phần lại tiến trình P1 } {Phần lại tiến trình P2 } https://fb.com/sinhvienzonevn while(1); }while(1); 103 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.2 Phương pháp khóa Nhận xét Điều độ hợp lý cho trường hợp Khơng đòi hỏi hỗ trợ đặc biệt phần cứng nên thực ngôn ngữ Quá phức tạp số tiến trình số tài nguyên tăng lên Phải chờ đợi tích cực (busy waiting ) trước vào đoạn găng Trong chờ đợi phải thực kiểm tra quyền vào đoạn găng m https://fb.com/sinhvienzonevn 104 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.3 Phương pháp kiểm tra xác lập (Test anh Set) Tài nguyên găng điều độ tiến trình Khái niệm tài nguyên găng Phương pháp khóa Phương pháp kiểm tra xác lập Kỹ thuật đèn báo Ví dụ đồng tiến trình Cơng cụ điều độ cấp cao m https://fb.com/sinhvienzonevn 105 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.3 Phương pháp kiểm tra xác lập (Test anh Set) Nguyên tắc Sử dụng hỗ trợ từ phần cứng Phần cứng cung cấp câu lệnh xử lý không tách rời Kiểm tra thay đổi nội dung word boolean TestAndSet(boolean &target) { boolean rv = target; target = true; return rv; } Hoán đổi nội dung word khác void Swap(boolean &a, boolean &b) { boolean temp = a; a = b; b = temp; } Xử lý không tách rời (atomically ) m 106 / 201 Khối lệnh https://fb.com/sinhvienzonevn bị ngắt thực Được gọi đồng thời, thực theo thứ tự Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.3 Phương pháp kiểm tra xác lập (Test anh Set) Thuật toán với lệnh TestAndSet Biến phân chia Boolean: Lock: trạng thái tài nguyên: Bị khóa (Lock=true) Tự (Lock=false) Khởi tạo: Lock = false ⇒ Tài ngun tự Thuật tốn cho tiến trình Pi do{ while(TestAndSet(Lock)); {Đoạn găng tiến trình} Lock = false; {Phần lại tiến trình} }while(1); m https://fb.com/sinhvienzonevn 107 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.3 Phương pháp kiểm tra xác lập (Test anh Set) Thuật toán với lệnh Swap Biến phân chia Lock cho biết trạng thái tài nguyên Biến địa phương cho tiến trình: Key: Boolean Khởi tạo: Lock = false ⇒ Tài ngun tự Thuật tốn cho tiến trình Pi do{ key = true; while(key == true) swap(Lock, Key); {Đoạn găng tiến trình} Lock = false; {Phần lại tiến trình} }while(1); m https://fb.com/sinhvienzonevn 108 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.3 Phương pháp kiểm tra xác lập (Test anh Set) Nhận xét Đơn giản, không phức tạp số tiến trình số đoạn găng tăng lên Các tiến trình phải chờ đợi tích cực trước vào đoạn găng Luôn kiểm tra xem tài nguyên găng giải phóng chưa ⇒ Sử dụng Processor không hiệu Không đảm bảo yêu cầu chờ đợi hữu hạn Tiến trình vào đoạn găng tiếp theo, phụ thuộc thời điểm giải phóng tài nguyên tiến trình chiếm giữ ⇒ Cần khắc phục m https://fb.com/sinhvienzonevn 109 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.3 Phương pháp kiểm tra xác lập (Test anh Set) Thuật tốn cho nhiều tiến trình Ngun tắc: Tiến trình khỏi đoạn găng tìm tiến trình đợi để trao tài nguyên cho Dùng biến tồn cục Waiting[n] lưu trạng thái tiến trình Sơ đồ cho tiến trình Pi do{ Waiting[i] = true; While(Waiting[i] && TestAndSet(Lock)) ; Waiting[i] = False; {Đoạn găng tiến trình} j = (i+1) % N; while ( (j !=i) && (! Waiting[j])) j = (j+1) % N; if (j == i) Lock = false; else Waiting[j] = false; {Phần lại tiến trình} }while(1); https://fb.com/sinhvienzonevn 110 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Tài nguyên găng điều độ tiến trình Khái niệm tài nguyên găng Phương pháp khóa Phương pháp kiểm tra xác lập Kỹ thuật đèn báo Ví dụ đồng tiến trình Cơng cụ điều độ cấp cao m https://fb.com/sinhvienzonevn 111 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Đèn báo (Semaphore) Là biến nguyên S, khởi tạo khả phục vụ tài nguyên điều độ Số tài nguyên phục vụ thời điểm (VD máy in) Số đơn vị tài nguyên có sẵn (VD 10 chỗ trống buffer ) Chỉ thay đổi giá trị thao tác P V Thao tác P(S) (wait(S)) wait(S) { while(S ≤ 0) no-op; S − −; } Thao tác V(S) (signal(S)) signal(S) { S + +; } Các thao tác P(S) V(S) xử lý không tách rời Đèn báo làhttps://fb.com/sinhvienzonevn công cụ điều độ tổng quát 112 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Sử dụng đèn báo I Điều độ nhiều tiến trình qua đoạn găng Sử dụng biến phân chia mutex kiểu Semaphore Khởi tạo mutex Thuật toán cho tiến trình Pi do{ wait(mutex); {Đoạn găng tiến trình} signal(mutex) {Phần lại tiến trình} }while(1); m https://fb.com/sinhvienzonevn 113 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Sử dụng đèn báo II Điều độ thứ tự thực bên tiến trình Hai tiến trình P1 P2 thực đồng thời P1 chứa lệnh S1 , P2 chứa lệnh S2 Yêu cầu S2 thực S1 thực xong Sử dụng đèn báo synch khởi tạo giá trị Đoạn mã cho P1 P2 P1 Phần đầu S1 Signal(synch) Phần cuối m https://fb.com/sinhvienzonevn 114 / 201 P2 Phần đầu wait(synch) S2 Phần cuối Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Hủy bỏ chờ đợi tích cực Sử dụng thao tác đơn giản block() Ngừng tạm thời tiến trình thực wakeup(P) Thực tiếp t/trình P dừng lệnh block() Khi tiến trình gọi P(S) đèn báo S khơng dương Tiến trình phải dừng gọi tới câu lệnh block() Lệnh block() đặt tiến trình vào hàng đợi gắn với đèn báo S Hệ thống lấy lại CPU giao cho tiến trình khác (điều phối CPU) Tiến trình chuyển sang trạng thái chờ đợi (waiting ) Tiến trình nằm hàng đợi đến tiến trình khác thực thao tác V(S) đèn báo S Tiến trình đưa lời gọi V(S) Lấy tiến trình hàng đợi (nếu có) Chuyển tiến trình lấy từ trạng thái chờ đợi sang trạng thái sẵn sàng đặt lên hàng đợi sẵn sàng gọi tới wakeup(P) Tiến trình sẵn sàng trưng dụng CPU từ tiến trình https://fb.com/sinhvienzonevn thực hiên thuật tốn điều phối CPU cho phép m 115 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Cài đặt đèn báo Semaphore S typedef struct{ int value; struct process * Ptr; }Semaphore; wait(S)/P(S) signal(S)/V(S) void wait(Semaphore S) { S.value−−; if(S.value < 0) { Thêm tiên trình vào S.Ptr block(); } } m void signal(Semaphore S) { S.value++; if(S.value ≤ 0) { Lấy tiến trình P từ S.Ptr wakeup(P); } } https://fb.com/sinhvienzonevn 116 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Ví dụ điều độ running P1 running P2 running P3 t Semaphore S S.value = S.Ptr 117 / 201 https://fb.com/sinhvienzonevn NULL m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Ví dụ điều độ running P1 P1 →P(S) running P2 running P3 t Semaphore S S.value = S.Ptr 117 / 201 https://fb.com/sinhvienzonevn NULL m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Ví dụ điều độ running P1 block P2 P1 →P(S) P2 →P(S) running P3 t Semaphore S S.value = -1 S.Ptr 117 / 201 https://fb.com/sinhvienzonevn PCB m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Ví dụ điều độ running P1 block P2 block P3 P1 →P(S) P2 →P(S) P3 →P(S) t Semaphore S S.value = -2 S.Ptr 117 / 201 https://fb.com/sinhvienzonevn PCB PCB3 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Ví dụ điều độ running P1 running P2 block P3 P1 →P(S) P1 →V(S) P2 →P(S) P3 →P(S) t Semaphore S S.value = -1 S.Ptr 117 / 201 https://fb.com/sinhvienzonevn PCB m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Ví dụ điều độ running P1 running P2 running P3 P1 →P(S) P1 →V(S) P2 →P(S) P3 →P(S) t Semaphore S S.value = S.Ptr 117 / 201 P2 →V(S) https://fb.com/sinhvienzonevn NULL m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Ví dụ điều độ running P1 running P2 running P3 P1 →P(S) P1 →V(S) P2 →P(S) P3 →P(S) S.value = S.Ptr P3 →V(S) t Semaphore S 117 / 201 P2 →V(S) https://fb.com/sinhvienzonevn NULL Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Nhận xét Dễ dàng áp dụng cho hệ thống phức tạp Không tồn tượng chờ đợi tích cực Hiệu sử dụng phụ thuộc vào người dùng P(S) V(S) {Đoạn găng} {Đoạn găng} V(S) P(S) P(S) {Đoạn găng} P(S) Điều độ Nhầm vị trí Nhầm lệnh Các phép xử lý P(S) V(S) không phân chia ⇒bản thân P(S) V(S) tài nguyên găng ⇒Cũng cần điều độ Hệ thống VXL: Cấm ngắt thực wait(), signal() Hệ thống nhiều vi xử lý Không thể cấm ngắt VXL khác Có thể dùng phương pháp khoa ⇒ Hiện tượng chờ đợi tích cực, thời gian chờ đợi ngắn ( 10 lệnh) https://fb.com/sinhvienzonevn m 118 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Đối tượng Semaphore WIN32 API CreateSemaphore( .) : Tạo Semaphore LPSECURITY_ATTRIBUTES lpSemaphoreAttributes ⇒ Trỏ tới cấu trúc an ninh, thẻ trả kế thừa? LONG InitialCount, ⇒ Giá trị khởi tạo cho đối tượng Semaphore LONG MaximumCount, ⇒ Giá trị lớn đối tượng Semaphore LPCTSTR lpName ⇒ Tên đối tượng Semaphore Ví dụ CreateSemaphore(NULL,0,1,NULL); Trả thẻ (HANDLE ) đối tượng Semaphore NULL WaitForSingleObject(HANDLE h, DWORD time) ReleaseSemaphore ( .) HANDLE hSemaphore, ⇐Thẻ đối tượng Semaphore LONG lReleaseCount, ⇐Giá trị tăng lên, LPLONG lpPreviousCount ⇐Giá trị trước https://fb.com/sinhvienzonevn Ví dụ: ReleaseSemaphore(S, 1, NULL); 119 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Ví dụ #include #include int x = 0, y = 1; HANDLE S1, S2; void T1(); void T2(); int main(){ HANDLE h1, h2; DWORD ThreadId; S1 = CreateSemaphore( NULL,0, 1,NULL); S2 = CreateSemaphore( NULL,0, 1,NULL); h1 = CreateThread(NULL,0,T1, NULL,0,&ThreadId); h2 = CreateThread(NULL,0,T2, NULL,0,&ThreadId); getch(); return 0; https://fb.com/sinhvienzonevn } 120 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Ví dụ (tiếp tục) void T1(){ while(1){ WaitForSingleObject(S1,INFINITE); x = y + 1; ReleaseSemaphore(S2,1,NULL); printf("%4d",x); } } void T2(){ while(1){ y = 2; ReleaseSemaphore(S1,1,NULL); WaitForSingleObject(S2,INFINITE); y = * y; } https://fb.com/sinhvienzonevn } 121 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Ví dụ #include #include #define Max 5000000 #define numThreads 10 int Counter; HANDLE S; void counterThread(){ int i, temp; for(i=0; i < Max; i++) { WaitForSingleObject(S,INFINITE); //P(S) temp = Counter; temp = temp + ; Counter = temp; ReleaseSemaphore(S,1,NULL); //V(S) } https://fb.com/sinhvienzonevn } 122 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.4 Kỹ thuật đèn báo Ví dụ (tiếp tục) int main(){ HANDLE hThreads[numThreads]; DWORD Id; int i; S = CreateSemaphore(NULL,1,1,NULL); for(i=0; i < numThreads;i++) hThreads[i] = CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)counterThread,NULL,0,&Id); WaitForMultipleObjects(numThreads, hThreads, TRUE, INFINITE); printf("\nKet qua : %d\n", Counter); return 0; } 123 / 201 https://fb.com/sinhvienzonevn Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Tài nguyên găng điều độ tiến trình Khái niệm tài nguyên găng Phương pháp khóa Phương pháp kiểm tra xác lập Kỹ thuật đèn báo Ví dụ đồng tiến trình Cơng cụ điều độ cấp cao m https://fb.com/sinhvienzonevn 124 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Một số tốn Người sản xuất-người tiêu thụ (Producer-Consumer ) Triết gia ăn tối (Dining Philosophers) Người đọc biên tập viên (Readers-Writers) Người thợ cắt tóc ngủ gật (Sleeping Barber ) Bathroom Problem Đồng theo Barriers m https://fb.com/sinhvienzonevn 125 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ do{ {Tạo phần tử mới} while(Counter==SIZE); {Đặt phần tử vào Buffer IN = (IN+1)%SIZE;} Counter++; } while (1); do{ while(Counter == 0); {Lấy phần tử Buffer OUT=(OUT+1)%SIZE;} Counter−−; {Xử lý phần tử vừa lấy ra} } while (1); Producer m https://fb.com/sinhvienzonevn 126 / 201 Consumer Chương 2: Quản lý tiến trình Tài ngun găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ do{ {Tạo phần tử mới} if(Counter==SIZE) block(); {Đặt phần tử vào Buffer IN = (IN+1)%SIZE;} Counter++; if(Counter==1) wakeup(Consumer); } while (1); m do{ if(Counter == 0); block() {Lấy phần tử Buffer OUT=(OUT+1)%SIZE;} Counter−−; if(Counter==SIZE-1) wakeup(Producer); {Xử lý phần tử vừa lấy ra} } while (1); Producerhttps://fb.com/sinhvienzonevn 126 / 201 Consumer Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Dùng đèn báo Mutex để điều độ biến Counter Khởi tạo: Mutex←1 do{ {Tạo phần tử mới} if(Counter==SIZE) block(); {Đặt phần tử vào Buffer} wait(Mutex); Counter++; signal(Mutex); if(Counter==1) wakeup(Consumer); } while (1); do{ if(Counter == 0); block() {Lấy phần tử Buffer} wait(Mutex); Counter−−; signal(Mutex); if(Counter==SIZE - 1) wakeup(Producer); {Xử lý phần tử vừa lấy ra} } while (1); Producer m https://fb.com/sinhvienzonevn 127 / 201 Consumer Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Dùng đèn báo Mutex để điều độ biến Counter Khởi tạo: Mutex←1 do{ {Tạo phần tử mới} if(Counter==SIZE) block(); {Đặt phần tử vào Buffer} wait(Mutex); Counter++; signal(Mutex); if(Counter==1) wakeup(Consumer); } while (1); Producer Vấn đề: Giả thiết Counter=0 m 127 / 201 do{ if(Counter == 0); block() {Lấy phần tử Buffer} wait(Mutex); Counter−−; signal(Mutex); if(Counter==SIZE - 1) wakeup(Producer); {Xử lý phần tử vừa lấy ra} } while (1); Consumer Consumer kiểm tra counter ⇒ gọi thực lệnh block() counter lên gọi wakeup( Consumer ) Producer Tăng https://fb.com/sinhvienzonevn Consumer chưa bị block ⇒Câu lệnh wakeup() bị bỏ qua Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư m https://fb.com/sinhvienzonevn 128 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer m do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer https://fb.com/sinhvienzonevn 128 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = Consumer Running m full = IN Producer OUT Running https://fb.com/sinhvienzonevn 128 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = Consumer Running m full = -1 IN Producer OUT Blocked https://fb.com/sinhvienzonevn 128 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = Consumer Running m full = -1 IN Producer OUT Blocked https://fb.com/sinhvienzonevn 128 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = Consumer Running m full = IN Producer OUT Running https://fb.com/sinhvienzonevn 128 / 201 Chương 2: Quản lý tiến trình Tài ngun găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = Consumer Running m full = IN Producer OUT Running https://fb.com/sinhvienzonevn 128 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = Consumer Running m full = IN Producer OUT Running https://fb.com/sinhvienzonevn 128 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = Consumer Running m https://fb.com/sinhvienzonevn 128 / 201 full = IN Producer OUT Running Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = Consumer Running m https://fb.com/sinhvienzonevn 128 / 201 full = IN Producer OUT Running Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = Consumer Producer Running m IN OUT Running https://fb.com/sinhvienzonevn 128 / 201 full = Chương 2: Quản lý tiến trình Tài ngun găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = Consumer Running m full = IN Producer OUT Running https://fb.com/sinhvienzonevn 128 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = -1 Consumer Blocked m full = IN Producer OUT Running https://fb.com/sinhvienzonevn 128 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = Consumer Producer Running m IN OUT Running https://fb.com/sinhvienzonevn 128 / 201 full = Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Giải pháp: Sử dụng đèn báo full, empty khởi tạo full ← : Số phần tử hòm thư empty ← BUFFER_SIZE: Số chỗ trống hòm thư do{ {Tạo phần tử mới} wait(empty); {Đặt phần tử vào Buffer} signal(full); } while (1); Producer do{ wait(full); {Lấy phần tử Buffer} signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Consumer empty = Consumer Running m full = IN Producer OUT Running https://fb.com/sinhvienzonevn 128 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Vấn đề: Khi có nhiều Producers Consumers, biến IN, OUT trở thành tài nguyên găng chúng Giải quyết: Dùng đèn báo thứ (mutex ← ) để đồng tiến trình loại m https://fb.com/sinhvienzonevn 129 / 201 Chương 2: Quản lý tiến trình Tài ngun găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Vấn đề: Khi có nhiều Producers Consumers, biến IN, OUT trở thành tài nguyên găng chúng Giải quyết: Dùng đèn báo thứ (mutex ← ) để đồng tiến trình loại do{ {Tạo phần tử mới} wait(empty); wait(mutex); {Đặt phần tử vào Buffer} signal(mutex); signal(full); } while (1); m do{ wait(full); wait(mutex); {Lấy phần tử Buffer} signal(mutex); signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Producerhttps://fb.com/sinhvienzonevn 129 / 201 Consumer Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề sản xuất-tiêu thụ Vấn đề: Khi có nhiều Producers Consumers, biến IN, OUT trở thành tài nguyên găng chúng Giải quyết: Dùng đèn báo thứ (mutex ← ) để đồng tiến trình loại do{ {Tạo phần tử mới} wait(empty); wait(mutex); {Đặt phần tử vào Buffer} signal(mutex); signal(full); } while (1); m do{ wait(mutex); wait(full); {Lấy phần tử Buffer} signal(mutex); signal(empty); {Xử lý phần tử vừa lấy ra} } while (1); Producerhttps://fb.com/sinhvienzonevn 129 / 201 Consumer Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Người đọc biên tập viên Nhiều tiến trình (Readers) truy nhập sở liệu (CSDL) Một số tiến trình (Writers) cập nhật sở liệu Cho phép số lượng tùy ý tiến trình Readers truy nhập CSDL Đang tồn tiến trình Reader truy cập CSDL, tiến trình Readers khác xuất truy cập CSDL (Tiến trình Writers phải xếp hàng chờ đợi) Chỉ cho phép tiến trình Writers cập nhật CSDL thời điểm Vấn đề khơng trưng dụng Các tiến trình đoạn găng mà không bị ngắt m https://fb.com/sinhvienzonevn 130 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Người đọc biên tập viên Nhiều tiến trình (Readers) truy nhập sở liệu (CSDL) Một số tiến trình (Writers) cập nhật sở liệu Cho phép số lượng tùy ý tiến trình Readers truy nhập CSDL Đang tồn tiến trình Reader truy cập CSDL, tiến trình Readers khác xuất truy cập CSDL (Tiến trình Writers phải xếp hàng chờ đợi) Chỉ cho phép tiến trình Writers cập nhật CSDL thời điểm Vấn đề không trưng dụng Các tiến trình đoạn găng mà khơng bị ngắt CÀI ĐẶT BÀI TOÁN !! m https://fb.com/sinhvienzonevn 130 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Người thợ cắt tóc ngủ gật N ghế đợi dành cho khách hàng Một người thợ cắt tóc cho khách hàng thời điểm Khơng có khách hàng đợi, thợ cắt tóc ngủ Khi khách hàng tới Nếu thợ cắt tóc ngủ⇒Đánh thức dậy làm việc Nếu thợ cắt tóc làm việc Khơng ghế đợi trống ⇒ bỏ Còn ghế đợi trống⇒ Ngồi đợi m https://fb.com/sinhvienzonevn 131 / 201 Chương 2: Quản lý tiến trình Tài ngun găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Người thợ cắt tóc ngủ gật N ghế đợi dành cho khách hàng Một người thợ cắt tóc cho khách hàng thời điểm Khơng có khách hàng đợi, thợ cắt tóc ngủ Khi khách hàng tới Nếu thợ cắt tóc ngủ⇒Đánh thức dậy làm việc Nếu thợ cắt tóc làm việc Khơng ghế đợi trống ⇒ bỏ Còn ghế đợi trống⇒ Ngồi đợi TÌM HIỂU VÀ CÀI ĐẶT m https://fb.com/sinhvienzonevn 131 / 201 Chương 2: Quản lý tiến trình Tài ngun găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Bathroom Problem Thường dùng cho mục đích minh họa vấn đề phân phối tài nguyên nghiên cứu hệ điều hành tính tốn song song Bài toán A bathroom is to be used by both men and women, but not at the same time If the bathroom is empty, then anyone can enter If the bathroom is occupied, then only a person of the same sex as the occupant(s) may enter The number of people that may be in the bathroom at the same time is limited Yêu cầu cài đặt toán thỏa mãn ràng buộc Có kiểu tiến trình male() female() Mỗi t/trình Bathroom khoảng t/gian ngẫu nhiên m https://fb.com/sinhvienzonevn 132 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Bathroom Problem Thường dùng cho mục đích minh họa vấn đề phân phối tài nguyên nghiên cứu hệ điều hành tính tốn song song Bài tốn A bathroom is to be used by both men and women, but not at the same time If the bathroom is empty, then anyone can enter If the bathroom is occupied, then only a person of the same sex as the occupant(s) may enter The number of people that may be in the bathroom at the same time is limited Yêu cầu cài đặt tốn thỏa mãn ràng buộc Có kiểu tiến trình male() female() Mỗi t/trình Bathroom khoảng t/gian ngẫu nhiên m https://fb.com/sinhvienzonevn CÀI ĐẶT BÀI TOÁN !! 132 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Đồng barriers P2 P3 Barrier P1 P4 Các tiến trình hướng tới Ba-ri-e chung m https://fb.com/sinhvienzonevn 133 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Đồng barriers P2 P3 Barrier P1 P4 Các tiến trình hướng tới Ba-ri-e chung Khi đạt tới Ba-ri-e, tất tiến trình bị block ngoại trừ tiến trình đến cuối m https://fb.com/sinhvienzonevn 133 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Đồng barriers Barrier P1 P2 P3 P4 Các tiến trình hướng tới Ba-ri-e chung Khi đạt tới Ba-ri-e, tất tiến trình bị block ngoại trừ tiến trình đến cuối Khi tiến trình cuối tới, đánh thức tất tiến trình bị block vượt qua Ba-ri-e https://fb.com/sinhvienzonevn 133 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Bài tốn tạo phân tử H2 O Có kiểu tiến trình (luồng): oxygen and hydrogen Để kết hợp tiến trình thành phân tử nước, cần Ba-ri-e để tiến trình phải đợi phân tử nước sẵn sàng tạo Khi tiến trình vượt qua Ba-ri-e, phải kích hoạt liên kết Tất tiến trình phân tử nước phải tạo liên kết, trước tiến trình phân tử nước khác gọi tới thủ tục tạo liên kết m https://fb.com/sinhvienzonevn 134 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Bài tốn tạo phân tử H2 O Có kiểu tiến trình (luồng): oxygen and hydrogen Để kết hợp tiến trình thành phân tử nước, cần Ba-ri-e để tiến trình phải đợi phân tử nước sẵn sàng tạo Khi tiến trình vượt qua Ba-ri-e, phải kích hoạt liên kết Tất tiến trình phân tử nước phải tạo liên kết, trước tiến trình phân tử nước khác gọi tới thủ tục tạo liên kết Barrier H1 m https://fb.com/sinhvienzonevn 134 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Bài tốn tạo phân tử H2 O Có kiểu tiến trình (luồng): oxygen and hydrogen Để kết hợp tiến trình thành phân tử nước, cần Ba-ri-e để tiến trình phải đợi phân tử nước sẵn sàng tạo Khi tiến trình vượt qua Ba-ri-e, phải kích hoạt liên kết Tất tiến trình phân tử nước phải tạo liên kết, trước tiến trình phân tử nước khác gọi tới thủ tục tạo liên kết Barrier H1 m https://fb.com/sinhvienzonevn 134 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Bài tốn tạo phân tử H2 O Có kiểu tiến trình (luồng): oxygen and hydrogen Để kết hợp tiến trình thành phân tử nước, cần Ba-ri-e để tiến trình phải đợi phân tử nước sẵn sàng tạo Khi tiến trình vượt qua Ba-ri-e, phải kích hoạt liên kết Tất tiến trình phân tử nước phải tạo liên kết, trước tiến trình phân tử nước khác gọi tới thủ tục tạo liên kết H3 H2 H1 Barrier H4 m https://fb.com/sinhvienzonevn 134 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Bài tốn tạo phân tử H2 O Có kiểu tiến trình (luồng): oxygen and hydrogen Để kết hợp tiến trình thành phân tử nước, cần Ba-ri-e để tiến trình phải đợi phân tử nước sẵn sàng tạo Khi tiến trình vượt qua Ba-ri-e, phải kích hoạt liên kết Tất tiến trình phân tử nước phải tạo liên kết, trước tiến trình phân tử nước khác gọi tới thủ tục tạo liên kết H3 H2 H1 Barrier H4 O1 m https://fb.com/sinhvienzonevn 134 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Bài tốn tạo phân tử H2 O Có kiểu tiến trình (luồng): oxygen and hydrogen Để kết hợp tiến trình thành phân tử nước, cần Ba-ri-e để tiến trình phải đợi phân tử nước sẵn sàng tạo Khi tiến trình vượt qua Ba-ri-e, phải kích hoạt liên kết Tất tiến trình phân tử nước phải tạo liên kết, trước tiến trình phân tử nước khác gọi tới thủ tục tạo liên kết H3 H2 H1 Barrier H4 O1 m https://fb.com/sinhvienzonevn 134 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Bài tốn tạo phân tử H2 O Có kiểu tiến trình (luồng): oxygen and hydrogen Để kết hợp tiến trình thành phân tử nước, cần Ba-ri-e để tiến trình phải đợi phân tử nước sẵn sàng tạo Khi tiến trình vượt qua Ba-ri-e, phải kích hoạt liên kết Tất tiến trình phân tử nước phải tạo liên kết, trước tiến trình phân tử nước khác gọi tới thủ tục tạo liên kết H3 H2 Barrier H4 O2 m https://fb.com/sinhvienzonevn 134 / 201 O1 H1 Chương 2: Quản lý tiến trình Tài ngun găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Bài tốn tạo phân tử H2 O Có kiểu tiến trình (luồng): oxygen and hydrogen Để kết hợp tiến trình thành phân tử nước, cần Ba-ri-e để tiến trình phải đợi phân tử nước sẵn sàng tạo Khi tiến trình vượt qua Ba-ri-e, phải kích hoạt liên kết Tất tiến trình phân tử nước phải tạo liên kết, trước tiến trình phân tử nước khác gọi tới thủ tục tạo liên kết H3 H2 Barrier H4 O2 m https://fb.com/sinhvienzonevn 134 / 201 O1 H1 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối Bài tốn đồng hóa tiến trình tiếng, thể tình trạng nhiều tiến trình phân chia nhiều tài nguyên m https://fb.com/sinhvienzonevn 135 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối Bài tốn đồng hóa tiến trình tiếng, thể tình trạng nhiều tiến trình phân chia nhiều tài nguyên triết gia ăn tối quanh bàn tròn Trước triết gia đĩa mì Giữa đĩa kề dĩa (fork) Các triết gia thực luân phiên, liên tục việc :Ăn Nghĩ Mỗi triết gia cần dĩa để ăn Chỉ lấy dĩa thời điểm Cái bên trái tới bên phải Ăn xong, triết gia để dĩa vào vị trí cũ m https://fb.com/sinhvienzonevn 135 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối Bài toán đồng hóa tiến trình tiếng, thể tình trạng nhiều tiến trình phân chia nhiều tài nguyên triết gia ăn tối quanh bàn tròn Trước triết gia đĩa mì Giữa đĩa kề dĩa (fork) Các triết gia thực luân phiên, liên tục việc :Ăn Nghĩ Mỗi triết gia cần dĩa để ăn Chỉ lấy dĩa thời điểm Cái bên trái tới bên phải Ăn xong, triết gia để dĩa vào vị trí cũ https://fb.com/sinhvienzonevn u cầu: viết chương trình đồng bữa tối triết gia 135 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Phương pháp đơn giản Mỗi dĩa tài nguyên găng, điều độ đèn báo fork[i] Semaphore fork[5] = {1, 1, 1, 1, 1}; m https://fb.com/sinhvienzonevn 136 / 201 Chương 2: Quản lý tiến trình Tài ngun găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Phương pháp đơn giản Mỗi dĩa tài nguyên găng, điều độ đèn báo fork[i] Semaphore fork[5] = {1, 1, 1, 1, 1}; Thuật toán cho Triết gia Pi do{ wait(fork[i]) wait(fork[(i+1)% 5]); { Ăn} signal(fork[(i+1)% 5]); signal(fork[i]); {Nghĩ} } while (1); m https://fb.com/sinhvienzonevn 136 / 201 Chương 2: Quản lý tiến trình Tài ngun găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Phương pháp đơn giản Mỗi dĩa tài nguyên găng, điều độ đèn báo fork[i] Semaphore fork[5] = {1, 1, 1, 1, 1}; Thuật toán cho Triết gia Pi do{ wait(fork[i]) wait(fork[(i+1)% 5]); { Ăn} signal(fork[(i+1)% 5]); signal(fork[i]); {Nghĩ} } while (1); Nếu tất triết gia muốn ăn Cùng lấy dĩa bên trái (gọi tới: wait(fork[i])) https://fb.com/sinhvienzonevn Cùng đợi lấy dĩa bên phải (gọi tới: wait(fork[(i+1)%5]) m 136 / 201 ) Chương 2: Quản lý tiến trình Tài ngun găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Phương pháp đơn giản Mỗi dĩa tài nguyên găng, điều độ đèn báo fork[i] Semaphore fork[5] = {1, 1, 1, 1, 1}; Thuật toán cho Triết gia Pi do{ wait(fork[i]) wait(fork[(i+1)% 5]); { Ăn} signal(fork[(i+1)% 5]); signal(fork[i]); {Nghĩ} } while (1); Nếu tất triết gia muốn ăn Cùng lấy dĩa bên trái (gọi tới: wait(fork[i])) https://fb.com/sinhvienzonevn Cùng đợi lấy dĩa bên phải (gọi tới: wait(fork[(i+1)%5])) m ⇒ Bế tắc (deadlock) 136 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Giải pháp Chỉ cho phép nhà triết học lấy dĩa thời điểm Semaphore mutex ← 1; m https://fb.com/sinhvienzonevn 137 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Giải pháp Chỉ cho phép nhà triết học lấy dĩa thời điểm Semaphore mutex ← 1; Thuật toán cho Triết gia Pi do{ wait(mutex) wait(fork[i]) wait(fork[(i+1)% 5]); signal(mutex) { Ăn} signal(fork[(i+1)% 5]); signal(i); {Nghĩ} } while (1); m https://fb.com/sinhvienzonevn 137 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Giải pháp Chỉ cho phép nhà triết học lấy dĩa thời điểm Semaphore mutex ← 1; Thuật toán cho Triết gia Pi do{ wait(mutex) wait(fork[i]) wait(fork[(i+1)% 5]); signal(mutex) { Ăn} signal(fork[(i+1)% 5]); signal(i); {Nghĩ} } while (1); Có thể làm cho triết gia không kề ăn thời https://fb.com/sinhvienzonevn điểm (P1 : ăn, P2 : chiếm mutex⇒ P3 đợi) 137 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Giải pháp Thứ tự lấy dĩa triết gia khác Triết gia số hiệu chẵn lấy dĩa trái trước Triết gia số hiệu lẻ lấy dĩa phải trước m https://fb.com/sinhvienzonevn 138 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Giải pháp Thứ tự lấy dĩa triết gia khác Triết gia số hiệu chẵn lấy dĩa trái trước Triết gia số hiệu lẻ lấy dĩa phải trước Thuật toán cho Triết gia Pi do{ j = i%2 wait(fork[(i + j)%5]) wait(fork[(i+1 - j)% 5]); { Ăn} signal(fork[(i+1 - j)% 5]); signal((i + j)%5); {Nghĩ} } while (1); m https://fb.com/sinhvienzonevn 138 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Giải pháp Thứ tự lấy dĩa triết gia khác Triết gia số hiệu chẵn lấy dĩa trái trước Triết gia số hiệu lẻ lấy dĩa phải trước Thuật toán cho Triết gia Pi do{ j = i%2 wait(fork[(i + j)%5]) wait(fork[(i+1 - j)% 5]); { Ăn} signal(fork[(i+1 - j)% 5]); signal((i + j)%5); {Nghĩ} } while (1); Giải vấn đề bế tắc https://fb.com/sinhvienzonevn 138 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Một số giải pháp khác Trả lại dĩa bên trái không lấy bên phải Kiểm tra dĩa phải sẵn sàng trước gọi wait(fork[(i+1)%5]) Nếu khơng sẵn có: trả lại dĩa trái, đợi thời gian thử lại Không bị bế tắc, khơng tiến triển:nạn đói (starvation) Thực thực tế, không đảm bảo lý thuyết m https://fb.com/sinhvienzonevn 139 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Một số giải pháp khác Trả lại dĩa bên trái không lấy bên phải Kiểm tra dĩa phải sẵn sàng trước gọi wait(fork[(i+1)%5]) Nếu khơng sẵn có: trả lại dĩa trái, đợi thời gian thử lại Không bị bế tắc, khơng tiến triển:nạn đói (starvation) Thực thực tế, không đảm bảo lý thuyết Sử dụng đèn báo đồng thời PSim (S1 , S2 , , Sn ) Thu tất đèn báo thời điểm khơng có đèn báo Thao tác PSim (S1 , S2 , , Sn ) block() tiến trình/luồng gọi có đèn báo khơng thể thu PSim (fork[i], fork[(i+1)% 5]); Thuật tốn { Ăn} VSim (fork[i], fork[(i+1)% 5]); Khó cài đặt đèn báo đồng thời m https://fb.com/sinhvienzonevn 139 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Một số giải pháp khác Trả lại dĩa bên trái không lấy bên phải Kiểm tra dĩa phải sẵn sàng trước gọi wait(fork[(i+1)%5]) Nếu khơng sẵn có: trả lại dĩa trái, đợi thời gian thử lại Khơng bị bế tắc, khơng tiến triển:nạn đói (starvation) Thực thực tế, không đảm bảo lý thuyết Sử dụng đèn báo đồng thời PSim (S1 , S2 , , Sn ) Thu tất đèn báo thời điểm khơng có đèn báo Thao tác PSim (S1 , S2 , , Sn ) block() tiến trình/luồng gọi có đèn báo thu PSim (fork[i], fork[(i+1)% 5]); Thuật tốn { Ăn} VSim (fork[i], fork[(i+1)% 5]); Khó cài đặt đèn báo đồng thời Giải pháp đề xuất Tanenbaum (Tanenbaum 2001) https://fb.com/sinhvienzonevn 139 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.5 Ví dụ đồng tiến trình Vấn đề triết gia ăn tối: Một số giải pháp khác Trả lại dĩa bên trái không lấy bên phải Kiểm tra dĩa phải sẵn sàng trước gọi wait(fork[(i+1)%5]) Nếu khơng sẵn có: trả lại dĩa trái, đợi thời gian thử lại Không bị bế tắc, khơng tiến triển:nạn đói (starvation) Thực thực tế, không đảm bảo lý thuyết Sử dụng đèn báo đồng thời PSim (S1 , S2 , , Sn ) Thu tất đèn báo thời điểm đèn báo Thao tác PSim (S1 , S2 , , Sn ) block() tiến trình/luồng gọi có đèn báo thu PSim (fork[i], fork[(i+1)% 5]); Thuật tốn { Ăn} VSim (fork[i], fork[(i+1)% 5]); Khó cài đặt đèn báo đồng thời m 139 / Giải pháp đề xuất Tanenbaum (Tanenbaum 2001) https://fb.com/sinhvienzonevn Các công cụ điều độ cấp cao 201 m (http://www.codinghorror.com/blog/2008/08/deadlocked.html ) https://fb.com/sinhvienzonevn Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.6 Cơng cụ điều độ cấp cao Tài nguyên găng điều độ tiến trình Khái niệm tài nguyên găng Phương pháp khóa Phương pháp kiểm tra xác lập Kỹ thuật đèn báo Ví dụ đồng tiến trình Cơng cụ điều độ cấp cao m https://fb.com/sinhvienzonevn 141 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.6 Cơng cụ điều độ cấp cao Giới thiệu Kỹ thuật đèn báo chế hiệu điều độ tiến trình Sử dụng đèn báo (công cụ cấp thấp) Người dùng phải biết tài ngun để điều độ Có phải tài ngun găng khơng? Đặt câu lệnh điều độ chương trình ⇒Nếu sử dụng nhầm dẫn tới kết sai, khó gỡ rối m https://fb.com/sinhvienzonevn 142 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.6 Cơng cụ điều độ cấp cao Giới thiệu Kỹ thuật đèn báo chế hiệu điều độ tiến trình Sử dụng đèn báo (công cụ cấp thấp) Người dùng phải biết tài ngun để điều độ Có phải tài ngun găng khơng? Đặt câu lệnh điều độ chương trình ⇒Nếu sử dụng nhầm dẫn tới kết sai, khó gỡ rối Nhận biết điều độ tài nguyên găng: trách nhiệm hệ thống Công cụ thường dùng Vùng găng Monitor m https://fb.com/sinhvienzonevn 142 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.6 Cơng cụ điều độ cấp cao Monitor monitor monitorName{ Khai báo biến dùng chung procedure P1( .){ } procedure Pn( .){ } { Mã khởi tạo } }; Là kiểu liệu đặc biệt, đề nghị HOARE 1974 Bao gồm thủ tục, liệu cục bộ, đoạn mã khởi tạo Các tiến trình truy nhập tới biến gọi tới thủ tục Monitor Tại thời điểm có tiến trình quyền sử dụng Monitor Tiến trình khác muốn sử dụng, phải chờ đợi Cho phép tiến trình đợi Monitor Sử dụng biến điều kiện Cú pháp Monitor https://fb.com/sinhvienzonevn (condition variable) 143 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.6 Cơng cụ điều độ cấp cao Mơ hình m https://fb.com/sinhvienzonevn 144 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.6 Cơng cụ điều độ cấp cao Biến điều kiện Thực chất tên hàng đợi Khai báo: condition x, y; Các biến điều khiển sử dụng với thao tác wait() Được gọi thủ tục Monitor (Cú pháp:x.wait() wait(x)) cho phép tiến trình đưa lời gọi bị tạm dừng (block) tiến trình khác kích hoạt gọi tới signal() signal() Được gọi thủ tục Monitor (Cú pháp: x.signal() signal(x)) kích hoạt xác tiến trình đợi biến điều kiện x (nằm hàng đợi x) tiếp tục hoạt động Nếu khơng có tiến trình đợi, thao tác khơng có hiệu lực (bị bỏ qua) https://fb.com/sinhvienzonevn 145 / 201 Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.6 Cơng cụ điều độ cấp cao Mơ hình m https://fb.com/sinhvienzonevn 146 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.6 Cơng cụ điều độ cấp cao Sử dụng Monitor: tài nguyên chung Monitor Resource{ Condition Nonbusy; Boolean Busy // Phần dành người dùng -void Acquire(){ if(busy) Nonbusy.wait(); busy=true; } void Release(){ busy=false signal(Nonbusy) } // Phần khởi tạo -busy= false; Nonbusy = Empty; Cấu trúc tiến trình while(1){ Resource.Acquire() {Sử dụng tài nguyên} Resource.Release() } https://fb.com/sinhvienzonevn } 147 / 201 m Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình 4.6 Công cụ điều độ cấp cao Sử dụng Monitor: Bài toán Producer - Consumer Monitor ProducerConsumer{ Condition Full, Empty; int Counter ; void Put(Item){ if(Counter=N) Full.wait(); {Đặt Item vào Buffer}; Counter++; if(Counter=1)Empty.signal() } void Get(Item){ if(Counter=0) Empty.wait() {Lấy Item từ Buffer}; Counter ; if(Counter=N-1)Full.signal() } Counter=0; Full, Empty = Empty; https://fb.com/sinhvienzonevn } 148 / 201 ProducerConsumer M; Producer while(1){ Item =Sản phẩm M.Put(Item) } Consumer while(1){ M.Get(&Item) {Sử dụng Msg} } Chương 2: Quản lý tiến trình Tài nguyên găng điều độ tiến trình Kết luận m https://fb.com/sinhvienzonevn 149 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc Tiến trình Luồng (Thread) Điều phối CPU Tài nguyên găng điều độ tiến trình Bế tắc xử lý bế tắc m https://fb.com/sinhvienzonevn 150 / 201 m https://fb.com/sinhvienzonevn (Nguồn: internet) Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Bế tắc xử lý bế tắc Khái niệm bế tắc Điều kiện xảy bế tắc Các phương pháp xử lý bế tắc Phòng ngừa bế tắc Phòng tránh bế tắc Nhận biết khắc phục m https://fb.com/sinhvienzonevn 152 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Giới thiệu Hệ thống gồm nhiều tiến trình hoạt động đồng thời sử dụng tài nguyên Tài nguyên có nhiều loại (VD: CPU, nhớ, ) Mỗi loại tài nguyên có nhiều đơn vị (VD: CPU, máy in ) m https://fb.com/sinhvienzonevn 153 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Giới thiệu Hệ thống gồm nhiều tiến trình hoạt động đồng thời sử dụng tài nguyên Tài nguyên có nhiều loại (VD: CPU, nhớ, ) Mỗi loại tài nguyên có nhiều đơn vị (VD: CPU, máy in ) Mỗi tiến trình thường gồm dãy liên tục thao tác Đòi hỏi tài ngun: Nếu tài ngun khơng có sẵn (đang s/dụng tiến trình khác) ⇒ tiến trình yêu cầu phải đợi Sử dụng tài nguyên theo yêu cầu (in ấn, đọc liệu ) Giải phóng tài nguyên cấp m https://fb.com/sinhvienzonevn 153 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Giới thiệu Hệ thống gồm nhiều tiến trình hoạt động đồng thời sử dụng tài nguyên Tài nguyên có nhiều loại (VD: CPU, nhớ, ) Mỗi loại tài nguyên có nhiều đơn vị (VD: CPU, máy in ) Mỗi tiến trình thường gồm dãy liên tục thao tác Đòi hỏi tài ngun: Nếu tài ngun khơng có sẵn (đang s/dụng tiến trình khác) ⇒ tiến trình yêu cầu phải đợi Sử dụng tài nguyên theo yêu cầu (in ấn, đọc liệu ) Giải phóng tài nguyên cấp Khi tiến trình dùng chung tài nguyên, hệ thống gặp "nguy hiểm" m https://fb.com/sinhvienzonevn 153 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Giới thiệu Hệ thống gồm nhiều tiến trình hoạt động đồng thời sử dụng tài nguyên Tài nguyên có nhiều loại (VD: CPU, nhớ, ) Mỗi loại tài nguyên có nhiều đơn vị (VD: CPU, máy in ) Mỗi tiến trình thường gồm dãy liên tục thao tác Đòi hỏi tài nguyên: Nếu tài ngun khơng có sẵn (đang s/dụng tiến trình khác) ⇒ tiến trình yêu cầu phải đợi Sử dụng tài nguyên theo yêu cầu (in ấn, đọc liệu ) Giải phóng tài nguyên cấp Khi tiến trình dùng chung tài ngun, hệ thống gặp "nguy hiểm" Xét ví dụ: Hệ thống có hai tiến trình P1 & P2 Hai tiến trình P1 & P2 dùng chung hai tài nguyên R1 & R2 R1 điều độ đèn báo S1 (S1 ← 1) R2 điều độ đèn báo S2 (S1 ← 1) https://fb.com/sinhvienzonevn m 153 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P2 Tiến trình P1 P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 154 / 201 =1 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P2 P(S1 ) Tiến trình P1 P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 154 / 201 =0 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P2 P(S1 ) P(S1 ) block() P2 đợi R1 Tiến trình P1 P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 = 154 / 201 −1 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P2 P(S1 ) P(S1 ) block() P2 đợi R1 P(S2 ) Tiến trình P1 P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 = 154 / 201 −1 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P1 Tiến trình P2 P(S1 ) P(S1 ) block() P2 đợi R1 P(S2 ) Sử dụng R1 &R2 P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 = 154 / 201 −1 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P2 P(S1 ) P(S1 ) P(S2 ) Sử dụng R1 &R2 V(S1 ) wakeup(P2 ) t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 154 / 201 =0 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P2 P(S1 ) P(S1 ) P(S2 ) Sử dụng R1 &R2 V(S1 ) wakeup(P2 ) P(S2 ) block() P2 đợi R2 t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 154 / 201 =0 S2 = −1 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P2 P(S1 ) P(S1 ) P(S2 ) Sử dụng R1 &R2 V(S1 ) wakeup(P2 ) P(S2 ) V(S2 ) wakeup(P2 ) t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 154 / 201 =0 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P2 P(S1 ) P(S1 ) P(S2 ) Sử dụng R1 &R2 V(S1 ) wakeup(P2 ) P(S2 ) V(S2 ) wakeup(P2 ) Sử dụng R1 &R2 t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 154 / 201 =0 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P2 Tiến trình P1 P(S2 ) P(S1 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 154 / 201 =1 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P2 P(S1 ) Tiến trình P1 P(S2 ) P(S1 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 154 / 201 =0 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P2 P(S1 ) P(S2 ) Tiến trình P1 P(S2 ) P(S1 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 154 / 201 =0 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P1 Tiến trình P2 P(S1 ) P(S2 ) P(S2 ) block() P1 đợi R2 P(S2 ) P(S1 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 154 / 201 =0 S2 = −1 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P1 Tiến trình P2 P(S1 ) P(S2 ) P(S2 ) block() P1 đợi R2 P(S1 ) block() P2 đợi R1 P(S2 ) P(S1 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 = 154 / 201 −1 S2 = −1 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Ví dụ P(S1 ) P(S2 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 P(S2 ) P(S1 ) {Sử dụng R1 &R2 } V (S1 ) V (S2 ) Tiến trình P1 Tiến trình P2 P(S1 ) P(S2 ) P(S2 ) block() P1 đợi R2 P(S1 ) block() P2 đợi R1 Deadlock t Tiến trình P2 m https://fb.com/sinhvienzonevn S1 = 154 / 201 −1 S2 = −1 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.1 Khái niệm bế tắc Định nghĩa Bế tắc tình trạng Hai hay nhiều tiến trình chờ đợi kiện xảy Nếu khơng có tác động từ bên ngồi, chờ đợi vơ hạn m https://fb.com/sinhvienzonevn 155 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Bế tắc xử lý bế tắc Khái niệm bế tắc Điều kiện xảy bế tắc Các phương pháp xử lý bế tắc Phòng ngừa bế tắc Phòng tránh bế tắc Nhận biết khắc phục m https://fb.com/sinhvienzonevn 156 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Điều kiện cần Cần có điều kiện sau, khơng thiếu điều kiện Có tài nguyên găng Tài nguyên sử dụng theo mô hình khơng phân chia Chỉ có tiến trình dung tài nguyên thời điểm Tiến trình khác yêu cầu tài nguyên ⇒ yêu cầu phải hỗn lại tới tài ngun giải phóng m https://fb.com/sinhvienzonevn 157 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Điều kiện cần Cần có điều kiện sau, không thiếu điều kiện Có tài nguyên găng Tài nguyên sử dụng theo mơ hình khơng phân chia Chỉ có tiến trình dung tài nguyên thời điểm Tiến trình khác yêu cầu tài nguyên ⇒ yêu cầu phải hỗn lại tới tài ngun giải phóng Chờ đợi trước vào đoạn găng Tiến trình khơng vào đoạn găng phải xếp hàng chờ đợi Trong chờ đợi chiếm giữ tài nguyên cung cấp m https://fb.com/sinhvienzonevn 157 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Điều kiện cần Cần có điều kiện sau, khơng thiếu điều kiện Có tài nguyên găng Tài nguyên sử dụng theo mơ hình khơng phân chia Chỉ có tiến trình dung tài ngun thời điểm Tiến trình khác yêu cầu tài nguyên ⇒ yêu cầu phải hoãn lại tới tài nguyên giải phóng Chờ đợi trước vào đoạn găng Tiến trình khơng vào đoạn găng phải xếp hàng chờ đợi Trong chờ đợi chiếm giữ tài ngun cung cấp Khơng có hệ thống phân phối lại tài nguyên găng Tài nguyên trưng dụng Tài nguyên giải tiến trình chiếm giữ hồn thành nhiệm vụ m https://fb.com/sinhvienzonevn 157 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Điều kiện cần Cần có điều kiện sau, khơng thiếu điều kiện Có tài nguyên găng Tài nguyên sử dụng theo mơ hình khơng phân chia Chỉ có tiến trình dung tài nguyên thời điểm Tiến trình khác yêu cầu tài nguyên ⇒ yêu cầu phải hoãn lại tới tài nguyên giải phóng Chờ đợi trước vào đoạn găng Tiến trình không vào đoạn găng phải xếp hàng chờ đợi Trong chờ đợi chiếm giữ tài nguyên cung cấp Khơng có hệ thống phân phối lại tài nguyên găng Tài nguyên trưng dụng Tài nguyên giải tiến trình chiếm giữ hoàn thành nhiệm vụ Chờ đợi vòng tròn Tồn tập tiến trình {P0 , P2 , , Pn } đợi theo kiểu: P0 → R1 → P1 ; P1 → R2 → P2 ; Pn−1 → Rn → Pn ; Pn → R0 → P0 https://fb.com/sinhvienzonevn Chờ đợi vòng tròn tạo chu trình khơng kết thúc m 157 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Ví dụ: Bài tốn triết gia ăn tối Tài nguyên găng Chờ đợi trước vào đoạn găng Trưng dụng tài nguyên găng Chờ đợi vòng tròn m https://fb.com/sinhvienzonevn 158 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Đồ thị cung cấp tài nguyên (Resource Allocation Graph) Dùng để mơ hình hóa tình trạng bế tắc hệ thống Là độ thị định hướng gồm tập đỉnh V tập cung E Tập đỉnh V chia thành kiểu đỉnh P = {P1 , P2 , Pn } Tập chứa tất tiến trình hệ thống R = {R1 , R2 , Rm } Tập chứa tất kiểu tài nguyên hệ thống Tập cung E gồm loại Cung yêu cầu: từ tiến trình Pi tới tài nguyên Rj : Pi → Rj Cung sử dụng: Đi từ tài nguyên Rj tới tiến trình Pi : Rj → Pi Khi tiến trình Pi yêu cầu tài nguyên Rj m 159 / 201 Cung yêu cầu Pi → Rj chèn vào đồ thị Nếu yêu cầu thỏa mãn, cung yêu cầu chuyển thành cung sử dung Rj → Pi Khi tiến trình Pi giải phóng tài ngun Rj , cung sử dụng Rj → Pihttps://fb.com/sinhvienzonevn bị xóa khỏi đồ thị Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Đồ thị cung cấp tài nguyên : Biểu diễn đồ đồ thị Đỉnh kiểu tiến trình thể hình tròn P Đỉnh kiểu tài ngun thể hình chữ nhật Mỗi đơn vị kiểu tài nguyên biểu thị dấu chấm hình chữ nhật R Cung yêu cầu từ đỉnh tiến trình tới đỉnh tài nguyên P R Cung sử dụng xuất phát từ dấu chấm bên đỉnh tài nguyên tới đỉnh tiến trình P R m https://fb.com/sinhvienzonevn 160 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Đồ thị cung cấp tài nguyên : Ví dụ Trạng thái hệ thống R2 P1 R3 P2 tiến trình P1 , P2 , P3 tài nguyên R1 , R2 , R3 , R4 P3 R1 R4 m https://fb.com/sinhvienzonevn 161 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Đồ thị cung cấp tài nguyên : Ví dụ Trạng thái hệ thống R2 R3 tiến trình P1 , P2 , P3 tài nguyên R1 , R2 , R3 , R4 P3 yêu cầu tài nguyên R4 P1 P2 P3 R1 R4 m https://fb.com/sinhvienzonevn 161 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Đồ thị cung cấp tài nguyên : Ví dụ Trạng thái hệ thống R2 R3 tiến trình P1 , P2 , P3 tài nguyên R1 , R2 , R3 , R4 P3 yêu cầu tài nguyên R4 Xuất cung yêu cầu P3 → R4 P1 P2 P3 R1 R4 m https://fb.com/sinhvienzonevn 161 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Đồ thị cung cấp tài nguyên : Ví dụ Trạng thái hệ thống R2 R3 tiến trình P1 , P2 , P3 tài nguyên R1 , R2 , R3 , R4 P3 yêu cầu tài nguyên R4 P1 P2 P3 Xuất cung yêu cầu P3 → R4 Cung yêu cầu P3 → R4 chuyển thành cung sử dụng R4 → P3 R1 R4 m https://fb.com/sinhvienzonevn 161 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Đồ thị cung cấp tài nguyên : Ví dụ Trạng thái hệ thống R2 R3 tiến trình P1 , P2 , P3 tài nguyên R1 , R2 , R3 , R4 P3 yêu cầu tài nguyên R4 P1 P2 P3 Xuất cung yêu cầu P3 → R4 Cung yêu cầu P3 → R4 chuyển thành cung sử dụng R4 → P3 P3 Giải phóng tài nguyên R4 R1 R4 m https://fb.com/sinhvienzonevn 161 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Đồ thị cung cấp tài nguyên : Ví dụ Trạng thái hệ thống R2 R3 tiến trình P1 , P2 , P3 tài nguyên R1 , R2 , R3 , R4 P3 yêu cầu tài nguyên R4 P1 P2 P3 Xuất cung yêu cầu P3 → R4 Cung yêu cầu P3 → R4 chuyển thành cung sử dụng R4 → P3 P3 Giải phóng tài nguyên R4 Cung sử dụng R4 → P3 bị xóa khỏi đồ thị R1 R4 m https://fb.com/sinhvienzonevn 161 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Đồ thị cung cấp tài nguyên : Ví dụ Trạng thái hệ thống R2 R3 tiến trình P1 , P2 , P3 tài nguyên R1 , R2 , R3 , R4 P3 yêu cầu tài nguyên R4 P1 P2 P3 Xuất cung yêu cầu P3 → R4 Cung yêu cầu P3 → R4 chuyển thành cung sử dụng R4 → P3 P3 Giải phóng tài nguyên R4 Cung sử dụng R4 → P3 bị xóa khỏi đồ thị P3 yêu cầu tài nguyên R1 R1 R4 m Xuất cung yêu cầu P3 → R1 Trên đồ thị xuất chu trình Hệ thống bế tắc https://fb.com/sinhvienzonevn 161 / 201 m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Đồ thị cung cấp tài nguyên : Ví dụ Trạng thái hệ thống R2 R3 tiến trình P1 , P2 , P3 tài nguyên R1 , R2 , R3 , R4 P3 yêu cầu tài nguyên R4 P1 P2 P3 Xuất cung yêu cầu P3 → R4 Cung yêu cầu P3 → R4 chuyển thành cung sử dụng R4 → P3 P3 Giải phóng tài nguyên R4 Cung sử dụng R4 → P3 bị xóa khỏi đồ thị P3 yêu cầu tài nguyên R1 R1 R4 Xuất cung yêu cầu P3 → R1 Trên đồ thị xuất chu trình Hệ thống bế tắc https://fb.com/sinhvienzonevn Chu trình đồ thị tình trạng bế tắc có liên quan? 161 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.2 Điều kiện xảy bế tắc Đồ thị cung cấp tài nguyên : Lập luận Đồ thị có chu trình hệ thống khơng bế tắc P3 R1 P1 P2 R2 Đồ thị khơng chứa chu trình, khơng bế tắc Nếu đồ thị chứa đựng chu trình Nếu tài nguyên có đơn vị ⇒ Bế tắc Nếuhttps://fb.com/sinhvienzonevn tài nguyên có nhiều đơn vị: có khả bế tắc m 162 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.3 Các phương pháp xử lý bế tắc Bế tắc xử lý bế tắc Khái niệm bế tắc Điều kiện xảy bế tắc Các phương pháp xử lý bế tắc Phòng ngừa bế tắc Phòng tránh bế tắc Nhận biết khắc phục m https://fb.com/sinhvienzonevn 163 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.3 Các phương pháp xử lý bế tắc Phương pháp Phòng ngừa Áp dụng biện pháp để đảm bảo hệ thống khơng rơi vào tình trạng bế tắc Tốn Áp dụng cho hệ thống hay xảy bế tắc tổn thất bế tắc gây lớn Phòng tránh Kiểm tra yêu cầu tài nguyên tiến trình khơng chấp nhận u cầu việc cung cấp tài nguyên có khả dẫn đến tình trạng bế tắc Thường u cầu thơng tin phụ trợ Áp dụng cho hệ thống xảy bế tắc tổn hại lớn Nhận biết khắc phục Cho phép hệ thống hoạt động bình thường ⇒có thể rơi vào tình trạng bế tắc Định kỳ kiểm tra xem bế tắc có xảy khơng Nếuhttps://fb.com/sinhvienzonevn bế tắc, áp dụng biện pháp loại bỏ bế tắc m 164 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Bế tắc xử lý bế tắc Khái niệm bế tắc Điều kiện xảy bế tắc Các phương pháp xử lý bế tắc Phòng ngừa bế tắc Phòng tránh bế tắc Nhận biết khắc phục m https://fb.com/sinhvienzonevn 165 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Nguyên tắc Tác động vào điều kiện cần bế tắc để khơng xảy Tài ngun găng Chờ đợi trước vào đoạn găng Trưng dụng tài nguyên găng Chờ đợi vòng tròn m https://fb.com/sinhvienzonevn 166 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện tài nguyên găng Giảm bớt mức độ găng hệ thống Tài nguyên phân chia (file đọc): Sử dụng đồng thời Tài nguyên không phân chia được: Sử dụng không đồng thời m https://fb.com/sinhvienzonevn 167 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện tài nguyên găng Giảm bớt mức độ găng hệ thống Tài nguyên phân chia (file đọc): Sử dụng đồng thời Tài nguyên không phân chia được: Sử dụng không đồng thời Kỹ thuật SPOOL(Simultaneous peripheral operation on-line) Không phân phối tài nguyên không thực cần thiết Chỉ số tiến trình có khả yêu cầu tài nguyên m https://fb.com/sinhvienzonevn 167 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện tài nguyên găng Giảm bớt mức độ găng hệ thống Tài nguyên phân chia (file đọc): Sử dụng đồng thời Tài nguyên không phân chia được: Sử dụng không đồng thời Kỹ thuật SPOOL(Simultaneous peripheral operation on-line) Không phân phối tài nguyên không thực cần thiết Chỉ số tiến trình có khả yêu cầu tài nguyên P1 m P2 https://fb.com/sinhvienzonevn 167 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện tài nguyên găng Giảm bớt mức độ găng hệ thống Tài nguyên phân chia (file đọc): Sử dụng đồng thời Tài nguyên không phân chia được: Sử dụng không đồng thời Kỹ thuật SPOOL(Simultaneous peripheral operation on-line) Không phân phối tài nguyên khơng thực cần thiết Chỉ số tiến trình có khả u cầu tài ngun P1 Virtual printer m 167 / 201 P2 https://fb.com/sinhvienzonevn Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện tài nguyên găng Giảm bớt mức độ găng hệ thống Tài nguyên phân chia (file đọc): Sử dụng đồng thời Tài nguyên không phân chia được: Sử dụng không đồng thời Kỹ thuật SPOOL(Simultaneous peripheral operation on-line) Không phân phối tài nguyên không thực cần thiết Chỉ số tiến trình có khả u cầu tài nguyên P1 P2 Printer daemon Virtual printer m 167 / 201 https://fb.com/sinhvienzonevn Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện tài nguyên găng Giảm bớt mức độ găng hệ thống Tài nguyên phân chia (file đọc): Sử dụng đồng thời Tài nguyên không phân chia được: Sử dụng không đồng thời Kỹ thuật SPOOL(Simultaneous peripheral operation on-line) Không phân phối tài nguyên khơng thực cần thiết Chỉ số tiến trình có khả u cầu tài ngun P1 P2 Chỉ printer daemon làm việc với máy in ⇒ Bế tắc cho tài nguyên máy in bị hủy bỏ Printer daemon Virtual printer m 167 / 201 https://fb.com/sinhvienzonevn Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện tài nguyên găng Giảm bớt mức độ găng hệ thống Tài nguyên phân chia (file đọc): Sử dụng đồng thời Tài nguyên không phân chia được: Sử dụng không đồng thời Kỹ thuật SPOOL(Simultaneous peripheral operation on-line) Không phân phối tài nguyên không thực cần thiết Chỉ số tiến trình có khả yêu cầu tài nguyên P1 P2 Chỉ printer daemon làm việc với máy in ⇒ Bế tắc cho tài nguyên máy in bị hủy bỏ Printer daemon Virtual printer m 167 / 201 Không phải tài nguyên dùng kỹ thuật SPOOL https://fb.com/sinhvienzonevn Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi trước vào đoạn găng Nguyên tắc: Đảm bảo môt tiến trình xin tài ngun khơng sở hữu tài nguyên khác Cung cấp trước Tiến trình xin toàn tài nguyên từ đầu thực có đầy đủ tài nguyên Hiệu sử dụng tài nguyên thấp Tiến trình sử dụng tài nguyên giai đoạn cuối? Tổng số tài nguyên đòi hỏi vượt khả hệ thống? Giải phóng tài ngun Tiến trình giải phóng tất tài nguyên trước xin (xin lại) tài nguyên Nhận xét Tốc độ thực tiến trình chậm Phải đảm bảo liệu giữ tài nguyên tạm giải phóng khơng bị m https://fb.com/sinhvienzonevn 168 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi trước vào đoạn găng: minh họa Băng từ Giai đoạn Giai đoạn Tiến trình gồm giai đoạn Sao chép liệu từ băng từ sang file đĩa từ Sắp xếp liệu file đưa máy in m https://fb.com/sinhvienzonevn 169 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi trước vào đoạn găng: minh họa Băng từ Giai đoạn Giai đoạn Tiến trình gồm giai đoạn Sao chép liệu từ băng từ sang file đĩa từ Sắp xếp liệu file đưa máy in Phương pháp cung cấp trước Xin băng từ, file đĩa máy in Lãng phí máy in giai đoạn đầu, băng từ giai đoạn cuối m https://fb.com/sinhvienzonevn 169 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi trước vào đoạn găng: minh họa Băng từ Giai đoạn Giai đoạn Tiến trình gồm giai đoạn Sao chép liệu từ băng từ sang file đĩa từ Sắp xếp liệu file đưa máy in Phương pháp cung cấp trước Xin băng từ, file đĩa máy in Lãng phí máy in giai đoạn đầu, băng từ giai đoạn cuối Phương pháp giải phóng tài nguyên m https://fb.com/sinhvienzonevn 169 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi trước vào đoạn găng: minh họa Băng từ Giai đoạn Giai đoạn Tiến trình gồm giai đoạn Sao chép liệu từ băng từ sang file đĩa từ Sắp xếp liệu file đưa máy in Phương pháp cung cấp trước Xin băng từ, file đĩa máy in Lãng phí máy in giai đoạn đầu, băng từ giai đoạn cuối Phương pháp giải phóng tài nguyên Xin băng từ file đĩa cho giai đoạn m https://fb.com/sinhvienzonevn 169 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi trước vào đoạn găng: minh họa Băng từ Giai đoạn Giai đoạn Tiến trình gồm giai đoạn Sao chép liệu từ băng từ sang file đĩa từ Sắp xếp liệu file đưa máy in Phương pháp cung cấp trước Xin băng từ, file đĩa máy in Lãng phí máy in giai đoạn đầu, băng từ giai đoạn cuối Phương pháp giải phóng tài nguyên Xin băng từ file đĩa cho giai đoạn Giải phóng băng từ file đĩa https://fb.com/sinhvienzonevn m 169 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi trước vào đoạn găng: minh họa Băng từ Giai đoạn Giai đoạn Tiến trình gồm giai đoạn Sao chép liệu từ băng từ sang file đĩa từ Sắp xếp liệu file đưa máy in Phương pháp cung cấp trước Xin băng từ, file đĩa máy in Lãng phí máy in giai đoạn đầu, băng từ giai đoạn cuối Phương pháp giải phóng tài nguyên m 169 / 201 Xin băng từ file đĩa cho giai đoạn Giải phóng băng từ file đĩa https://fb.com/sinhvienzonevn Xin file đĩa máy in cho giai đoạn 2(Nếu không được?) m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện trưng dụng tài nguyên găng Nguyên tắc: cho phép trưng dụng tài nguyên cần thiết Tiến trình Pi xin tài nguyên Rj Rj sẵn có: Cung cấp Rj cho Pi Rj không sẵn: (Rj bị chiếm tiến trình Pk ) Pk đợi tài nguyên Trưng dụng Rj từ Pk cung cấp cho Pi theo yêu cầu Thêm Rj vào danh sách tài nguyên thiếu Pk Pk thực trở lại ♣ Có tài ngun thiếu ♣ Đòi lại Rj Pk thực Pi phải đợi (không giải phóng tài nguyên) Cho phép trưng dụng tài nguyên cần thiết Chỉ áp dụng cho tài ngun lưu trữ khơi phục trạng thái dễ dàng (CPU, khơng gian nhớ ) Khó áp dụng cho tài nguyên máy in https://fb.com/sinhvienzonevn Một tiến trình bị trưng dụng nhiều lần ? 170 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi vòng tròn Đặt thứ tự toàn cục tất kiểu tài nguyên R = {R1 , R2 , Rn } Tập tất kiểu tài nguyên Xây dựng hàm trật tự f : R → N Hàm f xây dựng dựa trật tự sử dụng tài nguyên f(Băng từ) = f( Đĩa từ) = f(Máy in) = 12 m https://fb.com/sinhvienzonevn 171 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi vòng tròn Đặt thứ tự toàn cục tất kiểu tài nguyên R = {R1 , R2 , Rn } Tập tất kiểu tài nguyên Xây dựng hàm trật tự f : R → N Hàm f xây dựng dựa trật tự sử dụng tài nguyên f(Băng từ) = f( Đĩa từ) = f(Máy in) = 12 Tiến trình yêu cầu tài nguyên theo trật tự tăng Tiến trình chiếm giữ tài nguyên kiểu Rk xin tài nguyên kiểu Rj thỏa mãn f (Rj ) > f (Rk ) Tiến trình yêu cầu tới tài nguyên Rk phải giải phóng tất tài nguyên Ri thỏa mãn điều kiện f (Ri ) ≥ f (Rk ) m https://fb.com/sinhvienzonevn 171 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.4 Phòng ngừa bế tắc Điều kiện chờ đợi vòng tròn Đặt thứ tự toàn cục tất kiểu tài nguyên R = {R1 , R2 , Rn } Tập tất kiểu tài nguyên Xây dựng hàm trật tự f : R → N Hàm f xây dựng dựa trật tự sử dụng tài nguyên f(Băng từ) = f( Đĩa từ) = f(Máy in) = 12 Tiến trình yêu cầu tài nguyên theo trật tự tăng Tiến trình chiếm giữ tài nguyên kiểu Rk xin tài nguyên kiểu Rj thỏa mãn f (Rj ) > f (Rk ) Tiến trình yêu cầu tới tài nguyên Rk phải giải phóng tất tài nguyên Ri thỏa mãn điều kiện f (Ri ) ≥ f (Rk ) Chứng minh Giả thiết bế tắc xảy tiến trình {P1 , P2 , Pm } R1 → P1 → R2 → P2 ⇒ f (R1 ) < f (R2 ) R2 → P2 → R3 → P3 ⇒ f (R2 ) < f (R3 ) Rm → Pm → R1 → P1 ⇒ f (Rm ) < f (R1 ) m https://fb.com/sinhvienzonevn f (R1 ) < f(R 2) < < f (R m) < f (R )1 ⇒ Vô lý 171 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Bế tắc xử lý bế tắc Khái niệm bế tắc Điều kiện xảy bế tắc Các phương pháp xử lý bế tắc Phòng ngừa bế tắc Phòng tránh bế tắc Nhận biết khắc phục m https://fb.com/sinhvienzonevn 172 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ P1 P(S1 ) P(S2 ) S1 = t P2 m P(S2 ) P(S1 ) https://fb.com/sinhvienzonevn 173 / 201 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ P1 P(S1 ) P(S2 ) S1 = sử dụng R1 P2 m P(S2 ) t P(S1 ) https://fb.com/sinhvienzonevn 173 / 201 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ P1 P(S1 ) P(S2 ) S1 = sử dụng R1 t yêu cầuR2 P2 m P(S2 ) P(S1 ) https://fb.com/sinhvienzonevn 173 / 201 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ P1 P(S1 ) P(S2 ) S1 = sử dụng R1 t sử dụngR2 P2 m P(S2 ) P(S1 ) https://fb.com/sinhvienzonevn 173 / 201 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ P1 P(S2 ) S1 = −1 P(S1 ) sử dụng R1 yêu cầuR2 sử dụngR2 yêu cầuR1 P2 m P(S2 ) P(S1 ) https://fb.com/sinhvienzonevn 173 / 201 S2 = −1 t Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ P1 P(S1 ) P(S2 ) S1 = sử dụng R1 t yêu cầuR2 P2 m P(S2 ) P(S1 ) https://fb.com/sinhvienzonevn 173 / 201 S2 = Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ P1 P(S1 ) P(S2 ) S1 = sử dụng R1 t yêu cầuR2 P2 P(S2 ) P(S1 ) S2 = Nhận xét: Biết chuỗi yêu cầu/giải phóng tài nguyên tiến trình, hệ thống đưa chiến lược phân phối tài nguyên (chấp thuận hay phải đợi) cho yêu cầu để bế tắc không xảy m https://fb.com/sinhvienzonevn 173 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Nguyên tắc Phải biết trước thơng tin tiến trình tài ngun Tiến trình phải khai báo lượng tài nguyên lớn loại yêu cầu thực m https://fb.com/sinhvienzonevn 174 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Nguyên tắc Phải biết trước thông tin tiến trình tài nguyên Tiến trình phải khai báo lượng tài nguyên lớn loại yêu cầu thực Quyết định dựa kết kiểm tra trạng thái cung cấp tài nguyên (Resource-Allocation State) -Trạng thái hệ thống Trạng thái cung cấp tài nguyên xác định thơng số Số đơn vị tài ngun có sẵn hệ thống Số đơn vị tài nguyên cấp cho tiến trình Số đơn vị tài ngun lớn tiến trình u cầu Nếu hệ thống an toàn, đáp ứng cho yêu cầu m https://fb.com/sinhvienzonevn 174 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Nguyên tắc Phải biết trước thơng tin tiến trình tài ngun Tiến trình phải khai báo lượng tài nguyên lớn loại yêu cầu thực Quyết định dựa kết kiểm tra trạng thái cung cấp tài nguyên (Resource-Allocation State) -Trạng thái hệ thống Trạng thái cung cấp tài nguyên xác định thông số Số đơn vị tài nguyên có sẵn hệ thống Số đơn vị tài nguyên cấp cho tiến trình Số đơn vị tài nguyên lớn tiến trình u cầu Nếu hệ thống an tồn, đáp ứng cho yêu cầu Thực kiểm tra nhận yêu cầu tài nguyên Mục đích: Đảm bảo trạng thái hệ thống ln an tồn Thời điểm ban đầu (chưa c/cấp tài nguyên), hệ thống an toàn Hệ thống cung cấp tài nguyên đảm bảo an toàn ⇒Hệ thống chuyển từ trạng thái an toàn sang trạng thái an toàn khác m https://fb.com/sinhvienzonevn 174 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Nguyên tắc Phải biết trước thông tin tiến trình tài nguyên Tiến trình phải khai báo lượng tài nguyên lớn loại yêu cầu thực Quyết định dựa kết kiểm tra trạng thái cung cấp tài nguyên (Resource-Allocation State) -Trạng thái hệ thống Trạng thái cung cấp tài nguyên xác định thông số Số đơn vị tài nguyên có sẵn hệ thống Số đơn vị tài nguyên cấp cho tiến trình Số đơn vị tài ngun lớn tiến trình yêu cầu Nếu hệ thống an toàn, đáp ứng cho yêu cầu Thực kiểm tra nhận yêu cầu tài nguyên Mục đích: Đảm bảo trạng thái hệ thống ln an tồn Thời điểm ban đầu (chưa c/cấp tài nguyên), hệ thống an toàn Hệ thống cung cấp tài nguyên đảm bảo an toàn ⇒Hệ thống chuyển từ trạng thái an toàn sang trạng thái an toàn khác m https://fb.com/sinhvienzonevn Trạng thái an tồn hệ thống gì? 174 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Trạng thái an toàn Trạng thái hệ thống an tồn Có thể cung cấp tài ngun cho tiến trình (đến yêu cầu lớn nhất) theo trật tự mà không xảy bế tắc Tồn chuỗi an toàn tất tiến trình m https://fb.com/sinhvienzonevn 175 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Chuỗi an tồn Chuỗi tiến trình P={P1 , P2 , , Pn } an tồn Với tiến trình Pi , yêu cầu tài nguyên tương lai đáp ứng nhờ vào Lượng tài nguyên có hệ thống Tài nguyên chiếm giữ tất tiến trình Pj (j < i) m https://fb.com/sinhvienzonevn 176 / 201 m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Chuỗi an tồn Chuỗi tiến trình P={P1 , P2 , , Pn } an tồn Với tiến trình Pi , yêu cầu tài nguyên tương lai đáp ứng nhờ vào Lượng tài nguyên có hệ thống Tài nguyên chiếm giữ tất tiến trình Pj (j < i) Pi yêu cầu tài nguyên Nếu đáp ứng lập tức, Pi đợi Pj kết thúc (j < i) Khi Pj kết thúc giải phóng tài nguyên, Pi nhận tài nguyên cần thiết, thực hiện, giải phóng tài nguyên cung cấp kết thúc Khi Pi kết thúc, Pi+1 thu tài nguyên cần thiết thức https://fb.com/sinhvienzonevn 176 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa Xem xét hệ thống gồm tiến trình P1 , P2 , P3 tài nguyên R có 12 đơn vị Các tiến trình (P1 , P2 , P3 ) yêu cầu tối đa tới (10, 4, 9) đơn vị tài nguyên R Tại thời điểm t0 , tiến trình (P1 , P2 , P3 ) cấp (5, 2, 2) đơn vị tài nguyên R m https://fb.com/sinhvienzonevn 177 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa Xem xét hệ thống gồm tiến trình P1 , P2 , P3 tài nguyên R có 12 đơn vị Các tiến trình (P1 , P2 , P3 ) u cầu tối đa tới (10, 4, 9) đơn vị tài nguyên R Tại thời điểm t0 , tiến trình (P1 , P2 , P3 ) cấp (5, 2, 2) đơn vị tài nguyên R Tại thời điểm t0 hệ thống có an tồn? m https://fb.com/sinhvienzonevn 177 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa Xem xét hệ thống gồm tiến trình P1 , P2 , P3 tài ngun R có 12 đơn vị Các tiến trình (P1 , P2 , P3 ) yêu cầu tối đa tới (10, 4, 9) đơn vị tài nguyên R Tại thời điểm t0 , tiến trình (P1 , P2 , P3 ) cấp (5, 2, 2) đơn vị tài nguyên R Tại thời điểm t0 hệ thống có an tồn? Hệ thống cấp (5 + + 2) đơn vị, lại đơn vị Các tiến trình (P1 , P2 , P3 ) u cầu (5, 2, 7) đơn vị Với đơn vị có, yêu cầu P2 đáp ứng ⇒ P2 chắn kết thúc giải phóng đơn vị R Với + đơn vị, P1 chắn kết thúc,sẽ giải phóng đơn vị Với + + đơn vị P3 chắn kết thúc Ở thời điểm t0 tiến trình P1 , P2 , P3 chắn kết thúc ⇒ hệ thống an toàn với dãy an toàn (P2 , P1 , P3 ) m https://fb.com/sinhvienzonevn 177 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa Xem xét hệ thống gồm tiến trình P1 , P2 , P3 tài nguyên R có 12 đơn vị Các tiến trình (P1 , P2 , P3 ) yêu cầu tối đa tới (10, 4, 9) đơn vị tài nguyên R Tại thời điểm t0 , tiến trình (P1 , P2 , P3 ) cấp (5, 2, 2) đơn vị tài nguyên R Tại thời điểm t1 , tiến trình P2 yêu cầu cấp đơn vị tài nguyên R Hệ thống có an tồn? m https://fb.com/sinhvienzonevn 177 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa Xem xét hệ thống gồm tiến trình P1 , P2 , P3 tài nguyên R có 12 đơn vị Các tiến trình (P1 , P2 , P3 ) yêu cầu tối đa tới (10, 4, 9) đơn vị tài nguyên R Tại thời điểm t0 , tiến trình (P1 , P2 , P3 ) cấp (5, 2, 2) đơn vị tài nguyên R Tại thời điểm t1 , tiến trình P2 yêu cầu cấp đơn vị tài ngun R Hệ thống có an tồn? Với đơn vị có, yêu cầu P2 đáp ứng ⇒ P2 chắn kết thúc, giải phóng đơn vị R Khi P2 kết thúc số tài nguyên sẵn có hệ thống Với đơn vị tài nguyên, P1 P3 phải đợi xin thêm đơn vị tài ngun Vậy hệ thống khơng an tồn với dãy (P1 , P3 ) m https://fb.com/sinhvienzonevn 177 / 201 m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa Xem xét hệ thống gồm tiến trình P1 , P2 , P3 tài nguyên R có 12 đơn vị Các tiến trình (P1 , P2 , P3 ) yêu cầu tối đa tới (10, 4, 9) đơn vị tài nguyên R Tại thời điểm t0 , tiến trình (P1 , P2 , P3 ) cấp (5, 2, 2) đơn vị tài nguyên R Tại thời điểm t1 , tiến trình P2 yêu cầu cấp đơn vị tài ngun R Hệ thống có an tồn? Với đơn vị có, yêu cầu P2 đáp ứng ⇒ P2 chắn kết thúc, giải phóng đơn vị R Khi P2 kết thúc số tài nguyên sẵn có hệ thống Với đơn vị tài nguyên, P1 P3 phải đợi xin thêm đơn vị tài nguyên Vậy hệ thống khơng an tồn với dãy (P1 , P3 ) Nhận xét: Tại thời điểm t1 tiến trình P2 phải đợi yêu https://fb.com/sinhvienzonevn cầu thêm đơn vị tài nguyên, bế tắc loại trừ 177 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Phòng tránh bế tắc Nhận xét Hệ thống an tồn ⇒ Các tiến trình kết thúc ⇒ không xảy bế tắc Hệ thống khơng an tồn ⇒ Có khả xảy bế tắc m https://fb.com/sinhvienzonevn 178 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Phòng tránh bế tắc Nhận xét Hệ thống an tồn ⇒ Các tiến trình kết thúc ⇒ khơng xảy bế tắc Hệ thống khơng an tồn ⇒ Có khả xảy bế tắc Phương pháp Không để hệ thống rơi vào tình trạng khơng an tồn Kiểm tra yêu cầu tài nguyên Nếu hệ thống an toàn cung cấp ⇒ Cung cấp Nếu hệ thống không an toàn cung cấp ⇒ Phải đợi m https://fb.com/sinhvienzonevn 178 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Phòng tránh bế tắc Nhận xét Hệ thống an tồn ⇒ Các tiến trình kết thúc ⇒ không xảy bế tắc Hệ thống khơng an tồn ⇒ Có khả xảy bế tắc Phương pháp Khơng để hệ thống rơi vào tình trạng khơng an tồn Kiểm tra u cầu tài nguyên Nếu hệ thống an toàn cung cấp ⇒ Cung cấp Nếu hệ thống khơng an tồn cung cấp ⇒ Phải đợi Thuật toán Thuật toán dựa vào đồ thị cung cấp tài nguyên Thuật toán người quản lý nhà băng m https://fb.com/sinhvienzonevn 178 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Thuật tốn dựa vào đồ thị cung cấp tài nguyên Sử dụng kiểu tài nguyên có đơn vị Có chu trình, có bế tắc m https://fb.com/sinhvienzonevn 179 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Thuật toán dựa vào đồ thị cung cấp tài nguyên Sử dụng kiểu tài nguyên có đơn vị Có chu trình, có bế tắc Thêm vào đồ thị loại cung mới: cung đòi hỏi Pi → Rj Cùng hướng với cung yêu cầu, thể đồ thị −− > Cho biết Pi yêu cầu Rj tương lai m https://fb.com/sinhvienzonevn 179 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Thuật toán dựa vào đồ thị cung cấp tài nguyên Sử dụng kiểu tài nguyên có đơn vị Có chu trình, có bế tắc Thêm vào đồ thị loại cung mới: cung đòi hỏi Pi → Rj Cùng hướng với cung yêu cầu, thể đồ thị −− > Cho biết Pi yêu cầu Rj tương lai Tiến trình tham gia hệ thống, phải thêm tất cung đòi hỏi tương ứng vào đồ thị Khi Pi yêu cầu Rj , cung đòi hỏi Pi → Rj chuyển thành cung yêu cầu Pi → Rj Khi Pi giải phóng Rj , cung sử dụng Rj → Pi chuyển thành cung đòi hỏi Pi → Rj m https://fb.com/sinhvienzonevn 179 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Thuật toán dựa vào đồ thị cung cấp tài nguyên Sử dụng kiểu tài nguyên có đơn vị Có chu trình, có bế tắc Thêm vào đồ thị loại cung mới: cung đòi hỏi Pi → Rj Cùng hướng với cung yêu cầu, thể đồ thị −− > Cho biết Pi yêu cầu Rj tương lai Tiến trình tham gia hệ thống, phải thêm tất cung đòi hỏi tương ứng vào đồ thị Khi Pi yêu cầu Rj , cung đòi hỏi Pi → Rj chuyển thành cung yêu cầu Pi → Rj Khi Pi giải phóng Rj , cung sử dụng Rj → Pi chuyển thành cung đòi hỏi Pi → Rj Thuật tốn: u cầu tài nguyên Rj tiến trình Pi thỏa mãn việc chuyển cung yêu cầu Pi → Rj thành cung sử dụng Rj → Pi không tạo chu trình đồ thị m 179 / 201 Khơng chu trình: Hệ thống an tồn https://fb.com/sinhvienzonevn Có chu trình: Việc cung cấp tài nguyên đẩy hệ thống vào tình trạng khơng an tồn Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: tiến trình P1 , P2 tài nguyên R1 , R2 , loại đơn vị P1 xin R1 , R2 tương lai P1 xin R1 , R2 tương lai R1 P1 P2 R2 m https://fb.com/sinhvienzonevn 180 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: tiến trình P1 , P2 tài nguyên R1 , R2 , loại đơn vị P1 xin R1 , R2 tương lai P1 xin R1 , R2 tương lai R1 P1 yêu cầu tài nguyên R1 Cung đòi hỏi trở thành cung yêu cầu P1 P2 R2 m https://fb.com/sinhvienzonevn 180 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: tiến trình P1 , P2 tài nguyên R1 , R2 , loại đơn vị P1 xin R1 , R2 tương lai P1 xin R1 , R2 tương lai R1 P1 yêu cầu tài nguyên R1 Cung đòi hỏi trở thành cung yêu cầu Yêu cầu P1 đáp ứng P1 P2 Cung yêu cầu thành cung sử dụng R2 m https://fb.com/sinhvienzonevn 180 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: tiến trình P1 , P2 tài nguyên R1 , R2 , loại đơn vị P1 xin R1 , R2 tương lai P1 xin R1 , R2 tương lai R1 P1 yêu cầu tài nguyên R1 Cung đòi hỏi trở thành cung yêu cầu Yêu cầu P1 đáp ứng P1 P2 Cung yêu cầu thành cung sử dụng P2 yêu cầu tài nguyên R1 ⇒ Đợi R2 m https://fb.com/sinhvienzonevn 180 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: tiến trình P1 , P2 tài nguyên R1 , R2 , loại đơn vị P1 xin R1 , R2 tương lai P1 xin R1 , R2 tương lai R1 P1 yêu cầu tài nguyên R1 Cung đòi hỏi trở thành cung yêu cầu Yêu cầu P1 đáp ứng P1 P2 Cung yêu cầu thành cung sử dụng P2 yêu cầu tài nguyên R1 ⇒ Đợi P2 yêu cầu tài nguyên R2 ⇒ cung đòi hỏi trở thành cung yêu cầu P2 → R2 R2 m https://fb.com/sinhvienzonevn 180 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: tiến trình P1 , P2 tài nguyên R1 , R2 , loại đơn vị P1 xin R1 , R2 tương lai P1 xin R1 , R2 tương lai R1 P1 yêu cầu tài nguyên R1 Cung đòi hỏi trở thành cung yêu cầu Yêu cầu P1 đáp ứng P1 P2 Cung yêu cầu thành cung sử dụng P2 yêu cầu tài nguyên R1 ⇒ Đợi P2 yêu cầu tài nguyên R2 ⇒ cung đòi hỏi trở thành cung yêu cầu P2 → R2 R2 m Nếu đáp ứng ⇒Cung yêu cầu thành cung sử dụng https://fb.com/sinhvienzonevn 180 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: tiến trình P1 , P2 tài nguyên R1 , R2 , loại đơn vị P1 xin R1 , R2 tương lai P1 xin R1 , R2 tương lai R1 P1 yêu cầu tài nguyên R1 Cung đòi hỏi trở thành cung yêu cầu Yêu cầu P1 đáp ứng P1 P2 Cung yêu cầu thành cung sử dụng P2 yêu cầu tài nguyên R1 ⇒ Đợi P2 yêu cầu tài nguyên R2 ⇒ cung đòi hỏi trở thành cung yêu cầu P2 → R2 R2 m Nếu đáp ứng ⇒Cung yêu cầu thành cung sử dụng ⇒ Khi P1 yêu cầu R2 ⇒ Bế tắc https://fb.com/sinhvienzonevn 180 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: tiến trình P1 , P2 tài nguyên R1 , R2 , loại đơn vị P1 xin R1 , R2 tương lai P1 xin R1 , R2 tương lai R1 P1 yêu cầu tài nguyên R1 Cung đòi hỏi trở thành cung yêu cầu Yêu cầu P1 đáp ứng P1 P2 Cung yêu cầu thành cung sử dụng P2 yêu cầu tài nguyên R1 ⇒ Đợi P2 yêu cầu tài nguyên R2 ⇒ cung đòi hỏi trở thành cung yêu cầu P2 → R2 R2 m Nếu đáp ứng ⇒Cung yêu cầu thành cung sử dụng ⇒ Khi P1 yêu cầu R2 ⇒ Bế tắc https://fb.com/sinhvienzonevn 180 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: tiến trình P1 , P2 tài nguyên R1 , R2 , loại đơn vị P1 xin R1 , R2 tương lai P1 xin R1 , R2 tương lai R1 P1 yêu cầu tài nguyên R1 Cung đòi hỏi trở thành cung yêu cầu Yêu cầu P1 đáp ứng P1 P2 Cung yêu cầu thành cung sử dụng P2 yêu cầu tài nguyên R1 ⇒ Đợi P2 yêu cầu tài nguyên R2 ⇒ cung đòi hỏi trở thành cung yêu cầu P2 → R2 R2 m 180 / 201 Nếu đáp ứng ⇒Cung yêu cầu thành cung sử dụng ⇒ Khi P1 yêu cầu R2 ⇒ Bế tắc https://fb.com/sinhvienzonevn Yêu cầu tài nguyên P2 không đáp ứng Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: tiến trình P1 , P2 tài nguyên R1 , R2 , loại đơn vị P1 xin R1 , R2 tương lai P1 xin R1 , R2 tương lai R1 P1 yêu cầu tài nguyên R1 Cung đòi hỏi trở thành cung yêu cầu Yêu cầu P1 đáp ứng P1 P2 Cung yêu cầu thành cung sử dụng P2 yêu cầu tài nguyên R1 ⇒ Đợi P2 yêu cầu tài nguyên R2 ⇒ cung đòi hỏi trở thành cung yêu cầu P2 → R2 R2 m 180 / 201 Nếu đáp ứng ⇒Cung yêu cầu thành cung sử dụng ⇒ Khi P1 yêu cầu R2 ⇒ Bế tắc https://fb.com/sinhvienzonevn Yêu cầu tài nguyên P2 không đáp ứng m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ Hệ thống: tiến trình P1 , P2 tài nguyên R1 , R2 , loại đơn vị P1 xin R1 , R2 tương lai P1 xin R1 , R2 tương lai R1 P1 yêu cầu tài nguyên R1 Cung đòi hỏi trở thành cung yêu cầu Yêu cầu P1 đáp ứng P1 P2 Cung yêu cầu thành cung sử dụng P2 yêu cầu tài nguyên R1 ⇒ Đợi P2 yêu cầu tài nguyên R2 ⇒ cung đòi hỏi trở thành cung yêu cầu P2 → R2 Nếu đáp ứng ⇒Cung yêu cầu thành cung sử dụng ⇒ Khi P1 yêu cầu R2 ⇒ Bế tắc https://fb.com/sinhvienzonevn Yêu cầu tài nguyên P2 không P2 yêu cầu R2 , Đáp ứng? đáp ứng 180 / 201 R2 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Thuật toán người quản lý nhà băng: Giới thiệu Thích hợp cho hệ thống gồm kiểu tài ngun có nhiều đơn vị Một tiến trình xuất hệ thống cần khai báo số đơn vị lớn kiểu tài nguyên sử dụng Không vượt tổng số tài nguyên hệ thống Khi tiến trình yêu cầu tài nguyên, hệ thống kiểm tra liệu đáp ứng cho yêu cầu hệ thống có an tồn khơng Nếu hệ thống an toàn ⇒ Cung cấp tài nguyên cho yêu cầu Nếu hệ thống khơng an tồn ⇒ Tiến trình phải đợi Thuật toán cần Các cấu trúc liệu biểu diễn trạng thái phân phối tài nguyên Thuật toán kiểm tra tình trạng an tồn hệ thơng Thuật toán yêu cầu tài nguyên m https://fb.com/sinhvienzonevn 181 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Các cấu trúc liệu I Hệ thống n số tiến trình hệ thống m số kiểu tài nguyên hệ thống Các cấu trúc liệu Available Vector chiều dài m cho biết số đơn vị tài nguyên sẵn có hệ thống (Available[3] = ⇒?) Max Ma trận n ∗ m cho biết số lượng lớn kiểu tài nguyên tiến trình (Max[2,3] = ⇒?) Allocation Ma trận n ∗ m cho biết số lượng kiểu tài nguyên cấp cho tiến trình (Allocation[2,3] = ⇒?) Need Ma trận n ∗ m số lượng kiểu tài nguyên cần đến tiến trình Need[2,3] = ⇒?) Need[i][j] = Max[i][j] - Allocation[i][j] m https://fb.com/sinhvienzonevn 182 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Các cấu trúc liệu II Quy ước X, Y vector độ dài n X ≤ Y ⇔ X [i] ≤ Y [i] ∀i = 1, 2, , n Các dòng ma trận Max,Yêu cầu, Cung cấp xử lý vector Thuật toán tính tốn vector Các cấu trúc cục Work vector độ dài m cho biết tài nguyên Finish vector độ dài n, kiểu logic cho biết tiến trình có chắn kết thúc khơng m https://fb.com/sinhvienzonevn 183 / 201 m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Thuật tốn kiểm tra An toàn BOOL Safe(Current Resource-Allocation State){ Work←Available for (i : → n) Finish[i]←false flag← true While(flag){ flag←false for (i : → n) if(Finish[i]=false AND Need[i] ≤Work){ Finish[i]← true Work ← Work+Allocation[i] flag← true }//endif }//endwhile for (i : → n) if (Finish[i]=false)return false return true; https://fb.com/sinhvienzonevn }//End function 184 / 201 m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa Xét hệ thống gồm tiến trình P0 , P1 , P2 , P3 , P4 tài nguyên R0 , R1 , R2 Tài nguyên R0 có 10 đơn vị, R1 có đơn vị, R2 có đơn vị Yêu cầu tài nguyên lớn lượng tài nguyên tiến trình R0 R1 R2 R0 R1 P0 P0 P1 2 P1 P2 P2 P3 2 P3 P4 3 P4 0 Max Allocation Hệ thống có an tồn? Tiến trình P1 u cầu thêm đơn vị R0 đơn vị Tiến trình P4 yêu cầu thêm đơn vị R0 đơn vị https://fb.com/sinhvienzonevn Tiến trình P0 yêu cầu thêm đơn vị R1 Cung cấp? 185 / 201 cấp R2 0 2 R2 ? R1 ? Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài ngun sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) m https://fb.com/sinhvienzonevn 186 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài nguyên sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) Yêu cầu R0 R1 P0 P1 P2 P3 2 P4 Max m lại tiến trình (Need = Max - Allocation) R2 R0 R1 R2 R0 R1 R2 P0 P0 P1 0 P1 2 P2 P2 0 P3 1 P3 1 P4 0 P4 Allocation Need https://fb.com/sinhvienzonevn 186 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài ngun sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) Yêu cầu R0 R1 P0 P1 P2 P3 2 P4 Max lại tiến trình (Need = Max - Allocation) R2 R0 R1 R2 R0 R1 R2 P0 P0 P1 0 P1 2 P2 P2 0 P3 1 P3 1 P4 0 P4 Allocation Need Thực thuật toán an tồn Tiến trình P0 P1 P2 Finish F F F Work (3, 3, 2) m https://fb.com/sinhvienzonevn 186 / 201 P3 F P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài ngun sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) u cầu lại tiến trình (Need = Max - Allocation) R0 R1 R2 R0 R1 R2 R0 R1 R2 P0 P0 P0 P1 2 P1 0 P1 2 P2 P2 P2 0 P3 2 P3 1 P3 1 P4 3 P4 0 P4 Max Allocation Need Thực thuật toán an tồn Tiến trình P0 P1 P2 Finish F F F Work (3, 3, 2) m https://fb.com/sinhvienzonevn 186 / 201 P3 F P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài ngun sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) Yêu cầu lại tiến trình (Need = Max - Allocation) R0 R1 R2 R0 R1 R2 R0 R1 R2 P0 P0 P0 P1 2 P1 0 P1 2 P2 P2 P2 0 P3 2 P3 1 P3 1 P4 3 P4 0 P4 Max Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 Finish F F F Work (3, 3, 2) m https://fb.com/sinhvienzonevn 186 / 201 P3 F P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài ngun sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) Yêu cầu lại tiến trình (Need = Max - Allocation) R0 R1 R2 R0 R1 R2 R0 R1 R2 P0 P0 P0 P1 2 P1 0 P1 2 P2 P2 P2 0 P3 2 P3 1 P3 1 P4 3 P4 0 P4 Max Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 P3 Finish F T F F Work (5, 3, 2) m https://fb.com/sinhvienzonevn 186 / 201 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài nguyên sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) Yêu cầu lại tiến trình (Need = Max - Allocation) R0 R1 R2 R0 R1 R2 R0 R1 R2 P0 P0 P0 P1 2 P1 0 P1 2 P2 P2 P2 0 P3 2 P3 1 P3 1 P4 3 P4 0 P4 Max Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 P3 Finish F T F F Work (5, 3, 2) m https://fb.com/sinhvienzonevn 186 / 201 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài nguyên sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) Yêu cầu lại tiến trình (Need = Max - Allocation) R0 R1 R2 R0 R1 R2 R0 R1 R2 P0 P0 P0 P1 2 P1 0 P1 2 P2 P2 P2 0 P3 2 P3 1 P3 1 P4 3 P4 0 P4 Max Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 P3 Finish F T F T Work (7, 4, 3) m https://fb.com/sinhvienzonevn 186 / 201 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài nguyên sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) Yêu cầu R0 R1 P0 P1 P2 P3 2 P4 Max lại tiến trình (Need = Max - Allocation) R2 R0 R1 R2 R0 R1 R2 P0 P0 P1 0 P1 2 P2 P2 0 P3 1 P3 1 P4 0 P4 Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 P3 Finish F T F T Work (7, 4, 5) m https://fb.com/sinhvienzonevn 186 / 201 P4 T Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài ngun sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) Yêu cầu lại tiến trình (Need = Max - Allocation) R0 R1 R2 R0 R1 R2 R0 R1 R2 P0 P0 P0 P1 2 P1 0 P1 2 P2 P2 P2 0 P3 2 P3 1 P3 1 P4 3 P4 0 P4 Max Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 P3 Finish F T F T Work (7, 4, 5) m https://fb.com/sinhvienzonevn 186 / 201 P4 T Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài ngun sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) Yêu cầu lại tiến trình (Need = Max - Allocation) R0 R1 R2 R0 R1 R2 R0 R1 R2 P0 P0 P0 P1 2 P1 0 P1 2 P2 P2 P2 0 P3 2 P3 1 P3 1 P4 3 P4 0 P4 Max Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 Finish T T Work m P2 P3 F T (7, 5, 5) https://fb.com/sinhvienzonevn 186 / 201 P4 T Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài ngun sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) Yêu cầu R0 R1 P0 P1 P2 P3 2 P4 Max lại tiến trình (Need = Max - Allocation) R2 R0 R1 R2 R0 R1 R2 P0 P0 P1 0 P1 2 P2 P2 0 P3 1 P3 1 P4 0 P4 Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 Finish T T Work m https://fb.com/sinhvienzonevn 186 / 201 P2 P3 T T (10, 5, 7) P4 T m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : Kiểm tra tính an tồn Số tài ngun sẵn hệ thống (R0 , R1 , R2 ) =(3, 3, 2) Yêu cầu R0 R1 P0 P1 P2 P3 2 P4 Max lại tiến trình (Need = Max - Allocation) R2 R0 R1 R2 R0 R1 R2 P0 P0 P1 0 P1 2 P2 P2 0 P3 1 P3 1 P4 0 P4 Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 P3 P4 Finish T T T T T Work (10, 5, 7) https://fb.com/sinhvienzonevn Hệ thống an toàn (P1 , P3 , P4 , P0 , P2 ) 186 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Thuật tốn u cầu tài nguyên Request[i] Vector yêu cầu tài nguyên tiến trình Pi Request[3,2] = 2: Tiến trình P3 yêu cầu đơn vị tài nguyên R2 Khi Pi yêu cầu tài nguyên, hệ thống thực if(Request[i]>Need[i]) Error(Yêu cầu vượt khai báo tài nguyên) if(Request[i]>Available) Block(Khơng đủ tài ngun, tiến trình phải đợi) Thiết lập trạng thái phân phối tài nguyên cho hệ thống Available = Available - Request[i] Allocation[i] = Allocation[i] + Request[i] Need[i] = Need[i] - Request[i] m 187 / 201 Phân phối tài nguyên dựa kết kiểm tra tính an tồn trạng thái phân phối tài ngun if(Safe(New Resource Allocation State)) Phân phối cho Pi theo u cầu else Tiếnhttps://fb.com/sinhvienzonevn trình Pi phải đợi Khơi phục lại trạng thái cũ (Available, Allocation,Need ) Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp m https://fb.com/sinhvienzonevn 188 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( , 3, 0) R0 R1 R2 P0 P0 P1 P1 P2 P2 P3 1 P3 P4 0 P4 Allocation m https://fb.com/sinhvienzonevn 188 / 201 R0 R1 0 Need R2 0 1 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( , 3, 0) R0 R1 R2 P0 P0 P1 P1 P2 P2 P3 1 P3 P4 0 P4 Allocation Thực thuật toán an tồn Tiến trình P0 P1 P2 Finish F F F Work (2, 3, 0) m P3 F https://fb.com/sinhvienzonevn 188 / 201 P4 F R0 R1 0 Need R2 0 1 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( , 3, 0) R0 R1 R2 R0 R1 R2 P0 P0 P1 P1 P2 P2 0 P3 1 P3 1 P4 0 P4 Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 Finish F F F Work (2, 3, 0) m P3 F https://fb.com/sinhvienzonevn 188 / 201 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( , 3, 0) R0 R1 R2 R0 R1 R2 P0 P0 P1 P1 P2 P2 0 P3 1 P3 1 P4 0 P4 Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 Finish F F F Work (2, 3, 0) m P3 F https://fb.com/sinhvienzonevn 188 / 201 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( , 3, 0) R0 R1 R2 R0 R1 R2 P0 P0 P1 P1 P2 P2 0 P3 1 P3 1 P4 0 P4 Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 P3 Finish F T F F Work (5, 3, 2) m https://fb.com/sinhvienzonevn 188 / 201 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( , 3, 0) R0 R1 R2 R0 R1 R2 P0 P0 P1 P1 P2 P2 0 P3 1 P3 1 P4 0 P4 Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 P3 Finish F T F F Work (5, 3, 2) m https://fb.com/sinhvienzonevn 188 / 201 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( , 3, 0) R0 R1 R2 R0 R1 R2 P0 P0 P1 P1 P2 P2 0 P3 1 P3 1 P4 0 P4 Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 P3 Finish F T F T Work (7, 4, 3) m https://fb.com/sinhvienzonevn 188 / 201 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( , 3, 0) R0 R1 R2 P0 P0 P1 P1 P2 P2 P3 1 P3 P4 0 P4 Allocation Thực thuật toán an tồn Tiến trình P0 P1 P2 P3 Finish F T F T Work (7, 4, 5) m https://fb.com/sinhvienzonevn 188 / 201 P4 T R0 R1 0 Need R2 0 1 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( , 3, 0) R0 R1 R2 R0 R1 R2 P0 P0 P1 P1 P2 P2 0 P3 1 P3 1 P4 0 P4 Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 P3 Finish F T F T Work (7, 4, 5) m https://fb.com/sinhvienzonevn 188 / 201 P4 T Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( , 3, 0) R0 R1 R2 R0 R1 R2 P0 P0 P1 P1 P2 P2 0 P3 1 P3 1 P4 0 P4 Allocation Need Thực thuật tốn an tồn Tiến trình P0 P1 P2 P3 Finish T T F T Work (7, 5, 5) m https://fb.com/sinhvienzonevn 188 / 201 P4 T Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( , 3, 0) R0 R1 R2 P0 P0 P1 P1 P2 P2 P3 1 P3 P4 0 P4 Allocation Thực thuật toán an tồn Tiến trình P0 P1 P2 P3 Finish T T T T Work (10, 5, 7) m https://fb.com/sinhvienzonevn 188 / 201 P4 T R0 R1 0 Need R2 0 1 m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa : P1 yêu cầu (1, 0, 2) Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp Nếu cung cấp : Available = ( , 3, 0) R0 R1 R2 P0 P0 P1 P1 P2 P2 P3 1 P3 P4 0 P4 Allocation Thực thuật toán an tồn Tiến trình P0 P1 P2 P3 Finish T T T T Work (10, 5, 7) https://fb.com/sinhvienzonevn Yêu cầu chấp nhận 188 / 201 P4 T R0 R1 0 Need R2 0 1 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa (tiếp tục) Tiến trình P4 yêu cầu thêm đơn vị R0 đơn vị R2 Request[4] = (3, 0, 3) Available = (2, 3, 0) ⇒ Không đủ tài nguyên, P4 phải đợi m https://fb.com/sinhvienzonevn 189 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.5 Phòng tránh bế tắc Ví dụ minh họa (tiếp tục) Tiến trình P4 yêu cầu thêm đơn vị R0 đơn vị R2 Request[4] = (3, 0, 3) Available = (2, 3, 0) ⇒ Khơng đủ tài ngun, P4 phải đợi Tiến trình P0 yêu cầu thêm đơn vị R1 Request[0]≤Available ((0, 2, 0) ≤ (2, 3, 0)) ⇒ Có thể cung cấp Nếu cung cấp : Available = (2 , 1, 0) Thực thuật tốn an tồn ⇒ Tất tiến trình khơng kết thúc ⇒ Nếu chấp nhận, hệ thống rơi vào trạng thái không an tồn ⇒ Đủ tài ngun khơng cung cấp P0 phải đợi m https://fb.com/sinhvienzonevn 189 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Bế tắc xử lý bế tắc Khái niệm bế tắc Điều kiện xảy bế tắc Các phương pháp xử lý bế tắc Phòng ngừa bế tắc Phòng tránh bế tắc Nhận biết khắc phục m https://fb.com/sinhvienzonevn 190 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Giới thiệu Nguyên tắc Không áp dụng biện pháp phòng ngừa phòng tránh, bế tắc xảy Định kỳ kiểm tra xem bế tắc có xảy khơng Nếu có tìm cách khắc phục Để thực hiện, hệ thống phải cung cấp Thuật toán xác định hệ thống bế tắc khơng Thuật tốn chữa bế tắc m https://fb.com/sinhvienzonevn 191 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Giới thiệu Ngun tắc Khơng áp dụng biện pháp phòng ngừa phòng tránh, bế tắc xảy Định kỳ kiểm tra xem bế tắc có xảy khơng Nếu có tìm cách khắc phục Để thực hiện, hệ thống phải cung cấp Thuật toán xác định hệ thống bế tắc khơng Thuật tốn chữa bế tắc Nhận biết bế tắc Thuật toán dựa đồ thị cung cấp tài nguyên Thuật toán bế tắc tổng quát m https://fb.com/sinhvienzonevn 191 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Giới thiệu Nguyên tắc Khơng áp dụng biện pháp phòng ngừa phòng tránh, bế tắc xảy Định kỳ kiểm tra xem bế tắc có xảy khơng Nếu có tìm cách khắc phục Để thực hiện, hệ thống phải cung cấp Thuật toán xác định hệ thống bế tắc khơng Thuật tốn chữa bế tắc Nhận biết bế tắc Thuật toán dựa đồ thị cung cấp tài nguyên Thuật toán bế tắc tổng quát Khắc phục bế tắc Kết thúc tiến trình Trưng dụng tài nguyên m https://fb.com/sinhvienzonevn 191 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Thuận toán dựa đồ thị cung cấp tài nguyên Áp dụng tài nguyên hệ thống có đơn vị m https://fb.com/sinhvienzonevn 192 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Thuận toán dựa đồ thị cung cấp tài nguyên Áp dụng tài nguyên hệ thống có đơn vị Kiểm tra hệ thống có bế tắc cách kiểm tra chu trình đồ thị Nếu đồ thị có chu trình, hệ thống bế tắc m https://fb.com/sinhvienzonevn 192 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Thuận toán dựa đồ thị cung cấp tài nguyên Áp dụng tài nguyên hệ thống có đơn vị Kiểm tra hệ thống có bế tắc cách kiểm tra chu trình đồ thị Nếu đồ thị có chu trình, hệ thống bế tắc Định kỳ gọi tới thuật toán kiểm tra chu kỳ đồ thị Thuật tốn đòi hỏi n2 thao tác (n: số đỉnh đồ thị) m https://fb.com/sinhvienzonevn 192 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Thuận toán dựa đồ thị cung cấp tài nguyên Áp dụng tài nguyên hệ thống có đơn vị Kiểm tra hệ thống có bế tắc cách kiểm tra chu trình đồ thị Nếu đồ thị có chu trình, hệ thống bế tắc Định kỳ gọi tới thuật toán kiểm tra chu kỳ đồ thị Thuật tốn đòi hỏi n2 thao tác (n: số đỉnh đồ thị) Sử dụng đồ thị chờ đợi - phiên thu gọn đồ thị cung cấp tài ngun Chỉ có đỉnh dạng tiến trình Cung chờ đợi Pi → Pj : Tiến trình Pi đợi tiến trình Pj giải phóng tài ngun Pi cần Cung chờ đợi Pi → Pj tồn đồ thị đợi đồ thị phân phối tài nguyên tương ứng tồn đồng thời cung yêu cầu Pi → R cung sử dụngR → Pj m https://fb.com/sinhvienzonevn 192 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Đồ thị chờ đợi: Ví dụ P4 R3 P1 R1 m R4 P2 P5 R5 P3 R2 https://fb.com/sinhvienzonevn 193 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Đồ thị chờ đợi: Ví dụ P4 R3 P1 R1 m R4 P2 P5 R5 P3 R2 https://fb.com/sinhvienzonevn 193 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Đồ thị chờ đợi: Ví dụ P4 Đồ thị chờ đợi R3 P1 R1 m R4 P2 P5 P1 P3 R2 https://fb.com/sinhvienzonevn 193 / 201 P4 R5 P2 P5 P3 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Thuật toán bế tắc tổng quát : Giới thiệu Sử dụng cho hệ thống có kiểu tài nguyên gồm nhiều đơn vị Thuật toán tương tự thuật toán người quản lý nhà băng Các cấu trúc liệu Available Vector độ dài m: Tài nguyên sẵn có hệ thống Allocation Ma trận n ∗ m: Tài nguyên cấp cho tiến trình Request Ma trận n ∗ m Tài nguyên tiến trình yêu cầu Các cấu trúc cục Work Vector độ dài m cho biết tài nguyên có Finish Vector độ dài n cho biết tiến trình kết thúc khơng Các qui ước Quan hệ ≤ Vector https://fb.com/sinhvienzonevn Xử lý dòng ma trận n ∗ m vector m 194 / 201 m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Thuật toán bế tắc tổng quát BOOL Deadlock(Current Resource-Allocation State){ Work←Available For (i : → n) if(Allocation[i]= 0) Finish[i]←false else Finish[i]=true; flag← true While(flag){ flag←false for (i : → n) if(Finish[i]=false AND Request[i] ≤Work){ Finish[i]← true Work ← Work+Allocation[i] flag← true }//endif }//endwhile for (i : → n) if (Finish[i]=false) return true; return false; https://fb.com/sinhvienzonevn }//End function 195 / 201 m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Thuật toán bế tắc tổng quát BOOL Deadlock(Current Resource-Allocation State){ Work←Available For (i : → n) if(Allocation[i]= 0) Finish[i]←false else Finish[i]=true;//Allocation= không nằm chu trình đợi flag← true While(flag){ flag←false for (i : → n) if(Finish[i]=false AND Request[i] ≤Work){ Finish[i]← true Work ← Work+Allocation[i] flag← true }//endif }//endwhile for (i : → n) if (Finish[i]=false) return true; return false; https://fb.com/sinhvienzonevn }//End function 195 / 201 m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Thuật toán bế tắc tổng quát BOOL Deadlock(Current Resource-Allocation State){ Work←Available For (i : → n) if(Allocation[i]= 0) Finish[i]←false else Finish[i]=true;//Allocation= khơng nằm chu trình đợi flag← true While(flag){ flag←false for (i : → n) do//Giả thiết tối ưu, yêu cầu cuối if(Finish[i]=false AND Request[i] ≤Work){ Finish[i]← true Work ← Work+Allocation[i] flag← true }//endif }//endwhile for (i : → n) if (Finish[i]=false) return true; return false; https://fb.com/sinhvienzonevn }//End function 195 / 201 m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Thuật toán bế tắc tổng quát BOOL Deadlock(Current Resource-Allocation State){ Work←Available For (i : → n) if(Allocation[i]= 0) Finish[i]←false else Finish[i]=true;//Allocation= khơng nằm chu trình đợi flag← true While(flag){ flag←false for (i : → n) do//Giả thiết tối ưu, yêu cầu cuối if(Finish[i]=false AND Request[i] ≤Work){ Finish[i]← true Work ← Work+Allocation[i] flag← true }//endif }//endwhile for (i : → n) if (Finish[i]=false) return true; return false;//Finish[i] = false, tiến trình Pi bị bế tắc https://fb.com/sinhvienzonevn }//End function 195 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 m R0 R1 0 Allocation R2 0 https://fb.com/sinhvienzonevn 196 / 201 P0 P1 P2 P3 P4 R0 R1 0 0 Request R2 0 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 Tài nguyên có (R0 , R1 , R2 ) =(0, 0, 0) m https://fb.com/sinhvienzonevn 196 / 201 R0 R1 0 0 Request R2 0 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Tài nguyên có (R0 , R1 , R2 ) =(0, 0, 0) Thực thuật tốn bế tắc Tiến trình P0 P1 P2 P3 Finish F F F F Work (0, 0, 0) m https://fb.com/sinhvienzonevn 196 / 201 R2 0 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Tài nguyên có (R0 , R1 , R2 ) =(0, 0, 0) Thực thuật tốn bế tắc Tiến trình P0 P1 P2 P3 Finish F F F F Work (0, 0, 0) m https://fb.com/sinhvienzonevn 196 / 201 R2 0 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Tài nguyên có (R0 , R1 , R2 ) =(0, 0, 0) Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish T F F F Work (0, 1, 0) m https://fb.com/sinhvienzonevn 196 / 201 R2 0 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Tài nguyên có (R0 , R1 , R2 ) =(0, 0, 0) Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish T F F F Work (0, 1, 0) m https://fb.com/sinhvienzonevn 196 / 201 R2 0 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Tài nguyên có (R0 , R1 , R2 ) =(0, 0, 0) Thực thuật tốn bế tắc Tiến trình P0 P1 P2 P3 Finish T F T F Work (3, 1, 3) m https://fb.com/sinhvienzonevn 196 / 201 R2 0 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Tài nguyên có (R0 , R1 , R2 ) =(0, 0, 0) Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish T F T T Work (5, 2, 4) m https://fb.com/sinhvienzonevn 196 / 201 R2 0 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Tài nguyên có (R0 , R1 , R2 ) =(0, 0, 0) Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish T F T T Work (5, 2, 4) m https://fb.com/sinhvienzonevn 196 / 201 R2 0 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Tài nguyên có (R0 , R1 , R2 ) =(0, 0, 0) Thực thuật tốn bế tắc Tiến trình P0 P1 P2 P3 Finish T F T T Work (5, 2, 4) m https://fb.com/sinhvienzonevn 196 / 201 R2 0 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Tài nguyên có (R0 , R1 , R2 ) =(0, 0, 0) Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish T T T T Work (7, 2, 4) m https://fb.com/sinhvienzonevn 196 / 201 R2 0 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Tài nguyên có (R0 , R1 , R2 ) =(0, 0, 0) Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish T T T T Work (7, 2, 6) m https://fb.com/sinhvienzonevn 196 / 201 R2 0 P4 T m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa tiến trình P0 , P1 , P2 , P3 , P4 ; tài nguyên R0 , R1 , R2 Tài nguyên R0 có đơn vị, R1 có đơn vị, R2 có đơn vị Trạng thái cung cấp tài nguyên thời điểm t0 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request R2 0 Tài nguyên có (R0 , R1 , R2 ) =(0, 0, 0) Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 P4 Finish T T T T T Work (7, 2, 6) https://fb.com/sinhvienzonevn Hệ thống không bế tắc (P , P0 , P3 , P1 , P4 ) 196 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 m R0 R1 0 Allocation R2 0 https://fb.com/sinhvienzonevn 197 / 201 P0 P1 P2 P3 P4 R0 R1 0 0 Request R2 2 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish F F F F Work (0, 0, 0) m https://fb.com/sinhvienzonevn 197 / 201 R2 2 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Thực thuật tốn bế tắc Tiến trình P0 P1 P2 P3 Finish F F F F Work (0, 0, 0) m https://fb.com/sinhvienzonevn 197 / 201 R2 2 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Thực thuật tốn bế tắc Tiến trình P0 P1 P2 P3 Finish T F F F Work (0, 1, 0) m https://fb.com/sinhvienzonevn 197 / 201 R2 2 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish T F F F Work (0, 1, 0) m https://fb.com/sinhvienzonevn 197 / 201 R2 2 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish T F F F Work (0, 1, 0) m https://fb.com/sinhvienzonevn 197 / 201 R2 2 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Thực thuật tốn bế tắc Tiến trình P0 P1 P2 P3 Finish T F F F Work (0, 1, 0) m https://fb.com/sinhvienzonevn 197 / 201 R2 2 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish T F F F Work (0, 1, 0) m https://fb.com/sinhvienzonevn 197 / 201 R2 2 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish T F F F Work (0, 1, 0) m https://fb.com/sinhvienzonevn 197 / 201 R2 2 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Thực thuật tốn bế tắc Tiến trình P0 P1 P2 P3 Finish T F F F Work (0, 1, 0) m https://fb.com/sinhvienzonevn 197 / 201 R2 2 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish T F F F Work (0, 1, 0) m https://fb.com/sinhvienzonevn 197 / 201 R2 2 P4 F Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 Finish T F F F Work (0, 1, 0) m https://fb.com/sinhvienzonevn 197 / 201 R2 2 P4 F m Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Ví dụ minh họa (tiếp) P2 yêu cầu thêm đơn vị tài nguyên R2 Trạng thái cung cấp tài nguyên thời điểm t1 P0 P1 P2 P3 P4 R0 R1 0 Allocation R2 0 P0 P1 P2 P3 P4 R0 R1 0 0 Request R2 2 Thực thuật toán bế tắc Tiến trình P0 P1 P2 P3 P4 Finish T F F F F Work (0, 1, 0) P0 kết thúc hệ thống bế tắc Các tiến trình https://fb.com/sinhvienzonevn chờ đợi lẫn (P , P , P3 , P4 ) 197 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Khắc phục bế tắc: Phương pháp kết thúc tiến trình Nguyên tắc: Hủy bỏ tiến trình tình trạng bế tắc lấy lại tài nguyên cấp cho tiến trình bị hủy bỏ m https://fb.com/sinhvienzonevn 198 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Khắc phục bế tắc: Phương pháp kết thúc tiến trình Nguyên tắc: Hủy bỏ tiến trình tình trạng bế tắc lấy lại tài nguyên cấp cho tiến trình bị hủy bỏ Hủy bỏ tất tiến trình Nhanh chóng hủy bỏ bế tắc Quá tốn Các tiến trình bị hủy bỏ gần kết thúc m https://fb.com/sinhvienzonevn 198 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Khắc phục bế tắc: Phương pháp kết thúc tiến trình Nguyên tắc: Hủy bỏ tiến trình tình trạng bế tắc lấy lại tài nguyên cấp cho tiến trình bị hủy bỏ Hủy bỏ tất tiến trình Nhanh chóng hủy bỏ bế tắc Q tốn Các tiến trình bị hủy bỏ gần kết thúc Hủy bỏ tiến trình bế tắc không xảy Sau hủy bỏ, phải kiểm tra xem bế tắc tồn khơng Thuật tốn kiểm tra bế tắc có độ phức tạp m ∗ n2 Cần thứ tự tiến trình bị hủy bỏ để phá vỡ bế tắc Độ ưu tiên tiến trình Tiến trình tồn bao lâu, kết thúc Tài ngun tiến trình chiếm giữ, cần để kết thúc m https://fb.com/sinhvienzonevn 198 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Khắc phục bế tắc: Phương pháp kết thúc tiến trình Nguyên tắc: Hủy bỏ tiến trình tình trạng bế tắc lấy lại tài nguyên cấp cho tiến trình bị hủy bỏ Hủy bỏ tất tiến trình Nhanh chóng hủy bỏ bế tắc Q tốn Các tiến trình bị hủy bỏ gần kết thúc Hủy bỏ tiến trình bế tắc không xảy Sau hủy bỏ, phải kiểm tra xem bế tắc tồn khơng Thuật tốn kiểm tra bế tắc có độ phức tạp m ∗ n2 Cần thứ tự tiến trình bị hủy bỏ để phá vỡ bế tắc Độ ưu tiên tiến trình Tiến trình tồn bao lâu, kết thúc Tài ngun tiến trình chiếm giữ, cần để kết thúc Vấn đề hủy bỏ tiến trình Tiến trình cập nhật file ⇒ File khơng hồn chỉnh https://fb.com/sinhvienzonevn Tiến trình sử dụng máy in ⇒ Reset trạng thái máy in m 198 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Khắc phục bế tắc: Phương pháp trưng dụng tài nguyên Nguyên tắc: Trưng dụng liên tục vài tài nguyên từ số tiến trình bế tắc cho tiến trình khác đến bế tắc hủy bỏ Các vấn đề cần quan tâm m https://fb.com/sinhvienzonevn 199 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Khắc phục bế tắc: Phương pháp trưng dụng tài nguyên Nguyên tắc: Trưng dụng liên tục vài tài nguyên từ số tiến trình bế tắc cho tiến trình khác đến bế tắc hủy bỏ Các vấn đề cần quan tâm Lựa chọn nạn nhân (victime) Tài nguyên tiến trình chọn? Trật tự trưng dụng để chi phí nhỏ nhất? Lượng tài nguyên nắm giữ, thời gian sử dụng m https://fb.com/sinhvienzonevn 199 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Khắc phục bế tắc: Phương pháp trưng dụng tài nguyên Nguyên tắc: Trưng dụng liên tục vài tài nguyên từ số tiến trình bế tắc cho tiến trình khác đến bế tắc hủy bỏ Các vấn đề cần quan tâm Lựa chọn nạn nhân (victime) Tài nguyên tiến trình chọn? Trật tự trưng dụng để chi phí nhỏ nhất? Lượng tài nguyên nắm giữ, thời gian sử dụng Quay lui (Rollback) Quay lui tới trạng thái an tồn trước bắt đầu lại u cầu lưu giữ thơng tin trạng thái t/trình thực m https://fb.com/sinhvienzonevn 199 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc 5.6 Nhận biết khắc phục Khắc phục bế tắc: Phương pháp trưng dụng tài nguyên Nguyên tắc: Trưng dụng liên tục vài tài nguyên từ số tiến trình bế tắc cho tiến trình khác đến bế tắc hủy bỏ Các vấn đề cần quan tâm Lựa chọn nạn nhân (victime) Tài nguyên tiến trình chọn? Trật tự trưng dụng để chi phí nhỏ nhất? Lượng tài nguyên nắm giữ, thời gian sử dụng Quay lui (Rollback) Quay lui tới trạng thái an tồn trước bắt đầu lại u cầu lưu giữ thơng tin trạng thái t/trình thực Đói tài ngun (Starvation) Một tiến trình bị trưng dụng nhiều lần ⇒chờ đợi vô hạn Giải pháp: ghi lại số lần bị trưng dụng m https://fb.com/sinhvienzonevn 199 / 201 Chương 2: Quản lý tiến trình Bế tắc xử lý bế tắc Tổng kết Bế tắc tình trạng hay nhiều tiến trình chờ đợi độc lập kiện xảy hoạt động tiến trình đợi Bế tắc xảy hội đủ điều kiện Tồn tài nguyên găng Phải chờ đợi trước vào đoạn găng Không tồn hệ thống phân phối lại tài nguyên Tồn tượng chờ đợi vòng tròn Để xử lý bế tắc có lớp thuật tốn Phòng ngừa bế tắc Tác động vào điều kiện xảy bế tắc Dự báo phòng tránh Ngăn ngừa hệ thống rơi vào tình trạng dẫn đến bế tắc Nhận biết khắc phục Cho phép bế tắc xảy ra, bế tắc khắc phục sau https://fb.com/sinhvienzonevn m 200 / 201 m Chương 2: Quản lý tiến trình Kết luận Tiến trình Khái niệm tiến trình Điều phối tiến trình (Process Scheduling) Thao tác tiến trình Hợp tác tiến trình Truyền thơng liên tiến trình Luồng (Thread) Giới thiệu Mơ hình đa luồng Cài đặt luồng Điều phối CPU Các khái niệm Tiêu chuẩn điều phối Các thuật toán điều phối CPU Điều phối đa xử lý Tài nguyên găng điều độ tiến trình Khái niệm tài nguyên găng Phương pháp khóa Phương pháp kiểm tra xác lập Kỹ thuật đèn báo Ví dụ đồng tiến trình Cơng cụ điều độ cấp cao Bế tắc xử lý bế tắc Khái niệm bế tắc Điều kiện xảy bế tắc Các phương pháp xử lý bế tắc Phòng ngừa bế tắc Phòng tránh bế tắc Nhận biết khắc phục https://fb.com/sinhvienzonevn 201 / 201 ... 2: Quản lý tiến trình Tiến trình 1.3 Thao tác tiến trình Thao tác tiến trình Tạo tiến trình Kết thúc tiến trình m https://fb .com/ sinhvienzonevn 25 / 201 Chương 2: Quản lý tiến trình Tiến trình. .. tá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 ⇒Cây tiến. .. 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

Ngày đăng: 28/01/2020, 22:31

Từ khóa liên quan

Mục lục

  • C2

    • Tin trình

      • Khái nim tin trình

      • Ðiu phi tin trình (Process Scheduling)

      • Thao tác trên tin trình

      • Hp tác tin trình

      • Truyn thông liên tin trình

      • Lung (Thread)

        • Gii thiu

        • Mô hình a lung

        • Cài t lung

        • Ðiu phi CPU

          • Các khái nim c ban

          • Tiêu chun iu phi

          • Các thut toán iu phi CPU

          • Ðiu phi a x lý

          • Tài nguyên gang và iu tin trình

            • Khái nim tài nguyên gang

            • Phng pháp khóa trong

            • Phng pháp kim tra và xác lp

            • Ky thut èn báo

            • Ví du v ng b tin trình

            • Công cu iu cp cao

            • B tc và x lý b tc

              • Khái nim b tc

              • Ðiu kin xay ra b tc

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan