Giáo trình Hệ điều hành - Chương 4: Quản lí tiến trình, đồng bộ hóa tiến trình và tắc nghẽn - Trần Công Án
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Hệ điều hành - Chương 4: Quản lí tiến trình, đồng bộ hóa tiến trình và tắc nghẽn - Trần Công Án", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- giao_trinh_he_dieu_hanh_chuong_4_quan_li_tien_trinh_dong_bo.pdf
Nội dung text: Giáo trình Hệ điều hành - Chương 4: Quản lí tiến trình, đồng bộ hóa tiến trình và tắc nghẽn - Trần Công Án
- Hệ Điều Hành Chương 4. Quản Lý Tiến Trình, Đồng bộ hóa Tiến trình & Tắc nghẽn Giảng viên TS. Trần Công Án tcan@cit.ctu.edu.vn Khoa Công Nghệ Thông Tin & Truyền Thông Đại học Cần Thơ 2018
- [HĐH] Ch4. Quản lý tiến trình Mục Tiêu Giới thiệu các khái niệm về Tiến trình và những thao tác cơ bản trong Quản lý Tiến trình như tạo, định thời và kết thúc tiến trình. Các phương thức Giao tiếp liên tiến trình và vấn đề Tắc nghẽn của tiến trình cũng sẽ được trình bày. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 2
- [HĐH] Ch4. Quản lý tiến trình Nội Dung Tổng quan về tiến trình Giao tiếp liên tiến trình Định thời tiến trình Các giải thuật định thời Đồng bộ hóa tiến trình Tắc nghẽn (Deadlock) TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 3
- [HĐH] Ch4. Quản lý tiến trình Tổng quan về tiến trình Tổng quan về tiến trình TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 4
- [HĐH] Ch4. Quản lý tiến trình Tổng quan về tiến trình Khái niệm Tiến trình Khái Niệm Tiến Trình I Tiến trình là thể hiện (instance) của một chương trình máy tính trong bộ nhớ, đang thực thi hoặc chờ thực thi. I Mỗi tiến trình thường được gán 1 số định danh tiến trình (process identifier, pid), dùng để định danh các tiến trình. I Một tiến trình bao gồm: I Mã lệnh chương trình (program code) I Bộ đếm chương trình (program counter) và các thanh ghi của CPU I Ngăn xếp (stack) I Phần dữ liệu (data section) I Có thể gồm phần bộ nhớ cấp phát động khi tiến trình thực thi (heap) TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 5
- [HĐH] Ch4. Quản lý tiến trình Tổng quan về tiến trình Khái niệm Tiến trình Chương Trình & Tiến Trình max stack I Chương trình là một thực thể bị động, được lưu trữ trên đĩa. I Tiến trình là một thực thể chủ động, lưu trú trên bộ nhớ chính. I Khi một chương trình được kích hoạt (nhấp chuột, CLI, . . . ), một thể hiện của chương trình heap sẽ được nạp lên bộ nhớ, tạo ra 1 tiến trình. data I Một chương trình có thể có vài tiến trình trong bộ nhớ. text 0 TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 6
- [HĐH] Ch4. Quản lý tiến trình Tổng quan về tiến trình Trạng thái của Tiến trình (Process state) Trạng Thái Của Tiến Trình (Process State) I Một tiến trình có thể có một trong các trạng thái sau: I new: tiến trình đang được khởi tạo. I running: các chỉ thị của tiến trình đang được thực thi. I waiting: tiến trình đang chờ đợi một sự kiện nào đó xảy ra (hoàn thành I/O, tín hiệu từ tiến trình khác, . . . ). I ready: tiến trình sẵn sàng để thực thi (đang đợi để được sử dụng CPU). I terminated: tiến trình đã kết thúc. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 7
- [HĐH] Ch4. Quản lý tiến trình Tổng quan về tiến trình Trạng thái của Tiến trình (Process state) Sơ Đồ Chuyển Trạng Thái Của Tiến Trình new admitted interrupt exit terminated ready running scheduler dispatch I/O or event completion I/O or event wait waiting TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 8
- [HĐH] Ch4. Quản lý tiến trình Tổng quan về tiến trình Khối điều khiển Tiến trình (Process Control Block – PCB) Khối Điều Khiển Tiến Trình (PCB) I Chứa thông tin của tiến trình trong Hệ điều hành: process state process number I Trạng thái của quá trình: ready, running, . . . program counter I Bộ đếm chương trình: chỉ thị kế tiếp sẽ được thực thi I Các thanh ghi: phụ thuộc vào k/trúc máy tính registers I Thông tin về định thời sử dụng CPU memory limits I Thông tin về quản lý bộ nhớ list of open files I Thông tin về chi phí: t/gian sử dụng CPU, pid, . . . • • • I Thông tin về trạng thái nhập/xuất: các thiết bị đang được cấp phát, danh sách tập tin đang mở, . . . TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 9
- [HĐH] Ch4. Quản lý tiến trình Tổng quan về tiến trình Chuyển CPU giữa các Tiến trình Chuyển CPU Giữa Các Tiến Trình I PCB là nơi lưu giữ process P0 operating system process P1 trạng thái của tiến interrupt or system call trình executing save state into PCB0 Trạng thái của tiến I • idle • trình phải được lưu trữ • vào PCB khi một reload state from PCB1 interrupt xuất hiện, nhằm cho phép tiến idle interrupt or system call executing trình có thể tiếp tục chính xác về sau. save state into PCB1 • I Tác vụ chuyển CPU • idle còn được gọi là chuyển • reload state from PCB0 ngữ cảnh (context executing switch). TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 10
- [HĐH] Ch4. Quản lý tiến trình Tổng quan về tiến trình Các thao tác trên Tiến trình Tạo Tiến Trình I Một tiến trình (cha) có thể tạo những tiến trình khác (con) I Quan hệ “cha–con” của các tiến trình tạo nên cây tiến trình. init! pid = 1! login! kthreadd! sshd! pid = 2234! pid = 2! pid = 2244! bash! khelper! khelper! sshd! pid = 8111! pid = 6! pid = 6! pid = 2244! . . . . . . . . . . . . TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 11
- [HĐH] Ch4. Quản lý tiến trình Tổng quan về tiến trình Các thao tác trên Tiến trình Kết Thúc Tiến Trình I T/trình thực thi câu lệnh cuối cùng và yêu cầu HĐH xóa nó (exit()) I Truyền dữ liệu từ tiến trình con lên tiến trình cha (wait()). I Thu hồi tài nguyên đã được cấp phát cho tiến trình. I Tiến trình con kết thúc trước khi t/trình cha gọi wait() zombie ⇒ I Tiến trình con còn thực thi khi t/trình cha đã kết thúc orphan ⇒ I Tiến trình cha có thể kết thúc tiến trình con (abort()): I Tiến trình con đã có vượt quá số tài nguyên được cấp. I Công việc giao cho tiến trình con làm nay không còn cần thiết nữa. I Tiến trình cha đang thoát: một vài HĐH không cho phép orphan. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 12
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Giao tiếp liên tiến trình TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 13
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Hợp Tác Tiến Trình (Cooperating Process) I Tiến trình độc lập: không thể ảnh hưởng hoặc không bị ảnh hưởng bởi sự thực thi của quá trình khác. I Hợp tác tiến trình: có thể ảnh hưởng hoặc bị ảnh hưởng bởi sự thực thi của quá trình khác. I Thuận lợi của sự hợp tác quá trình: I Chia sẻ thông tin I Gia tăng tốc độ tính toán (nếu máy có nhiều CPU) I Module hóa I Tiện dụng TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 14
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Giao Tiếp Liên Tiến Trình I Các tiến trình muốn trao đổi dữ liệu với nhau cần sử dụng cơ chế giao tiếp liên tiến trình (interprocess communication, IPC): 124 Chapter 3 Processes bộ nhớ chia sẻ truyền thông điệp process A process A process A shared memory process B process B process B message queue message queue m0 m1 m2 m3 mn m0 m1 m2 m3 mn kernel kernel kernel (a) (b) Figure 3.12 Communications models. (a) Message passing. (b) Shared memory. memory regions. Once shared memoryTS. Trần is established, Công Án all accesses are treated[HĐH] Ch4. Quản lý tiến trình 15 as routine memory accesses, and no assistance from the kernel is required. Recent research on systems with several processing cores indicates that message passing provides better performance than shared memory on such systems. Shared memory suffers from cache coherency issues, which arise because shared data migrate among the several caches. As the number of processing cores on systems increases, it is possible that we will see message passing as the preferred mechanism for IPC. In the remainder of this section, we explore shared-memory and message- passing systems in more detail. 3.4.1 Shared-Memory Systems Interprocess communication using shared memory requires communicating processes to establish a region of shared memory. Typically, a shared-memory region resides in the address space of the process creating the shared-memory segment. Other processes that wish to communicate using this shared-memory segment must attach it to their address space. Recall that, normally, the operating system tries to prevent one process from accessing another process’s memory. Shared memory requires that two or more processes agree to remove this restriction. They can then exchange information by reading and writing data in the shared areas. The form of the data and the location are determined by these processes and are not under the operating system’s control. The processes are also responsible for ensuring that they are not writing to the same location simultaneously. To illustrate the concept of cooperating processes, let’s consider the producer–consumer problem, which is a common paradigm for cooperating processes. A producer process produces information that is consumed by a consumer process. For example, a compiler may produce assembly code that is consumed by an assembler. The assembler, in turn, may produce object modules that are consumed by the loader. The producer–consumer problem
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Bộ nhớ chia sẻ (Shared-memory) Bộ Nhớ Chia Sẻ (Shared-Memory) I Một vùng đệm (buffer) được dùng để chia sẻ dữ liệu giữa các t/trình: I kích thước không giới hạn (unbounded buffer): tiến trình đọc có thể chờ, tiến trình ghi không bao giờ chờ. I kích thước có giới hạn (bounded buffer): cả tiến trình đọc và ghi có thể chờ. I Ví dụ kinh điển “Nhà sản xuất – Người tiêu thụ”: tiến trình Nhà sản xuất sinh dữ liệu, được sử dụng bởi tiến trình Người tiêu thụ. I Tạo 1 vùng nhớ đệm (buffer) chung. I Tiến trình Nhà sản xuất ghi dữ liệu lên buffer. I Tiến trình Người tiêu thụ lấy dữ liệu từ buffer. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 16
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Bộ nhớ chia sẻ (Shared-memory) Tạo Vùng Đệm (Buffering) #define BUFFER_SIZE 10 ! ! typedef struct {! . . . ! } item;! ! item buffer[BUFFER_SIZE]; ! ! int in_item = 0; ! int out_item = 0; TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 17
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Bộ nhớ chia sẻ (Shared-memory) Nhà Sản Xuất (Producer) item next_produced; ! ! while (true) { ! /* produce an item in next produced */! ! while (((in_item + 1) % BUFFER_SIZE) == out_item) ! ; /* do nothing */! ! buffer[in_item] = next_produced; !! in_item = (in_item + 1) % BUFFER_SIZE;! counter++;! } TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 18
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Bộ nhớ chia sẻ (Shared-memory) Người Tiêu Dùng (Consumer) item next_consumed; while(true){ while(in_item == out_item) ; /* do nothing */ next_consumed = buffer[out_item]; out_item = (out_item + 1) % BUFFER_SIZE; /* consume the item in next consumed */ } TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 19
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Truyền thông điệp (Message passing) Truyền Thông Điệp (Message Passing) I Giao tiếp giữa các tiến trình không cần dùng bộ nhớ chia sẻ hữu ích trong môi trường phân tán, giao tiếp qua mạng. ⇒ I Cần hai thao tác: send(msg) và receive(msg). I Tiến trình P và Q muốn giao tiếp với nhau: I Tạo một nối kết giao tiếp (communication link) I Trao đổi thông điệp thông qua send/receive I Phương thức cài đặt nối kết giao tiếp (mức luận lý): I Giao tiếp trực tiếp hay gián tiếp I Đồng bộ hay bất đồng bộ I Kích thước thông điệp cố định hay biến đổi TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 20
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Truyền thông điệp (Message passing) Giao Tiếp Trực Tiếp (Direct Communication) I Các quá trình phải được đặt tên rõ ràng: I Send(P, msg): gởi thông điệp tới quá trình P. I Receive(Q, msg): nhận thông điệp từ quá trình Q. I Các thuộc tính của nối kết giao tiếp: I Các nối kết được thiết lập tự động. I Một nối kết kết hợp với chính xác một cặp quá trình. I Giữa mỗi cặp quá trình tồn tại chính xác một nối kết. I Nối kết có thể một hướng, nhưng thường là hai hướng. I Giao tiếp bất đối xứng: Send(P, msg), Receive(id, msg). TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 21
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Truyền thông điệp (Message passing) Giao Tiếp Gián Tiếp (Indirect Communication) I Các thông điệp được gửi và nhận thông qua mailbox hay port. I Mỗi mailbox có một định danh (id) duy nhất. I Các quá trình chỉ có thể giao tiếp nếu chúng dùng chung mailbox. I Send/Receive(A, msg): gởi/nhận thông điệp tới/từ hộp thư A. I Các thuộc tính của nối kết gián tiếp: I Nối kết chỉ được thiết lập nếu các quá trình chia sẻ một hộp thư chung. I Một nối kết có thể kết hợp với nhiều quá trình. I Mỗi cặp quá trình có thể dùng chung nhiều nối kết giao tiếp. I Nối kết có thể một hướng hay hai hướng. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 22
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Truyền thông điệp (Message passing) Các Tác Vụ Trong Giao Tiếp Gián Tiếp I Các tác vụ cơ bản: tạo mailbox mới, gửi và nhận thông điệp qua mailbox, và xóa mailbox. I Chia sẻ mailbox: I Các tiến trình có thể chia sẻ cùng 1 mailbox. I Vấn đề: nếu 1 tiến trình gửi thì tiến trình nào sẽ nhận? I Giải pháp cho việc chia sẻ mailbox: I Một liên kết chỉ tương ứng với 2 tiến trình. I Chỉ cho phép 1 tiến trình thực hiện thao tác nhận tại 1 thời điểm. I HĐH chỉ định tiến trình nhận (1 tiến trình), và thông báo cho tiến trình gửi biết người nhận. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 23
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Truyền thông điệp (Message passing) Đồng Bộ Hóa (Synchronisation) I Truyền thông điệp có thể chặn (blocking) hay không chặn (non-blocking). I Blocking được xem là đồng bộ (synchronous): I Blocking send: tiến trình gửi chờ cho đến khi thông điệp được nhận. I Blocking receive : tiến trình nhận chờ cho đến khi thông điệp sẵn sàng . I Non-blocking được xem là bất đồng bộ (asynchronous): I Non-blocking send: gửi thông điệp và tiếp tục thực hiện công việc khác. I Non-blocking receive: nhận một thông điệp hay rỗng. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 24
- [HĐH] Ch4. Quản lý tiến trình Giao tiếp liên tiến trình Truyền thông điệp (Message passing) Tạo Vùng Đệm (Buffering) I Vùng đệm dùng để chứa các thông điệp của 1 nối kết. I Ba cách cài đặt: I Sức chứa là0 (zero capacity): tiến trình gửi bị chặn đến khi thông điệp được nhận (no buffering!?). I Sức chứa giới hạn (bounded capacity): kích thước vùng đệm giới hạn n thông điệp. Tiến trình gửi bị chặn khi vùng đệm bị đầy. I Sức chứa không giới hạn (unbounded capacity): kích thước không giới hạn. Tiến trình gửi không bao giờ bị chặn. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 25
- [HĐH] Ch4. Quản lý tiến trình Định thời tiến trình Định thời tiến trình TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 26
- [HĐH] Ch4. Quản lý tiến trình Định thời tiến trình I Định thời biểu CPU là một chức năng cơ bản và quan trọng của các HĐH đa chương. I Chức năng: phân bổ thời gian/thời điểm sử dụng CPU cho các tiến trình trong hệ thống, nhằm: I tăng hiệu năng (CPU utilisation) sử dụng CPU I giảm thời gian đáp ứng (response time) của hệ thống I Ý tưởng cơ bản: phân bố thời gian rãnh rỗi của CPU (khi chờ đợi tiến trình đang thực thi thực hiện các thao tác nhập xuất) cho các tiến trình khác trong hệ thống. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 27
- [HĐH] Ch4. Quản lý tiến trình Định thời tiến trình Chu Kỳ CPU–I/O (CPU–I/O Burst) I Chu kỳ CPU–I/O: I Sự thực thi của tiến trình bao gồm nhiều chu kỳ CPU–I/O. I Một chu kỳ CPU–I/O bao gồm chu kỳ thực thi CPU (CPU burst) và chu kỳ chờ đợi vào/ra (I/O burst). I Sự phân bổ sử dụng CPU: I Chương trình hướng nhập xuất (I/O-bound) thường có nhiều chu kỳ CPU ngắn. I Chương trình hướng xử lý (CPU-bound) thường có nhiều chu kỳ CPU dài. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 28
- [HĐH] Ch4. Quản lý tiến trình Định thời tiến trình Ví Dụ Về Chu Kỳ CPU–I/O ••• load store add store CPU burst read from file wait for I/O I/O burst store increment index CPU burst write to file wait for I/O I/O burst load store add store CPU burst read from file wait for I/O I/O burst ••• TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 29
- [HĐH] Ch4. Quản lý tiến trình Định thời tiến trình Bộ Định Thời CPU (CPU Scheduler) I Còn gọi là bộ định thời ngắn kỳ, chọn một trong các tiến trình trong hàng đợi sẵn sàng và cấp phát CPU cho nó thực thi. I Quyết định định thời xảy ra khi một tiến trình: 1. chuyển từ trạng thái đang chạy sang trạng thái chờ đợi 2. chuyển từ trạng thái đang chạy sang trạng thái sẵn sàng 3. chuyển từ trạng thái chờ đợi sang trạng thái sẵn sàng 4. kết thúc TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 30
- [HĐH] Ch4. Quản lý tiến trình Định thời tiến trình Định Thời Trưng Dụng & Không Trưng Dụng I Định thời không trưng dụng (nonpreemptive scheduling): I Tiến trình được phân CPU có quyền sử dụng CPU đến khi sử dụng xong (k/thúc hoặc chuyển sang trạng thái chờ, như trường hợp 1 và 4). I Định thời trưng dụng (preemptive scheduling): I Bộ định thời có thể thu hồi CPU của tiến trình bất kỳ lúc nào để phân cho tiến trình khác (trường hợp 2 và 3). I Phức tạp hơn định thời không trưng dụng vì nó phải giải quyết: I sự cạnh tranh dữ liệu giữa các tiến trình. I sự trưng dụng khi tiến trình đang thực thi trong chế độ kernel. I dàn xếp giữa sự trưng dụng và xử lý các ngắt của hệ thống. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 31
- [HĐH] Ch4. Quản lý tiến trình Định thời tiến trình Bộ Điều Phối (Dispatcher) I Có nhiệm vụ thực thi việc trao quyền sử dụng CPU cho tiến trình được cấp phát CPU bởi bộ định thời. I Bao gồm các tác vụ: I Chuyển ngữ cảnh I Chuyển sang chế độ người dùng I Nhảy tới vị trí thích hợp trong chương trình người dùng để khởi động lại chương trình đó. I Độ trễ điều phối (dispatcher latency): thời gian dispatcher cần để ngưng một tiến trình và khởi động một tiến trình khác. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 32
- [HĐH] Ch4. Quản lý tiến trình Định thời tiến trình Tiêu chí cho việc định thời Tiêu Chí Cho Việc Định Thời 1. Hiệu suất sử dụng CPU: tỷ lệ giữa thời gian CPU được sử dụng trên tổng thời gian hoạt động của hệ thống. 2. Thời gian đáp ứng (response time): lượng thời gian từ lúc một yêu cầu được đệ trình cho đến khi bắt đầu được đáp ứng. 3. Thời gian chờ đợi (waiting time): tổng thời gian 1 tiến trình nằm trong hàng đợi sẵn sàng (ready queue). 4. Thời gian xoay vòng (turnaround time): tổng thời gian để thực thi một t/trình, bao gồm các khoảng t/gian: thực thi, chờ I/O, chờ trong ready queue (= t/điểm kết thúc – t/điểm bắt đầu vào ready queue). 5. Thông lượng (throughput): số lượng tiến trình hoàn thành trên một đơn vị thời gian. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 33
- [HĐH] Ch4. Quản lý tiến trình Định thời tiến trình Tiêu chí cho việc định thời Tối Ưu Hóa Các Tiêu Chí Các giải thuật định thời được đánh giá thông qua khả năng tối ưu hóa các tiêu chí định thời của nó: 1. Hiệu suất sử dụng CPU: càng lớn càng tốt 2. Thông lượng: càng lớn càng tốt 3. Thời gian xoay vòng: càng nhỏ càng tốt 4. Thời gian chờ đợi: càng nhỏ càng tốt 5. Thời gian đáp ứng: càng nhỏ càng tốt TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 34
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Các Giải Thuật Định Thời 1. First-come, first-served (FCFS): đến trước được phục vụ trước. 2. Shortest-job-rirst (SJF): công việc ngắn nhất trước. 3. Priority: dựa trên độ ưu tiên. 4. Round-robin (RR): xoay vòng. 5. Multilevel scheduling: hàng đợi đa cấp. 6. Multilevel feedback-queue scheduling: hàng đợi phản hồi đa cấp. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 35
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời First-come, first-served First-Come, First Served (FCFS) I Là giải thuật định thời đơn giản nhất, dựa trên nguyên tắc đến trước, được phục vụ trước. I Cài đặt: phương pháp đơn giản nhất là dùng hàng đợi FIFO. I Ưu điểm: cài đặt dễ dàng, đơn giản và dễ hiểu. I Nhược điểm: I Thời gian chờ đợi trung bình thường là dài. I Không thích hợp cho hệ thống phân chia thời gian do đây là giải thuật định thời không trưng dụng (nonpreemptive). TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 36
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời First-come, first-served FCFS – Ví Dụ 1 I Cho các tiến trình với thời gian thực thi và thứ tự xuất hiện như sau: Process TG sử dụng CPU Thứ tự xuất hiện P1 24 1 P2 3 2 P3 3 3 (g/s tgian xuất hiện là t = 0) I Biểu đồ Gantt cho lịch biểu: P1 P2 P3 0 24 27 30 I Thời gian chờ đợi: P1 = 0; P2 = 24; P3 = 27 I Thời gian chờ đợi trung bình: (0 + 24 + 27)/3 = 17 TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 37
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời First-come, first-served FCFS – Ví Dụ 2 I Giả sử các tiến trình trong ví dụ 1 xuất hiện theo thứ tự P2, P3, P1; biểu đồ Gantt của lịch biểu là: P2 P3 P1 0 3 6 30 I Thời gian chờ đợi: P1 = 6, P2 = 0, P3 = 3 I Thời gian chờ đợi trung bình: (6 + 0 + 3)/3 = 3 tốt hơn nhiều so với ví dụ 1 (17) ⇒ I Tình trạng thời gian chờ đợi dài do tiến trình ngắn nằm sau tiến trình dài được gọi là “hiệu ứng nối đuôi” (convoy effect). TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 38
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Shortest-job-first Shortest-Job-First (SJF) I Ý tưởng cơ bản: phân phối CPU cho tiến trình nào có thời gian thực thi CPU (CPU burst) kế tiếp nhỏ nhất (shortest-next-CPU-burst alg.) I Mỗi tiến trình sẽ được gán 1 độ dài thời gian của lần sử dụng CPU kế tiếp (dự đoán). I Có 2 cách tiếp cận cho việc phân bổ CPU: I Không trưng dụng: tiến trình được giao CPU sẽ chiếm giữ CPU đến khi nó thực thi xong CPU burst. I Trưng dụng: nếu 1 tiến trình mới đến có CPU burst ngắn hơn thời gian thực thi còn lại của tiến trình đang thực thi, CPU sẽ được lấy lại để giao cho tiến trình mới (shortest-remaining-time-first algorithm, SRTF) I SJF cho thời gian chờ đợi trung bình tối ưu (ngắn nhất). TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 39
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Shortest-job-first SJF Không Trưng Dụng – Ví Dụ Process TG sử dụng CPU kế ếp Thời gian xuất hiện P1 7 0 P2 4 2 P3 1 4 P4 4 5 I Biểu đồ Gantt cho lịch biểu: P1 P3 P2 P4 0 7 8 12 16 I Thời gian chờ đợi trung bình: (0 + 6 + 3 + 7)/4 = 4 TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 40
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Shortest-job-first SJF Trưng Dụng – Ví Dụ Process TG sử dụng CPU kế ếp Thời gian xuất hiện P1 7 0 P2 4 2 P3 1 4 P4 4 5 I Biểu đồ Gantt cho lịch biểu: P1 P2 P3 P2 P4 P1 0 2 4 5 7 11 16 I Thời gian chờ đợi trung bình: (9 + 1 + 0 + 2)/4 = 3 TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 41
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Shortest-job-first Thời Gian Sử Dụng CPU Lần Kế Tiếp I Chỉ có thể ước lượng, dựa vào lịch sử của những lần sử dụng CPU trước đó. I Thời gian sử dụng CPU kế tiếp (công thức trung bình mũ): Tn+1 = αtn + (1 α)Tn − I Tn+1: ước lượng thời gian sử dụng CPU lần n + 1 I tn: thời gian sử dụng CPU thực tế lần thứ n I α [0, 1]: hệ số trung bình mũ, dùng để điều chỉnh trọng số cho các giá trị∈ lịch sử (thông thường được gán giá trị 1/2) TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 42
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Shortest-job-first Thời Gian Sử Dụng CPU Lần Kế Tiếp I Ví dụ: ước lượng thời gian sử dụng CPU lần kế tiếp, với α = 1/2, T0 = 10 12 τ i 10 8 ti 6 4 2 time CPU burst (ti) 6464131313 τ "guess" ( i) 108 66591112 TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 43
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Shortest-job-first Tùy Biến Hệ Số Trung Bình Mũ I α = 0 Tn+1 = Tn = = T0 ⇒ không tính đến lịch sử: tình trạng/sự thực thi “hiện thời” được coi như nhất⇒ thời, không có ý nghĩa. I α = 1 Tn+1 = tn ⇒ chỉ tính đến thời gian sử dụng CPU thực tế gần nhất. ⇒ I α = 1/2: các giá trị lịch sử thực tế và dự đoán có trọng số tương đương. I Nếu mở rộng công thức, ta có: j n+1 Tn+1 = αtn + (1 α)αtn−1 + + (1 α) αtn−j + (1 α) T0 − − − I Vì α và (1 α) 1, trọng số của giá trị lịch sử càng xa thì càng nhỏ. − ≤ TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 44
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Giải thuật định thời có ưu tiên Giải Thuật Định Thời Có Ưu Tiên (Priority) I Ý tưởng: I Mỗi tiến trình sẽ được gán một chỉ số ưu tiên (priority number, int) . I CPU sẽ được cấp phát cho tiến trình có chỉ số ưu tiên cao nhất, thông thường là nhỏ nhất. I SJF là trường hợp đặc biệt của giải thuật này, trong đó thời gian thực thi CPU kế tiếp đóng vai trò là chỉ số ưu tiên. I Có thể cài đặt theo phương pháp trưng dụng hay không trưng dụng. I Có thể xảy ra tình trạng “chết đói” (starvation): các tiến trình độ ưu tiên thấp không bao giờ được thực thi. Giải pháp: dùng sự “lão hóa” (aging) – các tiến trình đang chờ đợi trong⇒ hệ thống sẽ được tăng dần độ ưu tiên theo thời gian chờ đợi. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 45
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Giải thuật định thời có ưu tiên Ví Dụ Process Thời điểm xuất hiện Độ ưu ên Thời gian xử lý P1 0 3 24 P2 1 1 3 P3 2 2 3 I Không trưng dụng: T/gian chờ đợi trung bình = (0 + 23 + 25)/3 = 16 Biểu đồ Gantt: P1 P2 P3 0 24 27 30 I Trưng dụng: T/gian chờ đợi trung bình = (6 + 0 + 2)/3 = 2.7 Biểu đồ Gantt: P1 P2 P3 P1 0 1 4 7 30 TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 46
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Giải thuật định thời luân phiên (Round-Robin, RR) Giải Thuật Định Thời Luân Phiên I Bộ điều phối cấp phát xoay vòng cho mỗi tiến trình trong hàng đợi sẵn sàng một đơn vị thời gian, gọi là định mức thời gian (time quantum, thường khoảng 10–100ms). I Sau khi sử dụng hết t/gian được cấp, CPU bị thu hồi để cấp cho tiến trình khác, tiến trình bị thu hồi CPU sẽ chuyển vào hàng đợi sẵn sàng. I Bộ đếm thời gian (timer) sẽ phát ra các ngắt sau mỗi định mức thời gian để xoay vòng cấp phát CPU. I Nếu hàng đợi sẵn sàng có n tiến trình, định mức thời gian là q: I mỗi tiến trình sẽ nhận được 1/n tổng thời gian CPU, trong đó thời gian mỗi lần sử dụng tối đa là q I không có tiến trình nào chờ đợi quá lượng thời gian (n 1) q − × TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 47
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Giải thuật định thời luân phiên (Round-Robin, RR) Các Tùy Biến & Hiệu Năng I q lớn: RR trở thành giải thuật FCFS (FIFO) I q nhỏ: q phải đủ lớn so với thời gian chuyển ngữ cảnh, nếu không, hao phí chuyển ngữ cảnh sẽ rất cao. process time 10 quantum context switches 12 0 010 61 016 0 19 012345678910 TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 48
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Giải thuật định thời luân phiên (Round-Robin, RR) Các Tùy Biến & Hiệu Năng process time 12.5 P1 6 12.0 P2 3 P3 1 11.5 P4 7 11.0 10.5 10.0 9.5 average turnaround time 9.0 1 234567 time quantum TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 49
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Giải thuật định thời luân phiên (Round-Robin, RR) Ví Dụ Process Thời gian sử dụng CPU P1 53 P2 17 P3 68 P4 24 I Với time quantum = 20 I Biểu đồ Gantt: P1 P2 P3 P4 P1 P3 P4 P1 P3 P3 0 20 37 57 77 97 117 121 134 154 162 I Thông thường, RR có thời gian chờ đợi trung bình lớn hơn SJF, nhưng đảm bảo thời gian đáp ứng tốt hơn. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 50
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Giải thuật hàng đợi đa cấp (Multilevel Queue) Giải Thuật Hàng Đợi Đa Cấp I Chia hàng đợi s/sàng ra thành nhiều hàng đợi với độ ưu tiên khác nhau, ví dụ: I foreground: tương tác, cần ưu tiên cao hơn. I background: bó, cần ít ưu tiên hơn. I Các tiến trình sẽ được phân phối vào các hàng đợi dựa trên các đặc tính như loại tiến trình (foreground/background), độ ưu tiên, . . . I Mỗi hàng đợi sẽ được áp dụng một giải thuật định thời riêng, tùy vào tính chất của hàng đợi; ví dụ: I foreground (tương tác): cần thời gian đáp ứng nhanh hơn RR ⇒ I background (bó): có thể đáp ứng chậm hơn FCFS ⇒ TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 51
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Giải thuật hàng đợi đa cấp (Multilevel Queue) Chiến Lược Định Thời Giữa Các Hàng Đợi I Định thời với độ ưu tiên cố định: I Phục vụ tất cả các t/trình trong hàng đợi ưu tiên cao (vd: foreground) rồi mới đến hàng đợi có độ ưu tiên thấp hơn (vd: background). I Có khả năng dẫn đến tình trạng “chết đói” (starvation) CPU. I Định thời với phân chia thời gian (time-slice): I Mỗi hàng đợi sẽ nhận được một khoảng thời gian nào đó của CPU để định thời cho các tiến trình nằm trong đó. I Ví dụ: 80% cho foreground với RR, và 20% cho background với FCFS. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 52
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Giải thuật hàng đợi đa cấp (Multilevel Queue) Ví Dụ Hàng Đợi Đa Cấp highest priority system processes interactive processes interactive editing processes batch processes student processes lowest priority TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 53
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Giải thuật hàng đợi phản hồi đa cấp (Multilevel Feedback Queue) Giải Thuật Hàng Đợi Phản Hồi Đa Cấp I Hàng đợi sẵn sàng cũng tổ chức giống như trong giải thuật Hàng đợi đa cấp. I Một tiến trình có thể di chuyển giữa các hàng đợi khác nhau. I Cơ chế định thời có thể được cài đặt theo cách: I Nếu tiến trình dùng quá nhiều thời gian CPU, nó sẽ được di chuyển vào hàng đợi có độ ưu tiên thấp hơn. I Nếu tiến trình đã chờ quá lâu trong 1 hàng đợi với độ ưu tiên thấp, nó sẽ được chuyển sang hàng đợi có độ ưu tiên cao hơn (cơ chế “sự lão hóa”). TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 54
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Giải thuật hàng đợi phản hồi đa cấp (Multilevel Feedback Queue) Tham Số Của Bộ Định Thời I Bộ định thời đa cấp có phản hồi có thể được định nghĩa bằng những tham số sau: I Số lượng hàng đợi I Giải thuật định thời cho từng hàng đợi I Phương thức dùng để quyết định khi nào thì nâng cấp một tiến trình. I Phương thức dùng để quyết định khi nào thì hạ cấp một tiến trình I Phương thức dùng để quyết định là nên đặt tiến trình vào hàng đợi nào khi tiến trình này cần được phục vụ. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 55
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Giải thuật hàng đợi phản hồi đa cấp (Multilevel Feedback Queue) Ví Dụ Về Hàng Đợi Phản Hồi Đa Cấp I Các hàng đợi: I Q0: FCFS + quantum-time 8ms quantum 8 I Q1: FCFS + quantum-time 16ms I Q2: original FCFS quantum 16 I Định thời: I Một tiến trình mới P sẽ được phân vào Q0 với giải thuật định thời FCFS. Khi có được CPU, nó sẽ FCFS được sử dụng tối đa 8ms. I Nếu sau 8ms, P chưa hoàn thành thì CPU sẽ bị thu hồi để phân phối cho tiến trình khác và P sẽ được chuyển sang Q1. I Tại Q1, việc định thời diễn ra tương tự, với quantum-time là 16ms. Nếu P vẫn chưa hoàn thành thì nó sẽ được chuyển sang Q2 với giải thuật FCFS. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 56
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Định thời trong Windows Định Thời Trong Windows I Đơn vị cấp phát CPU trong các HĐH hiện nay là luồng (thread) thay vì tiến trình. I HĐH Windows dùng giải thuật định thời dựa trên độ ưu tiên (32 mức) và định mức thời gian (RR), sử dụng chiến lược trưng dụng. I Mỗi độ ưu tiên sẽ có 1 hàng đợi riêng. I Một luồng được chọn thực thi bởi bộ điều phối sẽ t/thi cho đến khi: I bị trưng dụng bởi luồng có mức ưu tiên cao hơn, hoặc I kết thúc (terminate), hoặc I hết định mức thời gian (time quantum), hoặc I thực hiện lời gọi I/O. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 57
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Định thời trong Windows Định Thời Trong Windows I Độ và nhóm ưu tiên của các luồng được chia như sau: real- above below idle high normal time normal normal priority time-critical 31 15 15 15 15 15 highest 26 15 12 10 8 6 above normal 25 14 11 9 7 5 normal 24 13 10 8 6 4 below normal 23 12 9 7 5 3 lowest 22 11 8 6 4 2 idle 16 1 1 1 1 1 I Ngoài ra, một số cơ chế để nâng/hạ độ ưu tiên cho cá luồng cũng được sử dụng (tương tự ý tưởng của g/thuật hàng đợi phản hồi đa cấp) TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 58
- [HĐH] Ch4. Quản lý tiến trình Các giải thuật định thời Định thời trong Windows Chọn Lựa Tiến Trình Trong Windows I Bộ định thời duyệt qua các hàng đợi theo độ ưu tiên từ cao đến thấp. I Nếu không có tiến trình nào sẵn sàng, bộ định thời khởi động 1 tiến trình đặc biệt gọi là idle process. I Độ ưu tiên của t/trình bị trưng dụng có thể bị thay đổi. I Nếu sử dụng hết time quantum: độ ưu tiên giảm, nhưng không dưới mức “normal”. I Chuyển từ trạng thái chờ (waiting): độ ưu tiên tăng, mức độ tăng phụ thuộc vào t/trình đã chờ cái gì: đĩa – tăng nhiều, I/O – tăng ít hơn. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 59
- [HĐH] Ch4. Quản lý tiến trình Đồng bộ hóa tiến trình Đồng bộ hóa tiến trình TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 60
- [HĐH] Ch4. Quản lý tiến trình Đồng bộ hóa tiến trình Cạnh tranh và sự nhất quán dữ liệu Cạnh Tranh Và Sự Nhất Quan Dữ Liệu I Các tiến trình thực thi đồng thời, chia sẻ dữ liệu dùng chung có thể dẫn đến tình trạng không nhất quán (inconsistency) của dữ liệu. I Nhất quán = đúng đắn và chính xác; tùy thuộc vào ngữ cảnh, giao dịch. I Có 2 lý do chính để thực hiện đồng thời (cạnh tranh) các tiến trình: I Tăng hiệu suất sử dụng tài nguyên hệ thống. I Giảm thời gian đáp ứng trung bình của hệ thống. I Việc duy trì sự nhất quán của dữ liệu yêu cầu một cơ chế để đảm bảo sự thực thi một cách có thứ tự của các tiến trình có hợp tác với nhau. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 61
- [HĐH] Ch4. Quản lý tiến trình Đồng bộ hóa tiến trình Cạnh tranh và sự nhất quán dữ liệu Ví Dụ 1 – Giao Dịch Cạnh Tranh I Cho hai giao dịch: T1 T2 I T1: A mua hàng trị giá 50$ của P R(A) R(B) (50$: A P) → A = A - 50 B = B - 100 I T2: B mua hàng trị giá 100$ của P W(A) W(B) (100$: B P) → R(P) R(P) I Khởi tạo ban đầu: A=500; B=500; P=1000 P = P + 50 P = P + 100 W(P) W(P) I Yêu cầu về tính nhất quán: (A + B + P) không đổi; cụ thể hơn: I giá trị A, B, P sau khi thực hiện T1, T2 là: A=450; B=400; P=1150 I Nhận xét: I Nếu thực hiện tuần tự T1 T2 hoặc T2 T1, dữ liệu sẽ nhất quán. → → I Nếu thực hiện cạnh tranh (đồng thời), dữ liệu sẽ nhất quán??? TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 62
- [HĐH] Ch4. Quản lý tiến trình Đồng bộ hóa tiến trình Cạnh tranh và sự nhất quán dữ liệu Ví Dụ 1 – Giao Dịch Cạnh Tranh T1 T2 A/B P T1 T2 A/B P R(A) R(A) A = A - 50 A = A – 50 W(A) 450 R(B) R(B) B = B - 100 B = B - 100 W(B) 400 W(B) 400 W(A) 450 R(P) R(P) P = P + 50 P = P + 50 R(P) W(P) 1050 W(P) 1050 R(P) P = P + 100 P = P + 100 W(P) 1100 W(P) 1150 Schedule 1 Schedule 2 TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 63
- [HĐH] Ch4. Quản lý tiến trình Đồng bộ hóa tiến trình Tình trạng tranh đua (Race condition) Tình Trạng “Tranh Đua” (Race Condition) I Là tình trạng mà nhiều tiến trình cùng truy cập và thay đổi lên dữ liệu được chia sẻ, và giá trị cuối cùng của dữ liệu chia sẻ phụ thuộc vào tiến trình hoàn thành sau cùng. I giá trị củaP trong ví dụ 1 I hoặc giá trị biến counter trong ví dụ 2 I Tình trạng tranh đua có thể dẫn đến tình trạng không nhất quán. I Để ngăn chặn tình trạng tranh đua, các tiến trình cạnh tranh cần phải được đồng bộ hóa (synchronize). TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 64
- [HĐH] Ch4. Quản lý tiến trình Đồng bộ hóa tiến trình Vấn đề miền tương trục (Critical-section problem) Vấn Đề Miền Tương Trục (CSP) I Xét 1 hệ thống có n tiến trình đang cạnh tranh P0, P1, , Pn−1 { } I Miền tương trục (critical section): là một đoạn mã lệnh của các tiến trình có chứa các hành động truy cập dữ liệu được chia sẻ như: thay đổi các biến dùng chung, cập nhật CSDL, ghi tập tin, . . . Để tránh tình trạng tranh đua, các hệ thống phải đảm bảo khi một tiến⇒ trình đang trong miền tương trục, không có một tiến trình nào khác được phép chạy trong miền tương trục của nó. I Vấn đề miền tương trục (critical-section problem): Thiết kế các giao thức để các tiến trình có thể sử dụng để hợp tác/cạnh tranh với nhau. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 65
- [HĐH] Ch4. Quản lý tiến trình Đồng bộ hóa tiến trình Vấn đề miền tương trục (Critical-section problem) Vấn Đề Miền Tương Trục (CSP) I Cần phải xác định được phần entry section do và exit section. { I Mỗi tiến trình phải xin phép để được vào entry section miền tương trục (đi qua vùng entry critical section section), và sau đó thoát khỏi miền tương trục (đi qua vùng exit section) và thực hiện exit section phần còn lại (remainder section). remainder section I Giải pháp cho vấn đề miền tương trục tương đối phức tạp với với các hệ thống while (true); định thời trưng dụng. } TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 66
- [HĐH] Ch4. Quản lý tiến trình Đồng bộ hóa tiến trình Các giải pháp cho vấn đề miền tương trục Yêu Cầu Đối Với Các Giải Pháp Cho CSP I Một giải pháp cho vấn đề miền tương trục phải thỏa 3 yêu cầu: 1. Loại trừ hỗ tương (mutual exclusion): Nếu 1 t/trình đang thực thi trong miền tương trục, không một tiến trình nào khác được đi vào miền tương trục của chúng. 2. Tiến triển (progress): Nếu không có tiến trình nào đang thực thi trong miền tương trục và tồn tại tiến trình đang chờ được thực thi trong miền tương trục của chúng, thì việc lựa chọn cho một tiến trình bước vào miền tương trục không thể bị trì hoãn vô hạn. 3. Chờ đợi hữu hạn (bounded wait): Mỗi t/trình chỉ phải chờ để được vào miền tương trục trong một khoảng t/gian có hạn định (không xảy ra tình trạng “chết đói” – starvation). TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 67
- [HĐH] Ch4. Quản lý tiến trình Đồng bộ hóa tiến trình Các giải pháp cho vấn đề miền tương trục Phân Loại Các Giải Pháp I Các giải pháp phần mềm: dựa trên các giải thuật phần mềm, như: I Cho trường hợp chỉ có 2 tiến trình cạnh tranh: I Giải thuật Peterson (Peterson’s algorithm) I Cho trường hợp có n 2 tiến trình cạnh tranh: ≥ I Giải thuật Bakery I Các giải pháp phần cứng: I Lệnh vô hiệu hóa ngắt (disable interrupt) I Lệnh máy đặc biệt: TestAndSet TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 68
- [HĐH] Ch4. Quản lý tiến trình Đồng bộ hóa tiến trình Giải thuật chờ bận Peterson - 2 tiến trình Giải Thuật Peterson I Kết hợp cả biến khóa chia sẻ (GT1) và biến khóa riêng (GT2): I int turn; //turn = i: Pi được phép vào miền tương trục. I boolean flag [2]; //flag[i] = true: Pi sẵn sàng vào miền tương trục. I Tổ chức đoạn mã của 1 tiến trình Pi : do { flag[i] := true t u r n := j ; I Nhận xét: while (flag[j] && turn=j) ; I Loại trừ hỗ tương: critical section Tiến triển: flag[i] = false; I I Chờ đợi hữu hạn: remainder section } while (true); TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 69
- [HĐH] Ch4. Quản lý tiến trình Đồng bộ hóa tiến trình Giải thuật Bakery - n tiến trình Giải Thuật Bakery I Miền tương trục cho n tiến trình: I Mỗi t/trình sẽ nhận được 1 số trước khi vào miền tương trục. I Tiến trình có số nhỏ nhất sẽ có quyền ưu tiên cao nhất. I Nếu hai tiến trình Pi và Pj nhận được cùng một số, nếu i < j thì Pi được phục vụ trước. I Bộ sinh số luôn sinh các số theo thứ tự tăng, ví dụ: 1, 2, 3, 3, 3, 4, . . . I Dữ liệu chia sẻ: boolean choosing[n] int number[n] I Khởi tạo: tất cả các phần tử của choosing = false và number = 0. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 70
- [HĐH] Ch4. Quản lý tiến trình Đồng bộ hóa tiến trình Giải thuật Bakery - n tiến trình Giải Thuật Bakery Cho Tiến Trình Pi do { choosing[i] = true; number[i] = max(number[0], number[1], , number[n 1]) + 1 ; choosing[i] = false; − for (j = 0; j (number #1, i) < (number #2, j) nếu (number #1 < number #2) hoặc (number #1 = number #2) AND (i < j) TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 71
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Tắc nghẽn (Deadlock) TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 72
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Deadlock là gì? Deadlock Là Gì? I Deadlock là một trạng thái của hệ thống trong đó: I một tập hợp các tiến trình đang bị nghẽn I mỗi tiến trình đang giữ một tài nguyên và cũng đang chờ một tài nguyên đang bị giữ bởi một tiến trình khác trong tập các tiến trình đang bị nghẽn. I Ví dụ 1: I Giả sử 1 hệ thống có 2 tiến trình P và Q và F1, F2 là 2 tập tin. I Tiến trình P đang giữ F1 và cần truy xuất thêm F2. I Tiến trình Q đang giữ F2 và cần truy xuất thêm F1. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 73
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Deadlock là gì? Ví Dụ 2 – Traffic Deadlock 342 Chapter 7 Deadlocks • • • • • • • • • • • • Figure 7.10 Traffic deadlock for Exercise 7.11. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 74 7.14 In Section 7.4.4, we describe a situation in which we prevent deadlock by ensuring that all locks are acquired in a certain order. However, we also point out that deadlock is possible in this situation if two threads simultaneously invoke the transaction() function. Fix the transaction() function to prevent deadlocks. 7.15 Compare the circular-wait scheme with the various deadlock-avoidance schemes (like the banker’s algorithm) with respect to the following issues: a. Runtime overheads b. System throughput 7.16 In a real computer system, neither the resources available nor the demands of processes for resources are consistent over long periods (months). Resources break or are replaced, new processes come and go, and new resources are bought and added to the system. If deadlock is controlled by the banker’s algorithm, which of the following changes can be made safely (without introducing the possibility of deadlock), and under what circumstances? a. Increase Available (new resources added). b. Decrease Available (resource permanently removed from system). c. Increase Max for one process (the process needs or wants more resources than allowed). d. Decrease Max for one process (the process decides it does not need that many resources).
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Điều kiện phát sinh deadlock Điều Kiện Phát Sinh Deadlock 1. Loại trừ hỗ tương: ít nhất một tài nguyên được giữ ở chế độ không chia sẻ (nonsharable mode). 2. Giữ và chờ: một tiến trình đang giữ ít nhất một tài nguyên và đợi thêm tài nguyên đang bị giữ bởi tiến trình khác. 3. Không trưng dụng tài nguyên: không trưng dụng tài nguyên cấp phát tiến trình, trừ khi tiến trình tự hoàn trả. 4. Chờ đợi vòng tròn: tồn tại một tập các tiến trình P0, P1, , Pn { } đang chờ đợi như sau: P0 đợi một tài nguyên P1 đang giữ, P1 đợi một tài nguyên P2 đang giữ, . . . , Pn đang đợi một tài nguyên P0 đang giữ. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 75
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Mô hình hóa hệ thống Mô Hình Hóa Hệ Thống I Hệ thống gồm một tập các loại tài nguyên, kí hiệu R1, R2, , Rm I Ví dụ: CPU cycles, memory space, I/O devices, . . . I Mỗi loại tài nguyên Ri có một tập các thể hiện (instances) Wi I Tiến trình sử dụng tài nguyên theo các bước: 1. Yêu cầu (request) – phải chờ nếu không được đáp ứng ngay. 2. Sử dụng (use) 3. Giải phóng (release) I Các tác vụ yêu cầu và hoàn trả được thực hiện bằng các lời gọi hệ thống. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 76
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Đồ thị cấp phát tài nguyên (Resourece Allocation Graph – RAG) Đồ Thị Cấp Phát Tài Nguyên – RAG I Là đồ thị có hướng, với tập đỉnh V và tập cạnh E I Tập đỉnh V gồm 2 loại: I Tập P = P1, P2, , Pn : tập các tiến trình trong hệ thống { } I Tập R = R1, R2, , Rm : tập các tài nguyên của hệ thống { } I Tập cạnh cũng gồm 2 loại: I Cạnh yêu cầu (request edge): có hướng từ Pi đến Rj I Cạnh cấp phát (assignment edge): có hướng từ RJ đến Pi TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 77
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Đồ thị cấp phát tài nguyên (Resourece Allocation Graph – RAG) Ký Hiệu Pi I Tiến trình: ● ● ● ● I Loại tài nguyên (với 4 thể hiện): ● ● Pi ● ● Rj I Pi yêu cầu 1 thể hiện của Rj : ● ● Pi ● ● Rj I Pi đang giữ 1 thể hiện của Rj : TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 78
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Đồ thị cấp phát tài nguyên (Resourece Allocation Graph – RAG) Đồ Thị Cấp Phát Tài Nguyên – Ví Dụ 1 320 Chapter 7 Deadlocks I Đồ thị cấp phát tài nguyên (không có chu trình và không deadlock): R1 R3 I P = P1, P2, P3 { } I R = R1, R2, R3, R4 { } I E = P1 R1, P2 R3, R1 P2, { → → → P P P R2 P2, R2 P1, R3 P3 1 2 3 → → → } I Thể hiện của các loại tài nguyên: R1 : 1; R2 : 2; R3 : 1; R4 : 3. I Trạng thái của các tiến trình: I P1: giữ (R2, 1); chờ (R1, 1) R2 I P2: giữ (R1, 1), (R2, 1); chờ (R3, 1) R4 I P3: giữ (R3, 1) FigureTS. 7.1 TrầnResource-allocation Công Án graph.[HĐH] Ch4. Quản lý tiến trình 79 R = R , R , R , R ◦ { 1 2 3 4} E = P R , P R , R P , R P , R P , R P ◦ { 1 → 1 2 → 3 1 → 2 2 → 2 2 → 1 3 → 3} • Resource instances: One instance of resource type R ◦ 1 Two instances of resource type R ◦ 2 One instance of resource type R ◦ 3 Three instances of resource type R ◦ 4 • Process states: Process P is holding an instance of resource type R and is waiting for ◦ 1 2 an instance of resource type R1. Process P is holding an instance of R and an instance of R and is ◦ 2 1 2 waiting for an instance of R3. Process P is holding an instance of R . ◦ 3 3 Given the definition of a resource-allocation graph, it can be shown that, if the graph contains no cycles, then no process in the system is deadlocked. If the graph does contain a cycle, then a deadlock may exist. If each resource type has exactly one instance, then a cycle implies that a deadlock has occurred. If the cycle involves only a set of resource types, each of which has only a single instance, then a deadlock has occurred. Each process involved in the cycle is deadlocked. In this case, a cycle in the graph is both a necessary and a sufficient condition for the existence of deadlock. If each resource type has several instances, then a cycle does not necessarily imply that a deadlock has occurred. In this case, a cycle in the graph is a necessary but not a sufficient condition for the existence of deadlock. To illustrate this concept, we return to the resource-allocation graph depicted in Figure 7.1. Suppose that process P3 requests an instance of resource
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Đồ thị cấp phát tài nguyên (Resourece Allocation Graph – RAG) Đồ Thị Cấp Phát Tài Nguyên – Ví Dụ 2 7.2 Deadlock Characterization 321 I Đồ thị cấp phát tài nguyên với chu trình và deadlock: R1 R3 I Trạng thái của các tiến trình: I P1: giữ (R2, 1); chờ (R1, 1) P1 P2 P3 I P2: giữ (R1, 1), (R2, 1); chờ (R3, 1) I P3: giữ (R3, 1); chờ (R2, 1) I 2 chu trình nhỏ nhất (minimal cycles): P1 R1 P2 R3 P3 R2 P1 → → → → → → P2 R3 P3 R2 P2 R2 → → → → I Deadlock: cả 3 tiến trình P1, P2, P3 R4 Figure 7.2 Resource-allocation graph with a deadlock. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 80 type R2.Sincenoresourceinstanceiscurrentlyavailable,weaddarequestedge P3 R2 to the graph (Figure 7.2). At this point, two minimal cycles exist in the system:→ P1 R1 P2 R3 P3 R2 P1 P → R → P → R → P → → 2 → 3 → 3 → 2 → 2 Processes P1, P2,andP3 are deadlocked. Process P2 is waiting for the resource R3,whichisheldbyprocessP3.ProcessP3 is waiting for either process P1 or process P2 to release resource R2.Inaddition,processP1 is waiting for process P2 to release resource R1. Now consider the resource-allocation graph in Figure 7.3. In this example, we also have a cycle: P R P R P 1 → 1 → 3 → 2 → 1 P2 R1 P3 P1 R2 P4 Figure 7.3 Resource-allocation graph with a cycle but no deadlock.
- 7.2 Deadlock Characterization 321 R1 R3 P1 P2 P3 R2 R4 Figure 7.2 Resource-allocation graph with a deadlock. type R2.Sincenoresourceinstanceiscurrentlyavailable,weaddarequestedge P3 R2 to the graph (Figure 7.2). At this point, two minimal cycles exist in the system:→ P1 R1 P2 R3 P3 R2 P1 P → R → P → R → P → → 2 → 3 → 3 → 2 → 2 Processes P1, P2,andP3 are deadlocked. Process P2 is waiting for the resource R3,whichisheldbyprocess[HĐH] Ch4. QuảnP3.Process lý tiến trìnhP3 is waiting for either process P1 or process P2 to release resourceTắc nghẽn (Deadlock)R2.Inaddition,processP1 is waiting for process Đồ thị cấp phát tài nguyên (Resourece Allocation Graph – RAG) P2 to release resource R1. Now consider the resource-allocation graph in Figure 7.3. In this example, we also have a cycle:Đồ Thị Cấp Phát Tài Nguyên – Ví Dụ 3 P R P R P 1 → 1 → 3 → 2 → 1 I Đồ thị cấp phát tài nguyên có chu trình nhưng không deadlock: P2 R1 P3 I Chu trình: P P1 R1 P3 R2 P1 1 → → → → I Tại sao không deadlock? R2 P4 Figure 7.3 Resource-allocation graph with a cycle but no deadlock. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 81
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Đồ thị cấp phát tài nguyên (Resourece Allocation Graph – RAG) Đồ Thị Cấp Phát Tài Nguyên & Deadlock I Nếu đồ thị không có chu trình: chắc chắn không có deadlock I Nếu đồ thị có chu trình: I Nếu mỗi loại tài nguyên chỉ có một thể hiện: chắc chắn có deadlock. I Nếu mỗi loại tài nguyên có nhiều thể hiện: có thể có deadlock. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 82
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Các Cách Tiếp Cận Đối Với Vấn Đề Deadlock Các Cách Tiếp Cận Đối Với Vấn Đề Deadlock 1. Đề ra các giao thức để đảm bảo cho hệ thống không bao giờ rơi vào trạng thái deadlock. 2. Cho phép hệ thống rơi vào trạng thái deadlock, sau đó sử dụng các giải thuật để phát hiện deadlock và phục hồi. 3. Không quan tâm và không xử lý vấn đề deadlock trong hệ thống I Khá nhiều hệ điều hành sử dụng phương pháp này. I Tuy nhiên, nếu deadlock không được phát hiện và xử lý sẽ dẫn đến việc giảm hiệu suất của hệ thống. Cuối cùng, hệ thống có thể ngưng hoạt động và phải khởi động lại. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 83
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Các Cách Tiếp Cận Đối Với Vấn Đề Deadlock Ngăn chặn và tránh deadlock I Có hai biện pháp để đảm bảo hệ thống không rơi vào trạng thái deadlock: 1. Ngăn chặn deadlock (deadlock prevention): không cho phép (ít nhất) một trong bốn điều kiện cần cho deadlock xảy ra. 2. Tránh deadlock (deadlock avoidance): các tiến trình cần cung cấp thông tin về tài nguyên nó cần để hệ thống cấp phát tài nguyên một cách thích hợp. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 84
- [HĐH] Ch4. Quản lý tiến trình Tắc nghẽn (Deadlock) Các Cách Tiếp Cận Đối Với Vấn Đề Deadlock Phát Hiện Deadlock I Trong cách tiếp cận “phát hiện và phục hồi” đối với vấn đề deadlock: I Chấp nhận cho deaclock xảy ra trong hệ thống. I Sử dụng các giải thuật để phát hiện deadlock. I Nếu có deadlock thì sẽ tiến hành phục hồi hệ thống, dùng 1 sơ đồ phục hồi thích hợp. I Các giải thuật phát hiện deadlock thường sử dụng RAG. I Có 2 loại giải thuật: I Cho trường hợp mỗi loại tài nguyên chỉ có 1 thể hiện. I Cho trường hợp mỗi loại tài nguyên có nhiều thể hiện. TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 85
- [HĐH] Ch4. Quản lý tiến trình Tổng Kết Tổng Kết Tổng quan về tiến trình Giao tiếp liên tiến trình Định thời tiến trình Các giải thuật định thời Đồng bộ hóa tiến trình Tắc nghẽn (Deadlock) TS. Trần Công Án [HĐH] Ch4. Quản lý tiến trình 86