Bài giảng Nguyên lý hệ điều hành: Phần 1 cung cấp cho người học những kiến thức như: Tổng quan về hệ điều hành; Cấu trúc hệ điều hành; Quản lý tiến trình, Lập lịch CPU; Đồng bộ hóa tiến trình;...Mời các bạn cùng tham khảo!
MỤC LỤC Chương 1: TỔNG QUAN 1.1 Giới thiệu 1.1.1 Hệ điều hành gì? 1.1.2 Các hệ xử lý theo lô đơn giản 1.1.3 Các hệ xử lý theo lô, đa chương 1.1.4 Các hệ phân chia thời gian 1.1.5 Các hệ máy tính cá nhân 11 1.1.6 Các hệ song song, hệ phân tán, hệ thời gian thực 11 1.2 Cấu trúc hệ điều hành 15 1.2.1 Các thành phần hệ thống 16 1.2.2 Các dịch vụ hệ điều hành 22 1.2.3 Lời gọi hệ thống 24 1.2.4 Các chương trình hệ thống 25 1.2.5 Cấu trúc hệ thống 26 1.2.6 Cài đặt thiết kế hệ thống 33 Câu hỏi tập chương 35 Chương 2: QUẢN LÝ TIẾN TRÌNH 36 2.1 Tiến tình 36 2.1.1 Khái niệm tiến trình 36 2.1.2 Lập lịch tiến trình 39 2.1.3 Các thao tác tiến trình 45 2.1.4 Hợp tác tiến trình 49 2.1.5 Luồng 52 2.1.6 Truyền thông tiến trình 70 2.2 Lập lịch CPU 74 2.2.1 Các khái niệm 74 2.2.2 Các tiêu chí lập lịch 78 2.2.3 Các thuật toán lập lịch 79 2.2.4 Đánh giá thuật toán 95 2.3 Đồng hóa tiến trình 96 2.3.1 Cơ sở 96 2.3.2 Bài toán Critical - Sestion 99 2.3.4 Các toán cổ điển việc đồng hoá 114 2.4 Bế tắc 126 2.4.1 Mơ hình 126 2.4.2 Đặc trưng hóa bế tắc 128 2.4.3 Các phương pháp thao tác với bế tắc 132 2.4.4 Phòng tránh bế tắc 136 2.4.5 Phát bế tắc 144 2.4.6 Khôi phục từ bế tắc 148 Câu hỏi tập chương 150 Chương 3: QUẢN LÝ LƯU TRỮ 155 3.1 Quản lý nhớ 155 3.1.1 Cơ sở 155 3.1.2 Bộ nhớ vật lý nhớ logic 160 3.1.3 Hoán vị (Swap) 161 3.1.4 Cấp phát liên tục 163 3.1.5 Phân trang 172 3.1.6 Phân đoạn 188 3.2 Bộ nhớ ảo 198 3.2.1 Cơ sở 198 3.2.2 Phân trang theo yêu cầu 201 3.2.3 Hiệu phân trang theo yêu cầu 205 3.2.4 Thay trang 205 3.2.5 Các thuật toán thay trang 207 3.2.6 Cấp phát frame 215 3.2.7 Thrashing 218 3.2.8 Các vấn đề khác 220 3.2.9 Phân đoạn theo yêu cầu 221 3.3 Giao diện hệ thống tệp 225 3.3.1 Khái niệm tệp 225 3.3.2 Các phương pháp truy cập 229 3.3.3 Cấu trúc thư mục 231 3.3.4 Bảo vệ 243 3.3.5 Tính quán ngữ nghĩa 246 3.4 Cài đặt hệ thống tệp 246 3.4.1 Cấu trúc hệ thống tệp 247 3.4.2 Các phương pháp cấp phát 249 3.4.3 Quản lý không gian rỗi 260 3.4.4 Cài đặt thư mục 262 3.4.5 Hiệu hiệu 264 3.4.6 Khôi phục 265 Câu hỏi tập chương 265 Chương 4: HỆ VÀO RA 271 4.1 Hệ vào 271 4.1.1 Tổng quan 271 4.1.2 Vào phần cứng 272 4.1.3 Giao diện lập trình vào 275 4.1.4 Hệ vào nhân 277 4.1.5 Chuyển đổi yêu cầu vào thành thao tác phần cứng 281 4.1.6 Hiệu 283 4.2 Cấu trúc lưu trữ phụ 285 4.2.1 Cấu trúc đĩa 285 4.2.2 Lập lịch đĩa 286 4.2.3 Quản lý đĩa 290 4.2.4 Quản lý không gian swap 292 4.2.5 Độ tin cậy đĩa 292 4.2.6 Cài đặt hệ lưu trữ ổn định 294 4.2.7 Các thiết bị lưu trữ thứ ba: Các công việc hệ điều hành vấn đề hiệu 294 Câu hỏi tập chương 297 TÀI LIỆU THAM KHẢO 300 Chương 1: TỔNG QUAN 1.1 Giới thiệu Hệ điều hành chương trình phần mềm quản lý phần cứng máy tính Nó cung cấp tảng cho chương trình ứng dụng đóng vai trò trung gian giao tiếp người dùng máy tính phần cứng máy tính Hệ điều hành thực nhiệm vụ đa dạng, vài hệ điều hành thiết kế để thực nhiệm vụ chuyên biệt số hệ điều hành khác thiết kế đa 1.1.1 Hệ điều hành gì? Một hệ điều hành thành phần quan trọng hệ thống máy tính Một hệ thống máy tính chia thành bốn thành phần: phần cứng, hệ điều hành, chương trình ứng dụng người sử dụng - Phần cứng (hardware): bao gồm xử lý trung tâm (CPU), nhớ (memory), thiết bị xuất/nhập (I/O),… cung cấp tài nguyên cho hệ thống - Các chương trình ứng dụng (application programs): trình biên dịch (compiler), trình soạn thảo văn (text editor), hệ sở liệu (database system), trình duyệt Web, hỗ trợ người dùng sử dụng tài nguyên, giải yêu cầu người dùng - Người dùng (user): người sử dụng hệ thống, người dùng khác thực yêu cầu khác ứng dụng khác - Hệ điều hành (operating system): hay gọi chương trình hệ thống, điều khiển phối hợp việc sử dụng phần cứng chương trình ứng dụng khác cho người dùng khác Hệ điều hành khai thác từ hai phía: người dùng hệ thống User … User Compliler Text editor … User N Database System and application programs Operating System Hardwave Hình 1.1 Các thành phần hệ thống máy tính + Tầm nhìn người sử dụng Tầm nhìn người sử dụng máy tính đa dạng giao diện dùng Hầu hết người dùng máy tính ngồi trước máy tính cá nhân gồm có hình, bàn phím, chuột xử lý hệ thống (system unit) Một hệ thống thiết kế cho người dùng độc quyền sử dụng tài ngun để tối ưu hố cơng việc mà người dùng thực Trong trường hợp này, hệ điều hành thiết kế dễ dàng cho việc sử dụng với quan tâm lực thực quan tới việc sử dụng tài ngun Có người sử dụng ngồi thiết bị đầu cuối (terminal) nối kết tới máy tính lớn (mainframe) hay máy tính tầm trung (minicomputer) Những người khác truy xuất máy tính thơng qua thiết bị đầu cuối khác Những người dùng chia sẻ tài nguyên trao đổi thơng tin Hệ điều hành thiết kế để tối ưu hoá việc sử dụng tài nguyên để đảm bảo tất thời gian phục vụ CPU, nhớ thiết bị xuất nhập sử dụng hữu hiệu, công Gần đây, máy tính xách tay sử dụng rộng rãi Các thiết bị sử dụng cá nhân người dùng Một vài máy tính nối mạng nối trực tiếp cáp mạng hay thông qua modem không dây Do giới hạn lượng, hệ điều hành thiết kế để tiết kiệm tối đa lượng máy tính Một số máy tính có hay khơng có giao diện với người dùng Thí dụ, máy tính nhúng vào thiết bị gia đình xe ơtơ có bảng số đèn hiển thị trạng thái mở, tắt hầu hết chúng hệ điều hành thiết kế để điều khiển thiết bị không cần giao tiếp với ngưới sử dụng + Tầm nhìn hệ thống Chúng ta thấy hệ điều hành cấp phát tài nguyên Hệ thống máy tính có nhiều tài ngun - phần cứng phần mềm - yêu cầu để cấp phát tài nguyên: thời gian CPU, không gian nhớ, không gian lưu trữ tập tin, thiết bị xuất/nhập, Hệ điều hành hoạt động quản lý tài nguyên, thực lượng lớn yêu cầu cấp phát xung đột tài nguyên, hệ điều hành phải định cách cấp phát tài nguyên tới chương trình cụ thể người dùng để điều hành hệ thống máy tính hữu hiệu cơng Một tầm nhìn khác hệ điều hành nhấn mạnh cần thiết để điều khiển thiết bị xuất/nhập khác chương trình người dùng Một hệ điều hành chương trình điều khiển Chương trình điều khiển quản lý thực chương trình người dùng để ngăn chặn lỗi việc sử dụng không hợp lý máy tính Nó đặc biệt quan tâm với thao tác điều khiển thiết bị nhập/xuất Nhìn chung, khơng có định nghĩa hồn tồn đầy đủ hệ điều hành Các hệ điều hành tồn chúng cách hợp lý để giải vấn đề tạo hệ thống máy tính sử dụng Mục tiêu hệ thống máy tính thực chương trình người dùng giải vấn đề để người dùng dễ dàng sử dụng hệ thống máy tính Hướng đến mục tiêu này, phần cứng máy tính xây dựng Tuy nhiên, đơn phần cứng khơng dễ sử dụng phát triển chương trình ứng dụng Các chương trình ứng dụng khác đòi hỏi thao tác chung đó, chẳng hạn điều khiển thiết bị xuất/nhập Sau đó, chức chung điều khiển cấp phát tài nguyên đặt lại với vào phận phần mềm gọi hệ điều hành Mục đích hệ điều hành giúp người sử dụng dễ dàng việc sử dụng hệ thống máy tính Vì tồn hệ điều hành hỗ trợ nhiều cho máy tính việc đáp ứng ứng dụng người dùng Điều đặc biệt rõ ràng xem xét hệ điều hành máy tính cá nhân Mục tiêu thứ hai hệ điều hành điều hành hiệu hệ thống máy tính Mục tiêu đặc biệt quan trọng cho hệ thống lớn, chia sẻ, nhiều người dùng Những hệ thống tiêu biểu đắt, khai thác hiệu hệ thống điều mong muốn Tuy nhiên, hai mục tiêu tiện dụng hữu hiệu mâu thuẫn Trong khứ, xem xét tính hữu hiệu thường quan trọng tính tiện dụng Do đó, lý thuyết hệ điều hành tập trung nhiều vào việc tối ưu hoá sử dụng tài ngun tính tốn Hệ điều hành phát triển dần theo thời gian Thí dụ, UNIX bắt đầu với bàn phím máy in giao diện giới hạn tính tiện dụng người dùng Qua thời gian, phần cứng thay đổi UNIX gắn vào phần cứng với giao diện thân thiện với người dùng Nhiều giao diện người dùng đồ hoạ GUIs (graphical user interfaces) bổ sung cho phép tiện dụng với người dùng quan tâm tính hiệu 1.1.2 Các hệ xử lý theo lơ đơn giản Những hệ thống máy tính mainframe máy tính dùng để xử lý ứng dụng thương mại khoa học Trong phần này, lần theo phát triển hệ thống mainframe từ hệ thống bó (batch systems), máy tính chạy một-và -ứng dụng, tới hệ thống chia sẻ thời gian (time-shared systems), cho phép người dùng giao tiếp với hệ thống máy tính Những máy tính thời kỳ đầu máy có kích thước lớn chạy từ thiết bị cuối (console) Những thiết bị nhập thường sử dụng đọc thẻ, ổ đĩa băng từ Các thiết bị xuất thông thường thường máy in dòng (line printers), ổ đĩa từ phiếu đục lỗ Người dùng không giao tiếp trực tiếp với hệ thống máy tính Thay vào đó, người dùng chuẩn bị cơng việc chứa chương trình, liệu thơng tin điều khiển tính tự nhiên cơng việc – sau gửi đến người điều hành máy tính Cơng việc thường thực phiếu đục lỗ Sau thời gian (vài phút, hay ngày), liệu kết xuất Hệ điều hành máy tính thời kỳ đầu tương đối đơn giản Nhiệm vụ chuyển điều khiển tự động từ thực công việc sang công việc khác Hệ điều hành thường trú nhớ Hệ điều hành Vùng chương trình người dùng Hình 1.2 Sắp xếp nhớ cho hệ thống bó đơn giản Để tăng tốc việc xử lý, người điều hành “bó” cơng việc có u cầu chạy chúng thơng qua máy tính nhóm Do đó, lập trình viên đưa chương trình họ cho người điều hành Người điều hành xếp chương trình thành “bó” với u cầu máy tính sẵn dùng chạy bó Dữ liệu xuất từ công việc gửi lại cho lập trình viên tương ứng Trong mơi trường thực này, CPU ln rỗi tốc độ thiết bị xuất/nhập dạng thường chậm tốc độ thiết bị điện Một CPU chậm thực hàng ngàn thị lệnh thực giây, đọc thẻ nhanh đọc 1200 thẻ thời gian phút (hay 20 thẻ giây) Do đó, khác biệt tốc độ CPU thiết bị xuất/nhập lần hay nhiều Theo thời gian, tiến công nghệ dẫn đến đời thiết bị nhập/xuất nhanh Tuy nhiên, tốc độ CPU tăng tới tỷ lệ lớn vấn đề khơng khơng giải mà cịn làm gia tăng cách biệt Công nghệ đĩa từ cho phép hệ điều hành lưu giữ tất công việc đĩa thay cho lưu giữ đọc thẻ Với việc truy xuất trực tiếp tới nhiều công việc đĩa từ, hệ điều hành thực lập lịch công việc, để sử dụng tài nguyên thực công việc hiệu 1.1.3 Các hệ xử lý theo lô, đa chương Một vấn đề quan trọng lập lịch công việc khả đa chương Thông thường, người sử dụng muốn CPU thiết bị xuất/nhập bận, tận dụng tối đa hiệu suất thiết bị phần cứng Đa chương làm gia tăng khả sử dụng CPU cách tổ chức công việc để CPU ln có cơng việc cần thực Ý tưởng kỹ thuật đa chương minh hoạ sau: thời điểm, hệ điều hành giữ nhiều công việc nhớ Tập hợp công việc tập công việc giữ vùng cơng việc - số lượng cơng việc giữ lúc nhớ thường nhỏ số cơng việc có vùng đệm Hệ điều hành lấy bắt đầu thực công việc có nhớ Khi cơng việc phải chờ vài tác vụ thao tác xuất/nhập để hoàn thành, hệ thống đơn chương, CPU chờ trạng thái rỗi, hệ thống đa chương, hệ điều hành chuyển sang thực công việc khác Cuối cùng, công việc kết thúc việc chờ nhận CPU để thực tiếp Chỉ cần có công việc đợi để thực hiện, CPU không trạng thái rỗi Hệ điều hành Công việc Công việc Công việc Cơng việc Hình 1.3 Sắp xếp nhớ cho hệ đa chương Đa chương trường hợp mà hệ điều hành phải thực định thay cho người sử dụng, đó, hệ điều hành đa chương tương đối phức tạp Tất công việc đưa vào hệ thống giữ vùng cơng việc Vùng chứa tất tiến trình lưu trữ đĩa cứng chờ cấp phát nhớ Nếu nhiều cơng việc chờ sẵn sàng để đưa vào nhớ không đủ khơng gian cho tất cơng việc hệ điều hành phải chọn công việc tập công việc đợi Khi hệ điều hành chọn công việc từ vùng cơng việc, nạp cơng việc vào nhớ để thực Có nhiều chương trình nhớ thời điểm yêu cầu phải có quản lý nhớ Ngồi ra, nhiều công việc sẵn sàng chạy thời điểm, hệ thống phải chọn chúng Thực định lập lịch CPU Cuối cùng, nhiều công việc chạy đồng hành địi hỏi hoạt động chúng ảnh hưởng tới cơng việc khác bị hạn chế tất giai đoạn hệ điều hành bao gồm lập lịch tiến trình, lưu trữ đĩa, quản lý nhớ 1.1.4 Các hệ phân chia thời gian Hệ thống đa chương cung cấp môi trường nơi mà nhiều tài nguyên khác (chẳng hạn CPU, nhớ, thiết bị ngoại vi) sử dụng hiệu Tuy nhiên, khơng cung cấp giao tiếp người dùng với hệ thống máy tính Hệ điều hành đa nhiệm mở rộng logic đa chương CPU thực nhiều công việc cách chuyển đổi qua lại chúng, chuyển đổi xảy thường xuyên để người dùng giao tiếp với chương trình chương trình thực Một hệ thống máy tính cung cấp giao tiếp trực tiếp người dùng hệ thống Người dùng cho thị tới hệ điều hành hay trực tiếp tới chương trình, sử dụng bàn phím hay chuột chờ nhận kết Do đó, thời gian đáp ứng ngắn, thường phạm vi giây Một hệ điều hành đa nhiệm (phân chia thời gian) sử dụng lập lịch CPU đa chương để cung cấp người dùng với phần nhỏ việc tính tốn máy tính thời điểm Mỗi người dùng có chương trình riêng nhớ Một chương trình nạp vào nhớ thực thường gọi tiến trình Khi tiến trình thực hiện, thơng thường thực thời gian ngắn trước kết thúc hay cần thực xuất/nhập Xuất/nhập giao tiếp; nghĩa liệu xuất hiển thị hình cho người dùng liệu nhập từ bàn phím, chuột hay thiết bị khác Vì giao tiếp xuất/nhập chủ yếu chạy tốc độ chậm, khoảng thời gian dài để hồn thành Thí dụ, liệu nhập bị giới hạn tốc độ nhập người dùng; ký tự giây nhanh người dùng, chậm so với máy tính Thay để CPU rỗi người dùng nhập liệu, hệ điều hành nhanh chóng chuyển CPU tới tiến trình khác Hệ điều hành đa nhiệm phức tạp nhiều so với hệ điều hành đa chương Trong hai dạng, nhiều công việc giữ lúc nhớ hệ thống phải có chế quản lý nhớ bảo vệ Để đạt thời gian đáp ứng hợp lý, công việc hốn vị vào nhớ Một phương pháp chung để đạt mục tiêu nhớ ảo, kỹ thuật cho phép việc thực cơng việc khơng hồn tồn nhớ Ưu điểm chế nhớ ảo chương trình lớn nhớ vật lý Ngồi ra, trừu tượng hố nhớ thành mảng lưu trữ lớn đồng nhất, chia nhớ logic thấy người dùng từ nhớ vật lý Sự xếp giúp cho lập trình viên khơng phải quan tâm đến giới hạn lưu trữ nhớ Các hệ đa nhiệm phải cung cấp hệ thống tập tin Hệ thống tập tin định vị tập hợp đĩa; quản lý đĩa phải cung cấp Hệ đa nhiệm cung cấp chế cho việc thực đồng hành, yêu cầu chế lập lịch CPU tinh vi Để đảm bảo thứ tự thực hiện, hệ thống phải cung cấp chế cho việc đồng hoá 10 cách dùng giải thuật phát chu trình Một giải thuật để phát chu trình đồ thị có độ phức tạp O(n2 ) với n số tiến trình hệ thống Hình 2.48 Đồ thị cấp phát tài nguyên để tránh deadlock Nếu khơng có chu trình tồn tại, việc cấp phát tài nguyên để lại hệ thống trạng thái an tồn Nếu chu trình tìm thấy việc cấp phát đặt hệ thống trạng thái khơng an tồn Do đó, tiến trình Pi phải chờ yêu cầu thoả mãn Để minh hoạ giải thuật này, xét đồ thị cấp phát tài nguyên hình 2.48 Giả sử P2 yêu cầu R2 Mặc dù R2 rảnh khơng thể cấp phát tới P2 hoạt động tạo chu trình đồ thị (Hình 2.49) Một chu trình hiển thị hệ thống trạng thái khơng an tồn Nếu P1 yêu cầu R2 P2 yêu cầu R1 deadlock xảy Hình 2.49 Trạng thái khơng an toàn đồ thị cấp phát tài nguyên 3) Giải thuật Banker Giải thuật đồ thị cấp phát tài nguyên áp dụng với hệ thống cấp phát tài nguyên có nhiều thể loại tài nguyên Một giải thuật tránh deadlock áp dụng cho hệ thống mà tài nguyên có nhiểu thể giải thuật Banker Giải thuật mô lại hệ thống ngân hàng, đảm bảo ngân hàng khơng bao 140 cấp phát tiền mặt có nó khơng thể thoả mãn u cầu tất khách hàng Khi tiến trình đưa vào hệ thống, phải khai báo số tối đa thể loại tài nguyên mà cần Số khơng vượt q tổng số tài nguyên hệ thống Khi tiến trình yêu cầu tập tài nguyên, hệ thống phải xác định việc cấp phát tài nguyên dẫn đến hệ thống trạng thái an tồn hay khơng Nếu trạng thái hệ thống an toàn, tài nguyên cấp; trường hợp ngược lại tiến trình phải chờ vài tiến trình giải phóng đủ tài nguyên Nhiều cấu trúc liệu sử dụng để cài đặt giải thuật Banker Những cấu trúc liệu lưu trữ trạng thái hệ thống cấp phát tài nguyên Gọi n số tiến trình hệ thống m số loại tài nguyên hệ thống Chúng ta cần cấu trúc liệu sau: - Available: vector có chiều dài m, thể hiển số lượng tài nguyên rỗi loại tài nguyên Nếu Available[j]= k, tức có k thể loại tài ngun Rj cịn rỗi - Max: ma trận nxm số lượng tài nguyên yêu cầu tối đa tiến trình Nếu Max[i, j] = k, tiến trình Pi yêu cầu nhiều k thể loại tài nguyên Rj - Allocation: ma trận nxm số lượng loại tài nguyên cấp tới tiến trình Nếu Allocation[i, j] = k, tiến trình Pi cấp k thể loại tài nguyên Rj - Need: ma trận nxm yêu cầu tài nguyên lại tiến trình Nếu Need[i, j] = k, tiến trình Pi cịn cần thêm k thể loại tài nguyên Rj để hoàn thành tác vụ Chú ý rằng, Need[ i, j ] = Max[ i, j ] – Allocation [ i, j ] Cấu trúc liệu biến đổi theo thời gian kích thước giá trị Để đơn giản việc trình bày giải thuật Banker, thiết lập vài ký hiệu Gọi X Y vector có chiều dài n Chúng ta nói X ≤ Y X[i] ≤ Y[i] cho tất i = 1, 2, …, n Thí dụ, X = (1, 7, 3, 2) Y = (0, 3, 2, 1) Y ≤ X, Y < X Y ≤ X Y ≠ X 141 Chúng ta coi hàng ma trận Allocation Need vectors tham chiếu tới chúng Allocationi Needi tương ứng Vector Allocationi xác định tài nguyên cấp phát tới tiến trình Pi; vector Needi xác định tài nguyên bổ sung mà tiến trình Pi u cầu để hồn thành nhiệm vụ - Giải thuật an tồn Giải thuật để xác định hệ thống trạng thái an tồn hay khơng mơ tả sau: Bước 1) Gọi Work Finish vector có chiều dài tương ứng m n Khởi tạo Work:=Available Finish[i]:=false với i = 1, 2, …, n Bước 2) Tìm i thỏa mãn: a) Finish[i] = false b) Need i ≤ Work Nếu khơng có i thỏa, chuyển tới bước Bước 3) Work:=Work + Allocation i Finish[i] := true Chuyển bước Bước 4) Nếu Finish[i] = true cho tất i, hệ thống trạng thái an tồn Giải thuật yêu cầu độ phức tạp mxn thao tác để định trạng thái an tồn hay khơng - Giải thuật yêu cầu tài nguyên Cho Requesti vector yêu cầu cho tiến trình Pi Nếu Requesti[j] = k, tiến trình Pi muốn k thể loại tài nguyên Rj Khi yêu cầu tài nguyên thực tiến trình Pi, bước sau thực hiện: Bước 1) Nếu Requesti ≤ Needi, chuyển tới bước Ngược lại, từ chối cấp phát tiến trình có u cầu vượt q u cầu tối đa Bước 2) Nếu Requesti ≤ Available, chuyển tới bước Ngược lại, Pi phải chờ tài ngun khơng sẵn có để cấp phát Bước 3) Giả sử hệ thống cấp phát tài nguyên yêu cầu tới tiến trình Pi cách thay đổi trạng thái sau: Available := Available – Requesti; 142 Allocationi := Allocationi + Requesti; Needi := Needi – Requesti; Nếu kết trạng thái cấp phát tài nguyên an toàn, viêc cấp phát thực tiến trình Pi cấp phát tài ngun mà u cầu Nếu trạng thái khơng an tồn, Pi phải chờ Requesti trạng thái cấp phát tài nguyên cũ phục hồi - Thí dụ minh họa Xét hệ thống với tiến trình từ P0 tới P4, loại tài nguyên A, B, C Loại tài nguyên A có 10 thể hiện, loại tài nguyên B loại tài nguyên C Giả sử thời điểm T0 trạng thái hệ thống sau: Giá trị ma trận Need định nghĩa Max - Allocation là: Chúng ta khẳng định hệ thống trạng thái an toàn Thật vậy, thứ tự thỏa tiêu chuẩn an toàn Giả sử P1 yêu cầu thêm thể loại A hai thể loại C, Request1 = (1, 0, 2) Để định yêu cầu cấp tức hay khơng, trước tiên phải kiểm tra Request1 ≤ Available (nghĩa là, (1, 0, 2)) ≤ (3, 3, 2)) hay khơng Sau đó, giả sử yêu cầu đạt đến trạng thái sau: 143 Chúng ta phải xác định trạng thái an toàn hay không Để thực điều này, thực giải thuật an tồn tìm thứ tự thỏa yêu cầu an toàn Do đó, cấp tài nguyên mà tiến trình P1 yêu cầu Tuy nhiên, thấy rằng, hệ thống trạng thái này, yêu cầu (3, 3, 0) P4 khơng thể thực tài ngun khơng có sẵn để cấp phát Một u cầu cho (0, 2, 0) P0 cấp tài ngun cịn dỗi đủ để cấp phát cấp phát, trạng thái hệ thống không an toàn 2.4.5 Phát bế tắc Nếu hệ thống không thực giải thuật ngăn chặn deadlock hay phịng tránh deadlock trường hợp deadlock xảy Trong trường hợp này, hệ thống phải cung cấp: + Giải thuật xem xét trạng thái hệ thống có bị deadlock hay khơng + Giải thuật phục hồi hệ thống từ trạng thái deadlock Chúng ta xem xét chi tiết hai yêu cầu với hệ thống mà tài nguyên có thể hệ thống mà tài nguyên có nhiều thể 1) Tài nguyên có thể Nếu tất tài ngun có thể phát triển giải thuật phát deadlock sử dụng biến thể đồ thị cấp phát tài nguyên, gọi đồ thị chờ (wait-for) Chúng ta xây dựng đồ thị chờ từ đồ thị cấp phát tài nguyên cách xoá bỏ nút tài nguyên xóa cạnh tương ứng Hình 2.50 a) Đồ thị cấp phát tài nguyên b) Đồ thị chờ tương ứng 144 Chi tiết hơn, cạnh từ Pi tới Pj đồ thị chờ hiển thị tiến trình Pi chờ tài nguyên mà tiến trình Pj chiếm giữ Cạnh Pi → Pj tồn đồ thị chờ đồ thị cấp phát tài nguyên tương ứng chứa hai cạnh Pi → Rq Rq → Pj tài ngun Rq Thí dụ, hình 2.50, trình bày đồ thị cấp phát tài nguyên đồ thị chờ tương ứng Như đề cập trước đó, deadlock tồn hệ thống đồ thị chờ chứa chu trình Để phát deadlock, hệ thống cần trì đồ thị chờ định kỳ gọi giải thuật để tìm kiếm chu trình đồ thị 2) Nhiều thể loại tài nguyên Đồ thị chờ áp dụng hệ thống cấp phát tài nguyên với nhiều thể cho loại tài nguyên Giải thuật phát deadlock mà xem xét sau áp dụng cho hệ thống Giải thuật thực nhiều cấu trúc liệu thay đổi theo thời gian tương tự sử dụng giải thuật Banker - Available: vector có chiều dài m thể số lượng tài ngun cịn rỗi có loại - Allocation: ma trận nxm định nghĩa số lượng thể loại tài nguyên cấp phát - Request: ma trận nxm thể yêu cầu tài nguyên tiến trình Nếu Request[i,j] = k, tiến trình Pi yêu cầu thêm k thể loại tài nguyên Rj Quan hệ ≤ hai vectors định nghĩa tương tự giải thuật Banker Để ký hiệu đơn giản, xem hàng ma trận Allocation Request vector, tham chiếu chúng Allocationi Requesti tương ứng Giải thuật phát deadlock mô tả xem xét thứ tự cấp phát thực tiến trình chưa thực xong cơng việc để hồn thành công việc Bước 1) Gọi Work Finish vector có chiều dài m n tương ứng Khởi tạo Work:=Available với i = 1, 2, …, n Nếu Allocationi ≠ 0, Finish[i]:= false; ngược lại Finish[i]:= true Bước 2) Tìm số i thỏa: a) Finish[i] = false 145 b) Request i ≤ Work Nếu i thỏa, chuyển tới bước Bước 3) Work:=Work + Allocationi Finish[i] := true Chuyển bước Bước 4) Nếu có Finish[i] = false, với ≤ i ≤ n hệ thống trạng thái deadlock Ngồi ra, Finish[i] = false tiến trình Pi bị deadlock Câu hỏi đặt trả lại tài nguyên tiến trình Pi (trong bước 3) sau xác định Requesti ≤ Work (trong bước 2b) Chúng ta biết Pi khơng liên quan deadlock (vì Requesti ≤ Work) Do đó, lạc quan khẳng định Pi không yêu cầu thêm tài nguyên để hồn thành cơng việc nó; tiến trình Pi trả lại tất tài nguyên cấp phát cho hệ thống Nếu giả định khơng đúng, deadlock xảy Deadlock phát thời điểm mà giải thuật phát deadlock nạp Để minh hoạ giải thuật này, xét hệ thống với tiến trình P0 đến P4 loại tài nguyên A, B, C Loại tài nguyên A hiện, loại tài nguyên B loại tài nguyên C Giả sử thời điểm T0, có trạng thái cấp phát tài nguyên sau: Chúng ta khẳng định hệ thống không trạng thái deadlock Thật vậy, thực giải thuật, tìm thứ tự dẫn đến Finish[i] = true cho tất i Bây giả sử tiến trình P2 thực yêu cầu thêm thể loại C Ma trận yêu cầu sau: 146 Chúng ta khẳng định hệ thống bị deadlock Mặc dù địi lại tài ngun giữ tiến trình P0, số lượng tài nguyên sẵn dùng khơng đủ để hồn thành u cầu tiến trình cịn lại Do đó, deadlock tồn tiến trình P1, P2, P3, P4 gây deadlock 3) Sử dụng giải thuật phát deadlock Khi nên thực giải thuật phát deadlock? Câu trả lời phụ thuộc vào hai yếu tố: 1) Mức độ thường xuyên xảy deadlock hệ thống? 2) Bao nhiêu tiến trình bị ảnh hưởng deadlock xảy ra? Nếu deadlock xảy thường xuyên giải thuật phát nên thực thường xuyên Những tài nguyên cấp phát cho tiến trình bị deadlock thu hồi deadlock bị phá vỡ Ngoài ra, số lượng tiến trình liên quan chu trình deadlock tăng lên không kiểm tra deadlock thường xuyên Deadlock xảy số tiến trình yêu cầu tài nguyên không cấp phát Yêu cầu u cầu cuối hồn thành chuỗi tiến trình u cầu Ngồi ra, thực giải thuật phát deadlock yêu cầu cấp phát thực tức Trong trường hợp này, khơng kết luận hệt hống có bị deadlock hay khơng, mà cịn xác định tiến trình gây deadlock Nếu có nhiều loại tài nguyên khác nhau, yêu cầu gây chu trình đồ thị tài nguyên, chu trình hồn thành u cầu “được gây ra” tiến trình xác định Khi thực giải thuật phát deadlock cho u cầu gây chi phí xem xét thời gian tính tốn Có thể thực giải thuật thường xuyên (thí dụ lần hay hiệu suất sử dụng CPU thấp 40%) 147 2.4.6 Khôi phục từ bế tắc Khi giải thuật phát xác định deadlock tồn tại, cần phải phụ hồi hệ thống từ trạng thái deadlock Có thể thực phục hồi cách thông báo tới người điều hành hệ thống bị deadlock để người điều hành giải deadlock thủ công Một phương pháp giải khác để hệ thống tự động phục hồi Có hai cách để phá vỡ deadlock Một cách đơn giản huỷ bỏ hay nhiều tiến trình để phá vỡ việc tồn chu trình đồ thị cấp phát tài nguyên Cách thứ hai lấy lại số tài nguyên từ hay nhiều tiến trình bị deadlock 1) Kết thúc tiến trình Để xóa deadlock cách hủy bỏ tiến trình, dùng hai phương pháp Trong hai phương pháp, hệ thống lấy lại tài nguyên cấp phát tiến trình bị kết thúc - Huỷ bỏ tất tiến trình bị deadlock: phương pháp rõ ràng phá vỡ chu trình gây deadlock, chi phí cao; tiến trình tính tốn thời gian dài, kết tính tốn phần bị huỷ bỏ phải tính lại sau - Hủy bỏ tiến trình chu trình gây deadlock bị xóa: phương pháp chịu chi phí xem xét sau tiến trình bị hủy bỏ, giải thuật phát deadlock phải nạp lên để xác định có tiến trình bị deadlock Hủy bỏ tiến trình khơng dễ Nếu tiến trình giai đoạn cập nhật tập tin, kết thúc để tập tin trạng thái khơng phù hợp Tương tự, tiến trình giai đoạn in liệu máy in, hệ thống phải khởi động lại trạng thái trước in công việc Nếu phương pháp kết thúc phần dùng với tập hợp tiến trình deadlock cho, phải xác định tiến trình (hay tiến trình nào) nên kết thúc để phá vỡ deadlock Việc xác định định sách tương tự vấn đề lập thời biểu CPU Nhiều yếu tố xác định tiến trình chọn để huỷ bỏ như: 1) Độ ưu tiên tiến trình 148 2) Tiến trình tính tốn tiến trình tính tốn trước hồn thành cơng việc 3) Loại số lượng tài nguyên mà tiến trình sử dụng 4) Số lượng tài ngun cần thêm để tiến trình hồn thành cơng việc 5) Bao nhiêu tiến trình cần kết thúc 6) Tiến trình giao tiếp hay dạng bó 2) Lấy lại tài nguyên Để xóa deadlock, đòi số tài nguyên cấp cho tiến trình cấp lại tài nguyên cho tiến trình khác, thực hiẹn chu trình deadlock bị phá vỡ Để đòi lại tài nguyên nhằm giải deadlock, có ba vấn đề cần xác định: - Chọn tiến trình: tài nguyên tiến trình bị địi lại? Trong kết thúc tiến trình, phải xác định thứ tự địi lại để tối thiểu chi phí Các yếu tố chi phí gồm tham số số lượng tài nguyên mà tiến trình deadlock giữ, lượng thời gian tiến trình deadlock sử dụng - Trở lại trạng thái trước deadlock: Nếu địi lại tài ngun từ tiến trình, điều nên thực với tiến trình đó? Rõ ràng, khơng thể tiếp tục việc thực bình thường; bị số tài nguyên yêu cầu Chúng ta phải phục hồi tiến trình tới trạng thái an toàn khởi động lại từ trạng thái gần trước Thơng thường, khó để xác định trạng thái an tồn giải pháp đơn giản phục hồi toàn bộ: hủy tiến trình sau khởi động lại Như vậy, trạng thái deadlock xảy hai hay nhiều tiến trình chờ khơng xác định kiện mà gây tiến trình chờ Về ngun tắc, có ba phương pháp giải deadlock: - Sử dụng số giao thức để ngăn chặn hay tránh deadlock, đảm bảo hệ thống không vào trạng thái deadlock - Cho phép hệ thống vào trạng thái deadlock, phát sau phục hồi 149 - Bỏ qua vấn đề deadlock coi deadlock không xảy hệ thống Giải pháp giải pháp dùng nhiều hệ điều hành có UNIX Trường hợp deadlock xảy bốn điều kiện cần xảy lúc hệ thống: loại trừ lẫn nhau, giữ chờ cấp thêm tài nguyên, khơng địi lại tài ngun, tồn chu trình đồ thị cấp phát tài nguyên Để ngăn chặn deadlock, đảm bảo điều kiện cần khơng xảy Một phương pháp để phịng tránh deadlock mà nghiêm ngặt giải thuật ngăn chặn deadlock có thơng tin trước tiến trình dùng tài ngun Thí dụ, giải thuật Banker cần biết số lượng tối đa lớp tài nguyên yêu cầu tiến trình Sử dụng thơng tin thực giải thuật tránh deadlock Nếu hệ thống không thực giao thức để đảm bảo deadlock khơng xảy cần phát phục hồi deadlock Giải thuật phát deadlock phải thực lên để xác định deadlock xảy hay khơng Nếu deadlock phát hệ thống phải phục hồi cách kết thúc số tiến trình bị deadlock hay địi lại tài nguyên từ số tiến trình bị deadlock Trong hệ thống mà chọn nạn nhân để phục hồi trạng thái trước chủ yếu dựa sở yếu tố chi phí, việc đói tài ngun xảy Kết tiến trình chọn khơng hồn thành tác vụ định Câu hỏi tập chương Nêu khái niệm tiến trình mối quan hệ tiến trình hệ thống Trình bày đặc trưng mối quan hệ Cho chương trình C sau: int main(int argc, char** argv) { printf(“Hello\n"); exit(0); } 150 Hãy chuỗi trạng thái thực chương trình (trong trường hợp tốt nhất) Cho chương trình C sau: int a int main(int argc, char** argv) { printf(“nhap so nguyen a = "); scanf(“%d”, &a); printf(“a = %d", a); exit(0); } Hãy chuỗi trạng thái thực chương trình (trong trường hợp tốt nhất) Nêu ý nghĩa khối điều khiển tiến trình Trình bày nội dung khối điều khiển tiến trình Trình bày lưu đồ chuyển trạng thái tiến trình Vì chuyển trạng thái, hệ điều hành phải lưu trạng thái tiến trình vào khối điều khiển tiến trình, thơng tin lưu Hàng đợi tiến trình tổ chức nào? Vì phải lập lịch cho tiến trình, có lập lịch nào, vị trí chúng đâu? Các lập lịch tiến trình thực kiện xảy ra? Nêu phân tích tiêu chuẩn lập lịch CPU 10 CPU burst, I/O burst gì, lấy ví dụ minh hoạ 11 Nêu thuật tốn lập lịch - FCFS (First Come First Served) - SJF (Shortest Job First) với trường hợp + Độc quyền CPU (không trưng dụng) + Không độc quyền CPU (trưng dụng) - Round-Robin (RR) Lấy ví dụ minh hoạ 151 12 Cho tiến trình P1, P2, P3, P4, P5 nằm hàng đợi Ready List: STT Tiến trình Thời điểm vào Thời gian xử lý P1 P2 P3 P4 P5 Mô tả hoạt động, tính thời gian chờ đợi trung bình thuật toán lập lịch: - FCFS (First Come First Served) - SJF (Shortest Job First) với trường hợp + Độc quyền CPU (không trưng dụng) + Không độc quyền CPU (trưng dụng) - Round-Robin (RR), với Quantum = 13 Lập lịch nhiều hàng đợi tổ chức nào, lấy ví dụ minh hoạ 14 Đồng hố tiến trình gì? Vì phải đồng hố tiến trình? 15 Trình bày khái niệm tài nguyên găng đoạn găng 16 Trình bày cấu trúc chung để tiến trình thực đoạn găng 17 Nêu điều kiện để tiến trình điều độ qua đoạn găng 18 Trình bày giải thuật 1, giải thuật 2, giải thuật Peterson để điều độ tiến trình qua đoạn găng 19 Trình bày giải thuật Semaphone để điều độ tiến trình qua đoạn găng, phân tích rõ tốn tử wait() signal() 20 Trình bày hoạt động Semaphone nhị phân 21 Nêu khái niệm bế tắc điều kiện để xảy bế tắc 22 Trình bày đồ thị cấp phát tài nguyên, lấy ví dụ minh hoạ 23 Trong đồ đồ thị cấp phát tài nguyên, chu trình gây bế tắc, chu trình khơng gây bế tắc, lấy ví dụ minh họa 24 Trình bày nguyên tắc chung phương pháp xử lý bế tắc 25 Để ngăn chặn bế tắc cần thực nào? 26 Nêu khái niệm dãy an toàn, trạng thái an toàn, trạng thái khơng an tồn, lấy ví dụ minh hoạ 152 27 Trình bày thuật tốn đồ thị cấp phát tài ngun, lấy ví dụ minh hoạ 28 Trình bày thuật tốn benker, lấy ví dụ minh hoạ 29 Trình bày thuật tốn trạng thái an tồn, lấy ví dụ minh hoạ 30 Trình bày thuật tốn u cầu tài ngun, lấy ví dụ minh hoạ 31 Xét hệ thống với tiến trình P0, P1, P2, P3, P4, loại tài nguyên A, B, C, tiến trình cấp phát tài nguyên bảng sau: Allocation Max Available A B C A B C P0 3 P1 4 P2 5 P3 3 P4 2 2 A B C b) Xác định ma trận Need c) Xác định xem trạng thái hệ thống có an tồn hay khơng, có rõ thứ tự an toàn 32 Xét hệ thống với tiến trình P0, P1, P2, P3, P4, loại tài nguyên A, B, C, D tiến trình cấp phát tài nguyên bảng sau: Allocation Max Available A B C D A B C D P0 2 4 P1 3 4 P2 1 4 P3 3 P4 2 2 A B a) Xác định ma trận Need b) Giả sử tiến trình yêu cầu thêm tài nguyên sau Request P0 A B C D 0 153 C D P1 0 P2 1 P3 1 P4 0 Kiểm tra xem phân bổ tài nguyên cho tiến trình khơng? 33 Trình bày cách phát bế tắc, lấy ví dụ minh hoạ 34 Cho đồ thị cấp phát tài nguyên hình vẽ R1 R2 P1 P0 P2 R4 P3 R3 P5 R6 P4 R5 a) Xác định đồ thị chờ tương ứng b) Từ đồ thị chờ, kết luận xem hệ thống có bị deadlock hay không c) Nếu hệ thống bị deadlock, bỏ số cạnh đồ thị cấp phát tài nguyên cho hệ thống hết deadlock số cạnh bỏ Nếu hệ thống khơng bị deadlock, thêm số cạnh vào đồ thị cấp phát tài nguyên cho hệ thống bị deadlock số cạnh thêm vào 35 Trình bày cách khơi phục hệ thống có bế tắc 154 ... 15 0 Chương 3: QUẢN LÝ LƯU TRỮ 15 5 3 .1 Quản lý nhớ 15 5 3 .1. 1 Cơ sở 15 5 3 .1. 2 Bộ nhớ vật lý nhớ logic 16 0 3 .1. 3 Hoán vị (Swap) 16 1 3 .1. 4 Cấp... thiết kế hệ điều hành 15 1. 2 .1 Các thành phần hệ thống Chỉ tạo hệ thống lớn phức tạp hệ điều hành phân chia hệ điều hành thành phần nhỏ có độ phức tạp Mỗi phần nên thành phần mô tả rõ ràng hệ thống,... tính phần cứng máy tính Hệ điều hành thực nhiệm vụ đa dạng, vài hệ điều hành thiết kế để thực nhiệm vụ chuyên biệt số hệ điều hành khác thiết kế đa 1. 1 .1 Hệ điều hành gì? Một hệ điều hành thành phần