Bài giảng Nguyên lý hệ điều hành - Chương 2: Tiến trình

pdf 54 trang phuongnguyen 3761
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nguyên lý hệ điều hành - Chương 2: Tiến trình", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_nguyen_ly_he_dieu_hanh_chuong_2_tien_trinh.pdf

Nội dung text: Bài giảng Nguyên lý hệ điều hành - Chương 2: Tiến trình

  1. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Các vấn đề 1. Các khái niệm 2. Mô hình trạng thái 3. Thao tác trên tiến trình 4. Điều phối tiến trình 5. Đồng bộ hoá tiến trình Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 27 Trần Hồ Thủy Tiên
  2. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Các khái niệm ¾ Tiến trình (Process): chương trình đang thực hiện ¾ Mỗi tiến trình có một tập tài nguyên và môi trường riêng (con trỏ lệnh, Stack, thanh ghi, không gian địa chỉ) ¾ Các tiến trình hoàn toàn độc lập với nhau, có thể liên lạc thông qua các cơ chế truyền tin giữa các tiến trình. Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 28 Trần Hồ Thủy Tiên
  3. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Các khái niệm ¾ Tiến trình hệ thống: được sinh ra khi thực hiện các lời gọi hệ thống ¾ Tiến trình của người sử dụng: được sinh ra khi thực thi CT của NSD Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 29 Trần Hồ Thủy Tiên
  4. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Các khái niệm ¾Có2loại tiến trình: -Tiến trình kế tiếp: thời điểm bắt đầu của tiến trình này nằm sau thời điểm kết thúc của tiến trình kia -Tiến trình song song: thời điểm bắt đầu của tiến trình này nằm trước thời điểm kết thúc của tiến trình kia Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 30 Trần Hồ Thủy Tiên
  5. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Các khái niệm s1>=f0 P0 P1 s0>=f1 0s0 f0 s1 f1 t s1<=f0 P0 P1 s0<=f1 0s0 s1 f0 f1 t Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 31 Trần Hồ Thủy Tiên
  6. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Các khái niệm ¾ HĐH quản lý tiến trình thông qua khối quản lý tiến trình (Process Control Block:PCB) ¾ PCB: vùng nhớ lưu trữ các thông tin mô tả cho tiến trình như: • Định danh của tiến trình: phân biệt giữa các tiến trình. • Trạng thái tiến trình: hoạt động hiện hành của tiến trình. Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 32 Trần Hồ Thủy Tiên
  7. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Các khái niệm • Ngữ cảnh của tiến trình: - Trạng thái CPU: nội dung các thanh ghi (IP). Lưu trữ nội dung thanh ghi khi xảy ra ngắt. - Bộ xử lý: xác định số hiệu CPU mà tiến trình đang sử dụng (máy có cấuhìnhnhiềuCPU). - Bộ nhớ chính: danh sách các vùng nhớ được cấp cho tiến trình. - Tài nguyên sử dụng: danh sách các tài nguyên hệ thống mà tiến trình đang sử dụng. Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 - Tài nguyên tạo lập: danh sách các tài nguyên 33được Trần Hồ Thủy Tiên tiến trình tạo lập.
  8. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Các khái niệm • Thông tin giao tiếp: - Tiến trình cha: tiến trình tạo lập tiến trình này - Tiến trình con: các tiến trình do tiến trình này tạo ra - Độ ưu tiên: thông tin giúp bộ điều phối lựa chọn tiến trình được cấp CPU • Thông tin thống kê về hoạt động của tiến trình: - Thời gian sử dụng CPU - Thời gian chờ Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 34 Trần Hồ Thủy Tiên
  9. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Các khái niệm Khối quản lý tiến trình 1 PID Status 2 Ready List/WaitingList CPU-State-Rec Processor 3 Main store Unit1 Unit2 Resource RCB1 RCB2 Created resource RCB1 RCB2 Parent PCB 4 Progeny Priority PCB1 PCB2 PCB3 CPU time 5 Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 35 Trần Hồ Thủy Tiên
  10. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Các khái niệm ¾ Tiểu trình (Threads): một đơn vị xử lý cơ bản của hệ thống. ¾ Một tiểu trình cũng có thể tạo lập các tiến trình con ¾ Một tiến trình có thể sở hữu nhiều tiểu trình ¾ Các tiểu trình trong cùng một tiến trình có thể: - Chia sẻ một không gian địa chỉ. - Truy xuất đến các Stack của nhau Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 36 Trần Hồ Thủy Tiên
  11. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Mô hình trạng thái ™ Các trạng thái của tiến trình • Mới tạo: tiến trình đang được tạo lập. • Running: tiến trình đang được xử lý. • Ready: tiến trình đang sẵn sàng, chờ cấpCPU để xử lý • Blocked: tiến trình bị chặn, không thể tiếp tục. • Kết thúc: tiến trình hoàn tất xử lý. Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 37 Trần Hồ Thủy Tiên
  12. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Mô hình trạng thái ™ Sơ đồ chuyển trạng thái của tiến trình Mới tạo Kết thúc 5 1 3 Ready Running 2 6 4 Blocked Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 38 Trần Hồ Thủy Tiên
  13. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Mô hình trạng thái ™ Sơ đồ chuyển trạng thái của tiến trình (1) Tiến trình mới tạo lập được đưa vào hệ thống. (2) Bộđiều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU. (3) Tiến trình kết thúc, bộ điều phối thu lại CPU. (4) Tiến trình yêu cầu tài nguyên nhưng chưa được đáp ứng, hoặc phải chờ một sự kiện hay thao tác nhập/xuất. Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 39 Trần Hồ Thủy Tiên
  14. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Mô hình trạng thái ™ Sơ đồ chuyển trạng thái của tiến trình (5) Bộđiều phối chọn một tiến trình khác để xử lý. (6) Tài nguyên mà tiến trình yêu cầu đã sẵn sàng để cấp phát, hay sự kiện, thao tác nhập/xuất tiến trình đang đợi hoàn tất. Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 40 Trần Hồ Thủy Tiên
  15. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Thao tác trên tiến trình ™ Tạo lập tiến trình - Một tiến trình có thể tạo lập nhiều tiến trình mới - Tiến trình tạo ra tiến trình mới gọi là tiến trình cha - Tiến trình mới được tạo ra gọi là tiến trình con - Tiến trình con đến lượt lại tạo ra một loạt các tiến trình con của nó, Quá trình này tiếp tục sẽ tạo thành cây tiến trình Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 41 Trần Hồ Thủy Tiên
  16. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Thao tác trên tiến trình ™ Tạo lập tiến trình - Khi tạo lập tiến trình,HĐH cần thực hiện: 9 Định danh cho tiến trình (PID) 9 Đưa tiến trình vào danh sách quản lý của hệ thống 9 Xác định độ ưu tiên của tiến trình 9 Tạo khối quản lý tiến trình (PCB) 9 Cấp phát tài nguyên ban đầu cho tiến trình Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 42 Trần Hồ Thủy Tiên
  17. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Thao tác trên tiến trình ™ Kết thúc tiến trình Khi tiến trình kết thúc, HĐH thực hiện: - Thu hồi các tài nguyên của hệ thống đã cấp phát cho tiến trình - Huỷ tiến trình khỏi tất cả các danh sách quản lý của hệ thống - Huỷ bỏ PCB của tiến trình Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 43 Trần Hồ Thủy Tiên
  18. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Mục tiêu điều phối ™ Tiêu chuẩn điều phối ™ Điều phối không độc quyền, điều phối độc quyền ™ Đồng hồ ngắt giờ ™ Độ ưu tiên của tiến trình ™ Tổ chức điều phối ™ Các chiến lược điều phối Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 44 Trần Hồ Thủy Tiên
  19. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Mục tiêu điều phối - Sự công bằng giữa các tiến trình - Tính hiệu quả (tậndụng 100% thờigiansử dụng CPU) - Cực tiểu hoá thời gian lưu lại trong hệ thống - Thời gian đáp ứng hợp lý (cựctiểuhoáthờigian hồi đáp cho các tương tác củaNSD) - Thông lượng tối đa (cực đại hoá số công việc được Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 xử lý trong một thời gian cố định) 45 Trần Hồ Thủy Tiên
  20. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Tiêu chuẩn điều phối (đặc điểmcủatiếntrình) - Tính hướng xuất/nhập của tiến trình - Tính hướng xử lý của tiến trình - Tiến trình tương tác hay xử lý theo lô - Độ ưu tiên của tiến trình - Thời gian đã sử dụng CPU của tiến trình - Thời gian còn lại tiến trình cần để hoàn tất Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 46 Trần Hồ Thủy Tiên
  21. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Điều phối độc quyền - Tiến trình khi nhận được CPU thì có độc quyền sử dụng cho đến khi tiến trình hoàn tất hay tự nguyện giải phóng CPU - Quyết định điều phối CPU xảy ra khi: + Tiến trình chuyển từ trạng thái Running sang Blocked + Tiến trình kết thúc Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 - Giải thuật đơn giản, dễ cài đặt nhưng ngăn c47ản các tiến trình cònTrầ nl ạHiồ Thtrongủy Tiên hệ thống có cơ hội để xử lý
  22. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Điều phối không độc quyền - Tiến trình có thể bị tạm dừng hoạt động bất cứ lúc nào mà không được báo trước, để tiến trình khác xử lý. (khi có một tiến trình khác có độ ưu tiên cao hơn về quyền dành sử dụng CPU) - Quyết định điều phối CPU xảy ra khi: + Tiến trình chuyển từ trạng thái Running sang Blocked +Tiến trình chuyển từ trạng thái Running sang Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 48 Ready Trần Hồ Thủy Tiên
  23. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Điều phối không độc quyền + Tiến trình chuyển từ trạng thái blocked sang Ready + Tiến trình kết thúc - Ngăn cản được tình trạng các tiến trình độc chiếm CPU, nhưng việc tam dừng một tiến trình dẫn đến các mâu thuẫn trong truy xuất. Đòi hỏi phương pháp đồng bộ hoá thích hợp Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 49 Trần Hồ Thủy Tiên
  24. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Đồng hồ ngắt thời gian - Bộđếm thời gian qui định một thông số thời gian t thích hợp ứng với một lượt cấp CPU cho một tiến trình - Sau một khoảng thời gian t sẽ xảy ra một ngắt báo hiệu hết thời gian sử dụng CPU của tiến trình hiện hành. HĐH sẽ thu hồi CPU và bộ điều phối sẽ quyết định tiến trình nào sẽ được cấp phát. Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 50 Trần Hồ Thủy Tiên
  25. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Độ ưu tiên của tiến trình - Độ ưu tiên của tiến trình: giá trị giúp phân định tầm quan trọng của các tiến trình - Độ ưu tiên tĩnh: + Được gán sẵn cho tiến trình khi mới được ta ra + Không thay đổi - Độ ưu tiên động: thay đổi theo thời gian và môi trường xử lý của tiến trình Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 51 Trần Hồ Thủy Tiên
  26. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Tổ chức điều phối - Danh sách sẵn sàng (Ready List) - Danh sách chờ đợi (Waiting List) - Các danh sách chờ đợi riêng cho từng tài nguyên (thiếtbị ngoạivi) Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 52 Trần Hồ Thủy Tiên
  27. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Tổ chức điều phối Ready List CPU I/O waitingList Yêu cầu Hết quyền sử dụng Ngắt Đợi một ngắt Sơ đồ chuyển đổi giữa các danh sách điều phối Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 53 Trần Hồ Thủy Tiên
  28. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Chiến lược điều phối - Thuật toán FIFO - Thuật toán Round Robin (xoay vòng) - Thuật toán SJF (Shortest-Job-First) - Thuật toán sử dụng độ ưu tiên Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 54 Trần Hồ Thủy Tiên
  29. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Chiến lược điều phối Ready List C B A CPU Điều phối FIFO Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 55 Trần Hồ Thủy Tiên
  30. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Chiến lược điều phối Ready List A C B A CPU Điều phối Round Robin Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 56 Trần Hồ Thủy Tiên
  31. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Điều phối tiến trình ™ Tổ chức điều phối - Danh sách sẵn sàng (Ready List) - Danh sách chờ (Waiting List) - Các danh sách chờ riêng cho từng tài nguyên (thiết bị ngoạivi) Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 57 Trần Hồ Thủy Tiên
  32. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình ™ Nhu cầu đồng bộ hoá - Yêu cầu truy xuất độc quyền - Yêu cầu phối hợp Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 58 Trần Hồ Thủy Tiên
  33. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình ™ Miền găng (Critical Section) - Vấn đề tranh đoạt điều khiển if (taikhoan-tienrut)>=0 taikhoan=taikhoan-tienrut; else error ( >); - Khái niệm miền găng: Đoạn chGiáoươ trìnhng Nguyên trình lý H ệ cóđiều hành kh ả- năng xảy ra các mâu 10/2/2007 59 thuẫn truy xuTrầấn tH ồtrênThủy Tiên tài nguyên chung
  34. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình ™ Miền găng (Critical Section) - Điều kiện giải quyết tốt bài toán miền găng: • Không có 2 tiến trình cùng ở trong miền găng • Không phụ thuộc vào tốc độ của tiến trình • Một tiến trình tạm dừng bên ngoài miền găng không được ngăn cản các tiến trình khác vào miền găng • Không có tiến trình nào phải chờ vô hạn để được Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 vào miền găng. 60 Trần Hồ Thủy Tiên
  35. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình ™ Giải pháp ¾ Sử dụng biến khoá - Dùng biến lock chung cho các tiến trình - Nếu lock==1 thì khoá, không cho tiến trình vào miền găng. Chờ cho đến khi lock==0 - Nếu lock==0 thì cho tiến trình vào miền găng, đặt lock==1 để khoá không cho các tiến trình khác vào miền găng Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 61 Trần Hồ Thủy Tiên
  36. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình ™ Giải pháp ¾ Sử dụng biến khoá - Giải thuật sử dụng biến khoá để đồng bộ while (1) { while (lock==1);// wait lock=1; critical_section(); lock=0; Noncritical_section(); Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 62 } Trần Hồ Thủy Tiên
  37. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình - Giải thuật sử dụng biến khoá để đồng bộ while (1) { while (lock==1);// wait lock=1; critical_section(); lock=0; non_critical_section(); } Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 63 Trần Hồ Thủy Tiên
  38. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH CHƯƠNG 5. HỆ THỐNG FILE Đồng bộ hoá tiến trình - Ví dụ: Áp dụng giải thuật sử dụng biến khoá để đồng bộ while (1) { t=t*2; while (lock==1);// wait lock=1; for (s=0,i=0;i<=t;i++) s+=i; printf(“s=%i”,s); lock=0; Giáo trìnhbreak; Nguyên lý Hệ điều hành - 10/2/2007 64 Trần Hồ Thủy Tiên }
  39. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình ™ Giải pháp ¾Kiểm tra luân phiên - Các tiến trình muốn đi vào miền găng thì được gắn nhãn 0|1 - Sử dụng biến turn để chỉ thứ tự luân phiên. - Nếu turn==0: tiến trình có nhãn 0 được vào miền găng - Nếu turn==1: tiến trình có nhãn 1 được vào miền Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 găng 65 Trần Hồ Thủy Tiên
  40. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình ™ Giải pháp ¾Kiểm tra luân phiên - Giải thuật của tiến trình có nhãn 0 while (1) { while (turn != 0);// wait critical_section(); turn=1; non_critical_section(); Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 66 } Trần Hồ Thủy Tiên
  41. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình ™ Giải pháp ¾Kiểm tra luân phiên - Giải thuật của tiến trình có nhãn 1 while (1) { while (turn != 1);// wait critical_section(); turn=0; non_critical_section(); Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 67 } Trần Hồ Thủy Tiên
  42. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình ™ Giải pháp ¾ Giải pháp Peterson #define N 2 // Chỉ 2 tiến trình int turn=0, interested[N]={0,0}; void enter_region(int process) // Vào ĐG { int other=1-process;//other là tiến trình đối của process interested[prcess]=1; turn=process; while ((turn==process)&&interested[other]==1);//chờ Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 68 } Trần Hồ Thủy Tiên
  43. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình ™ Giải pháp ¾ Giải pháp Peterson void leave_region(int process) // Ra khỏi ĐG { interested[prcess]=0; } Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 69 Trần Hồ Thủy Tiên
  44. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình ™ Giải pháp ¾ Giải pháp Sleep and Wakeup - Sử dụng 2 thủ tục: sleep và wakeup - Khi tiến trình chưa đủ điều kiện để vào miền găng, nó goi sleep để tự khoá đến khi một tiến trình khác gọi wakeup để đánh thức nó. - Tiến trình khi ra khỏi miền găng sẽ gọi wakeup để đánh thức tiến trình khác. - int busy;// 1: nếu miền găng đang bận, 0:không bận Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 70 - int blocked;//đếTrmần H sồốTh ủlyượ Tiênng tiến trình đang bị khoá
  45. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Đồng bộ hoá tiến trình ™ Giải pháp ¾ Giải pháp Sleep and Wakeup Giải thuật: while (1) { busy=0; if (busy) { if (blocked) { blocked=blocked+1; wakeup(process); sleep(); blocked=blocked-1; } } else busy=1; noncritical_section(); Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 71 critical_section();Trần Hồ Th ủy Tiên }
  46. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Xác định trạng thái an toàn ™ Thuật toán: Sử dụng các cấu trúc dữ liệu sau: int allocation[numprocs,numresources]; //allocation[p,r] số lượng tài nguyên r thực sự cấp phát cho p int max[numprocs,numresources]; // max[p,r] nhu cầu tối đa của tiến trình p về tài nguyên r int need[numprocs,numresources]; //need[p,r]=max[p,r]-allocation[p,r] int available[numresources] Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 72 //available[r] sTrốầ nl ượHồ Thngủy tàiTiên nguyên r còn tự do
  47. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Xác định trạng thái an toàn ™ Thuật toán: int word[numresouces]=available; int finish[numproces]=false; 1. Tìm i sao cho a. finish[i]==false; b. need[i,j]<=word[j]; với mọi tài nguyên j nếu không có i như thế, đến bước 3 2. Word[j]=word[j]+allocation[i,j]; finish[i]=true; đến bước 1; Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 3. Nếu finish[i]==true với mọi i thì hệ thống ở trạng thái73 an Trần Hồ Thủy Tiên toàn. Ngược lại hệ thống bị tắc nghẽn
  48. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Xác định trạng thái an toàn ™ ví dụ: giả sử tình trạng hiện hành của hệ thống được mô tảởbảng dưới. Nếu tiến trình P2 yêu cầu cấp 4 R1, 1 R3. Hãy cho biết yêu cầu này có thể đáp ứng mà không xảy ra tình trạng tắt nghẽn Max Allocation Available R1 R2 R3 R1 R2 R3 R1 R2 R3 P1 3 2 2 1 0 0 4 1 2 P2 6 1 3 2 1 1 P3 3 1 4 2 1 1 Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 P4 4 2 2 0 0 2 74 Trần Hồ Thủy Tiên
  49. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Xác định trạng thái an toàn ™ ví dụ: Available[1]=4, Available[3]=2 đủ để thoả mãn yêu cầu của P2, ta có Need Allocation Available R1 R2 R3 R1 R2 R3 R1 R2 R3 P1 2 2 2 1 0 0 0 1 1 P2 0 0 1 6 1 2 P3 1 0 3 2 1 1 Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 P4 4 2 0 0 0 2 75 Trần Hồ Thủy Tiên
  50. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Xác định trạng thái an toàn ™ ví dụ: Need Allocation Available R1 R2 R3 R1 R2 R3 R1 R2 R3 P1 2 2 2 1 0 0 6 2 3 P2 0 0 0 0 0 0 P3 1 0 3 2 1 1 P4 4 2 0 0 0 2 Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 76 Trần Hồ Thủy Tiên
  51. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Xác định trạng thái an toàn ™ ví dụ: Need Allocation Available R1 R2 R3 R1 R2 R3 R1 R2 R3 P1 0 0 0 0 0 0 7 2 3 P2 0 0 0 0 0 0 P3 1 0 3 2 1 1 P4 4 2 0 0 0 2 Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 77 Trần Hồ Thủy Tiên
  52. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Xác định trạng thái an toàn ™ Ví dụ: Need Allocation Available R1 R2 R3 R1 R2 R3 R1 R2 R3 P1 0 0 0 0 0 0 9 3 4 P2 0 0 0 0 0 0 P3 0 0 0 0 0 0 P4 4 2 0 0 0 2 Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 78 Trần Hồ Thủy Tiên
  53. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Xác định trạng thái an toàn ™ Ví dụ: Need Allocation Available R1 R2 R3 R1 R2 R3 R1 R2 R3 P1 0 0 0 0 0 0 9 3 6 P2 0 0 0 0 0 0 P3 0 0 0 0 0 0 P4 0 0 0 0 0 0 Trạng thái kết quả là an toàn, có thể cấp phát. Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 79 Trần Hồ Thủy Tiên
  54. TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀNẴNG CHƯƠNG 2. TIẾN TRÌNH Xác định trạng thái an toàn ™ Bài tập: Max Allocation Available R1 R2 R3 R1 R2 R3 R1 R2 R3 P1 3 2 2 1 0 0 4 1 2 P2 6 1 3 2 1 1 P3 3 1 4 2 1 1 P4 4 2 2 0 0 2 Tiến trình P2 yêu cầu 4 R1, 1 R3. Hãy cho biết yêu cầu này có thể đáp ứng mà đảm bảo không xảy ra Giáo trình Nguyên lý Hệ điều hành - 10/2/2007 80 tình trạng tắt nghTrần ẽHnồ Th hayủy Tiên không?