Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
215,36 KB
Nội dung
BỘ XÂY DỰNG TRƯỜNG ĐẠI HỌC KIẾN TRÚC VÀ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN -o0o - BÀI TẬP MÔN HỆ ĐIỀU HÀNH Chủ đề: CPU Scheduling Sinh viên thực hiện: Nguyễn Văn Đạt 2155010069 Trần Trung Tuyến 2155010239 Nguyễn Tấn Hưng 2155010129 Trần Hoàng Long 2155010154 Khúc Anh Duy 2155010054 Lớp: 21CN4 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng Hà Nội, tháng 5 năm 2023 1|Page Mục lục 1 Khái niệm cơ bản 3 2 Các bộ định thời 3 a) Long-term scheduling 3 b) Medium-term scheduling 3 c) Short term scheduling 3 3 Các tiêu chuẩn định thời CPU 5 4 Các thuật toán 6 a) First Come First Served (FCFS) 6 b) Shortest Job First (SJF) 8 c) Shortest Remaining Time First (SRTF) 10 d) Round - Robin 13 e) Multi Level Queue (MLQ) 18 f) Multi Level Feedback Queue (MLFQ) .21 5, Ngắt .24 2|Page CPU SCHEDULING 1 Khái niệm cơ bản Trong các hệ thống multitasking – Thực thi nhiều chương trình đồng thời làm tăng hiệu suất hệ thống – Tại mỗi thời điểm, chỉ có một process được thực thi Do đó, cần phải giải quyết vấn đề phân chia, lựa chọn process thực thi sao cho được hiệu quả nhất chiến lược định thời CPU Định thời CPU – Chọn một process (từ ready queue) thực thi – Với một multithreaded kernel, việc định thời CPU là do OS chọn kernel thread được chiếm CPU 2 Các bộ định thời a) Long-term scheduling – Xác định chương trình nào được chấp nhận nạp vào hệ thống để thực thi – Điều khiển mức độ multiprogramming của hệ thống – Long term scheduler thường cố gắng duy trì xen lẫn CPU-bound và I/Obound process b) Medium-term scheduling – Sự chuyển đổi dựa trên sự cần thiết để quản lý multiprogramming – Được thực hiện bởi phần quản lý bộ nhớ và được thảo luận ở phần quản lý bộ nhớ Các bộ định thời (tt) c) Short term scheduling - Xác định process nào trong ready queue sẽ được chiếm CPU để thực thi kế tiếp (còn được gọi là định thời CPU, CPU scheduling) - Short term scheduler còn được gọi với tên khác là dispatcher - Bộ định thời short-term được gọi mỗi khi có một trong các sự kiện/interrupt sau xảy ra: Clock interrupt – I/O interrupt – Operating system call, trap – signal 3|Page Dispatcher* - Dispatcher sẽ chuyển quyền điều khiển CPU về cho process được chọn bởi bộ định thời ngắn hạn - Bao gồm: – Chuyển ngữ cảnh (sử dụng thông tin ngữ cảnh trong PCB) – Chuyển về user mode – Nhảy đến vị trí thích hợp trong chương trình ứng dụng để khởi động lại chương trình (chính là program counter trong PCB) - Công việc này gây ra phí tổn – Dispatch latency: thời gian mà dispatcher dừng một process và khởi động một process khác 4|Page 3 Các tiêu chuẩn định thời CPU User-oriented – Response time: khoảng thời gian process nhận yêu cầu đến khi yêu cầu đầu tiên được đáp ứng (time-sharing, interactive system) cực tiểu – Turnaround time: khoảng thời gian từ lúc một process được nạp vào hệ thống đến khi process đó kết thúc cực tiểu – Waiting time: tổng thời gian một process đợi trong ready queue cực tiểu System-oriented – Processor utilization: định thời sao cho CPU càng bận càng tốt cực đại – Fairness: tất cả process phải được đối xử như nhau – Throughput: số process hoàn tất công việc trong một đơn vị thời gian cực đại 5|Page 4 Các thuật toán a) First Come First Served (FCFS) Thuật toán lập lịch trình First come first serve (FCFS) chỉ đơn giản là lên lịch công việc theo Arrival Time của họ Công việc nào đến trước trong hàng đợi sẵn sàng sẽ lấy CPU trước Arrival Time của công việc càng ít thì công việc nhận được CPU càng sớm Lập lịch FCFS có thể gây ra vấn đề chết đói nếu Burst Time của quá trình đầu tiên là lâu nhất trong số tất cả các công việc Ưu điểm: Đơn giản Dễ dàng Người đến trước, người phục vụ đầu tiên Nhược điểm: Phương pháp lập lịch trình không có tính ưu tiên, quá trình sẽ chạy đến khi hoàn thành Do tính chất không phủ đầu của thuật toán, vấn đề chết đói có thể xảy ra Mặc dù nó dễ thực hiện, nhưng nó có hiệu suất kém vì Avg Waiting Time cao hơn so với các thuật toán lập lịch trình khác Thí dụ Hãy lấy một ví dụ về thuật toán lập lịch FCFS Trong lịch trình sau, có 5 quy trình với ID quy trình P0, P1, P2, P3 và P4 P0 đến tại thời điểm 0, P1 tại thời điểm 1, P2 tại thời điểm 2, P3 đến tại thời điểm 3 và Quy trình P4 đến tại thời điểm 4 trong hàng đợi sẵn sàng Các quy trình và Arrival Time và Burst tương ứng của chúng được đưa ra trong bảng sau Turn Around Time và Waiting Time được tính bằng công thức sau 1 Turn Around Time = Completion Time – Arrival Time 2 Waiting Time = Turn Around Time – Thời gian liên tục Avg Waiting Time được xác định bằng cách tổng Waiting Time tương ứng của tất cả các quá trình và chia tổng cho tổng số quá trình 6|Page Avg Waiting Time được xác định bằng cách tổng Waiting Time tương ứng của tất cả các quá trình và chia tổng cho tổng số quá trình Process Arrival Burst Completion Turn Around Waiting ID Time Time Time Time Time 0 0 2 2 2 0 1 1 6 8 7 1 2 2 4 12 10 6 3 3 9 21 18 9 4 6 12 33 29 17 Avg Waiting Time = 31/5 P0 P1 P2 P3 P4 0 2 8 12 21 33 (Biểu đồ Gantt) 7|Page b) Shortest Job First (SJF) Shortest Job First (SJF) là một thuật toán lập lịch CPU trong hệ thống máy tính Thuật toán này sắp xếp các quá trình theo thời gian thực hiện (execution time) từ thấp đến cao và lựa chọn quá trình có thời gian thực hiện ngắn nhất để thực thi trước Với SJF, các quá trình mới được đưa vào hàng đợi sẽ được so sánh với các quá trình đang thực thi, và nếu thời gian thực hiện ngắn hơn thì quá trình mới sẽ được thực thi trước Tuy nhiên, SJF không hoàn toàn công bằng, vì nó có thể dẫn đến tình trạng starvation (quá trình bị đói tài nguyên) Nếu một quá trình có thời gian thực hiện lớn hơn các quá trình khác, nó có thể không được thực thi cho đến khi các quá trình khác đã hoàn thành SJF có thể được sử dụng để cải thiện hiệu suất của hệ thống máy tính, đặc biệt là trong các hệ thống có nhiều quá trình có thời gian thực hiện ngắn Trong lập lịch SJF, quy trình có Burst Time(thời gian thực thi) thấp nhất, trong số danh sách các tiến trình có sẵn trong hàng đợi sẵn sàng, sẽ được lên lịch tiếp theo Tuy nhiên, rất khó dự đoán Burst Time cần thiết cho một quá trình do đó thuật toán này rất khó thực hiện trong hệ thống Ưu điểm: • Thông lượng tối đa • Waiting Time và Turn Around trung bình tối thiểu Nhược điểm: • Có thể đau khổ với vấn đề chết đói • Nó không thể thực hiện được vì không thể biết trước thời gian Burst chính xác cho một quá trình Thí dụ Trong ví dụ sau, có năm công việc được đặt tên là P1, P2, P3, P4 và P5 Arrival Time và Burst Time của chúng được đưa ra trong bảng dưới đây PID Arrival Time Burst Time Completion Time Turn Around Time Waiting Time 11 7 8 7 0 8|Page 23 3 13 10 7 36 2 10 4 2 47 10 31 24 14 59 8 21 12 4 Do đó, Không có Quy trình nào đến tại thời điểm 0; sẽ có một vị trí trống trong biểu đồ Gantt từ thời điểm 0 đến 1 (thời điểm mà quá trình đầu tiên đến) Theo thuật toán, hệ điều hành lập lịch cho quá trình có Burst Time thấp nhất trong số các quá trình có sẵn trong hàng đợi sẵn sàng Cho đến nay, chúng ta chỉ có một quá trình trong hàng đợi sẵn sàng, do đó bộ lập lịch sẽ lập lịch trình này cho bộ xử lý bất kể Burst Time của nó là bao nhiêu Điều này sẽ được thực hiện cho đến 8 đơn vị thời gian Cho đến khi chúng tôi có thêm ba quy trình nữa được đưa vào hàng đợi sẵn sàng, do đó bộ lập lịch sẽ chọn quy trình có Burst Time thấp nhất Trong số các quy trình được đưa ra trong bảng, P3 sẽ được thực thi tiếp theo vì nó đang có Burst Time thấp nhất trong số tất cả các quy trình có sẵn Vì vậy, đó là cách thủ tục sẽ diễn ra trong thuật toán lập lịch trình công việc ngắn nhất (SJF) Waiting Time trung bình = 27/5 9|Page c) Shortest Remaining Time First (SRTF) Shortest remaining time first(srtf) hay có tên gọi khác là Shortest remaining time, là một phương pháp lập lịch là phiên bản ưu tiên của việc lập lịch tiếp theo cho công việc có thời gian ngắn nhất Trong thuật toán lập lịch trình này, tiến trình có khoảng thời gian nhỏ nhất còn lại cho đến khi hoàn thành được chọn để thực thi trước Cách hoạt động của SRTF như sau: 1 Khi một tiến trình mới được tạo, hệ thống so sánh thời gian thực thi còn lại của tiến trình này với thời gian thực thi còn lại của tiến trình đang được thực thi hiện tại 2 Nếu thời gian thực thi còn lại của tiến trình mới ngắn hơn, hệ thống chuyển đổi ngay lập tức sang tiến trình mới và tiếp tục thực thi 3 Nếu thời gian thực thi còn lại của tiến trình mới dài hơn, tiến trình đang được thực thi tiếp tục thực hiện cho đến khi hoàn thành hoặc có tiến trình khác ngắn hơn xuất hiện 4 Khi một tiến trình khác ngắn hơn xuất hiện, hệ thống chuyển đổi sang tiến trình mới và tiếp tục quá trình này Ưu điểm: Thời gian chờ đợi, tồn tại trong hệ thống của mỗi tiến trình đều ngắn Thuật toán tối ưu nhất Nhược điểm: Việc cài đặt thuật toán khá phức tạp Cần quản lý chặt chẽ việc điều phối các tiến trình Quản lý thời gian đến của mỗi tiến trình Thí dụ Trong Ví dụ này, có năm công việc P1, P2, P3, P4, P5 và P6 Arrival Time và Burst Time của chúng được đưa ra dưới đây trong bảng Xử lý Arrival Burst Completion Turn Around Waiting Response ID Time Time Time Time Time Time 1 0 8 20 20 12 0 2 1 4 10 9 5 1 10 | P a g e d) Round - Robin Định nghĩa: Round-Robin là gì ta có thể hiểu nó là một giải thuật định thời CPU Trong một chu kỳ, mỗi tiến trình được gán một thời gian giữ CPU nhất định Round Robin xuất phát từ nguyên tắc vòng tròn, lần lượt mỗi người sẽ nhận được một phần bằng nhau của một thứ gì đó Giải thuật Round Robin cung cấp khả năng thực thi các quy trình miễn phí Các điều kiện quan trọng được sử dụng trong giải thuật Round Robin: Thời gian hoàn thành: Là thời gian mà bất kỳ quá trình nào cũng cần hoàn thành công việc thực hiện Thời gian quay vòng: Dùng để phân biệt giữa thời gian hoàn thành và thời gian đến Sử dụng công thức: [Thời gian quay vòng = Thời gian hoàn thành – Thời gian đến] Giải Thời gian chờ: Dùng để phân biệt giữa thời gian quay vòng và thời gian liên tục Sử dụng công thức: [Thời gian chờ = Thời gian quay vòng – Thời gian nổ] thuật Round Robin: Đầu tiên có một hàng đợi trong đó các quy trình được sắp xếp theo thứ tự đến trước xử lý trước Mỗi giá trị lượng tử được cấp phát để thực hiện mỗi quá trình Quá trình đầu tiên được thực hiện cho đến khi kết thúc giá trị lượng tử Sau đó, mỗi ngắt được tạo ra và trạng thái được lưu CPU chuyển sang quy trình tiếp theo, phương pháp cũng tượng tự và được thực hiện theo Các bước tương tự được lặp lại cho đến khi kết thúc quá trình Ưu điểm: • Với sự hỗ trợ của Round Robin giúp các công việc phân bổ cho CPU được phân bổ hợp lý • Tất cả các quy trình đều được xử lý mà không có bất kỳ ưu tiên nào • Giải thuật mang lại hiệu suất tốt cho thời gian phản hồi trung bình • Trong giải thuật không gặp phải các vấn đề thiếu hụt hay hiệu ứng bảo vệ • Round Robin không mang tính chu kỳ • Thêm các quy trình mới tạo vào cuối hàng đợi • Khi thực hiện, một lượng tử thời gian cụ thể được phân bổ cho các công việc khác nhau • Mỗi quá trình sẽ có cơ hội lên lịch lại sau một thời gian lượng tử cụ thể 13 | P a g e • Một bộ lập lịch vòng tròn thường sử dụng tính năng chia sẻ thời gian Điều này có nghĩa là cung cấp cho mỗi công việc một khe thời gian hoặc lượng tử Nhược điểm: • Nếu thời gian ngắt của hệ điều hành thấp, đầu ra của bộ xử lý sẽ bị giảm • Hiệu suất bị phụ thuộc nhiều vào lượng tử thời gian • Không ưu tiên cho những việc quan trọng khi lập lịch vòng tròn • Phương pháp này mất nhiều thời gian cho việc chuyển đổi ngữ cảnh • Lượng tử thời gian thấp nên dẫn đến quá trình chuyển đổi ngữ cảnh trong hệ thống cao hơn • Trở ngại trong việc tìm một lượng tử thời gian chính xác • Không đặt được mức độ ưu tiên • Khả năng hiểu suy giảm Thí dụ: Lập kế hoạch Round –robin được diễn ra theo các bước sau: Hàng đợi tiến trình Thời gian bắt đầu tiến trình P1 4 P2 3 P3 5 14 | P a g e Bước 1: Quy trình P1 bắt đầu được thực thi với thời gian bắt đầu là 4 trong khi đó P2 và P3 đang ở hàng đợi Mỗi quy trình này đều diễn ra trong khoảng thời gian là 2s Bước 2: P1 sẽ được thêm vào cuối hàng đợi khi at time = 2 và lúc này P2 được thực thi Bước 3: P3 được thực thi và P2 được thêm vào cuối hàng đợi khi at time = 4 15 | P a g e Bước 4: P1 được thực thi khi at time = 6 và P3 lại thêm vào cuối hàng đợi Bước 5: Thời gian nổ của P1 là 4 vì thế khi at time = 8 thì P1 hoàn thành việc thực thi, kế tiếp sẽ là P2 Bước 6: Thời gian nổ của P2 là 3 như vậy khi at time = 9 P2 sẽ thực thi xong, quá trình thực thi P3 bắt đầu cho đến khi hoàn thành 16 | P a g e Bước 7: Thời gian chờ trung bình của ví dụ trên được tính như dưới đây: Thời gian chờ đợi: P1= 0+ 4= 4 P2= 2+4= 6 P3= 4+3= 7 17 | P a g e e) Multi Level Queue (MLQ) Multi Level Queue là một thuật toán lập lịch (scheduling) trong hệ điều hành, nơi các tiến trình (processes) được phân loại và ưu tiên theo nhiều mức độ khác nhau Mỗi mức độ sẽ có một queue (hàng đợi) riêng để lưu trữ các tiến trình Trong thuật toán Multi Level Queue, các tiến trình được phân loại vào các queue khác nhau dựa trên các yếu tố như độ ưu tiên giảm dần: thời gian hoàn thành, thời gian đáp ứng, v.v Các tiến trình trong cùng một queue sẽ được ưu tiên xử lý trước các tiến trình trong các queue khác Thuật toán Multi Level Queue thường được sử dụng trong các hệ thống đa nhiệm (multitasking) để đảm bảo việc xử lý các tiến trình được ưu tiên và hiệu quả hơn Tuy nhiên, việc thiết lập các queue khác nhau và định nghĩa các tiêu chí phân loại tiến trình có thể là một thách thức đối với các nhà phát triển hệ thống Cách hoạt động: Thuật toán Multi Level Queue (MLQ) chia các tiến trình trong hệ thống vào các hàng đợi (queue) khác nhau dựa trên mức độ ưu tiên của chúng Các hàng đợi này được sắp xếp theo thứ tự ưu tiên giảm dần Cụ thể, các tiến trình ưu tiên cao sẽ được đưa vào các hàng đợi ưu tiên cao hơn, trong khi các tiến trình ưu tiên thấp hơn sẽ được đưa vào các hàng đợi ưu tiên thấp hơn Khi một tiến trình được tạo ra, nó sẽ được đưa vào hàng đợi ưu tiên cao nhất, tùy thuộc vào độ ưu tiên của tiến trình đó Các tiến trình trong hàng đợi cao nhất sẽ được CPU thực thi đầu tiên Nếu một tiến trình đang chạy trong hàng đợi cao nhất nhưng không hoàn thành trong một khoảng thời gian nhất định, nó sẽ bị đẩy xuống hàng đợi ưu tiên thấp hơn để các tiến trình khác ưu tiên cao hơn được thực thi trước Trong hệ thống MLQ, mỗi hàng đợi sẽ có một bộ lập lịch riêng biệt để quản lý các tiến trình trong hàng đợi đó Các bộ lập lịch này có thể sử dụng các thuật toán lập lịch khác nhau, tùy thuộc vào đặc tính của các tiến trình trong hàng đợi đó Ví dụ, các tiến trình ưu tiên cao có thể sử dụng thuật toán Round Robin để đảm bảo tính công bằng, trong khi các tiến trình ưu tiên thấp hơn có thể sử dụng thuật toán First-Come, First-Serve để đơn giản hóa quá trình lập lịch Một số hệ thống MLQ có thể có nhiều hơn hai hàng đợi và các tiến trình có thể được đưa qua lại giữa các hàng đợi khác nhau, tùy thuộc vào các tham số như thời gian chờ đợi và độ ưu tiên của tiến trình Tuy nhiên, việc sử dụng quá nhiều hàng đợi có thể làm tăng độ phức tạp của hệ thống và làm giảm hiệu suất của nó Ưu điểm: 18 | P a g e Các tiến trình được phân chia thành các nhóm có độ ưu tiên khác nhau và được lập lịch một cách riêng biệt trong từng nhóm, giúp quản lý tài nguyên hệ thống hiệu quả hơn Các tiến trình có ưu tiên cao sẽ được xử lý trước, giúp tăng tính đáp ứng và thời gian đáp ứng của hệ thống Tăng khả năng đa nhiệm và đồng thời xử lý nhiều tác vụ cùng lúc Hệ thống dễ dàng tùy chỉnh và cấu hình theo các yêu cầu riêng của hệ thống Nhược điểm: Thuật toán không có khả năng đánh giá và điều chỉnh độ ưu tiên của các tiến trình trong từng nhóm một cách linh hoạt, do đó, có thể gây ra hiện tượng đói tài nguyên cho các tiến trình có độ ưu tiên thấp Không có cơ chế điều khiển được số lượng tiến trình trong từng nhóm, gây ra tình trạng quá tải hoặc không tận dụng được tài nguyên khi số lượng tiến trình trong một nhóm quá ít hoặc quá nhiều Thuật toán không khả thi khi xử lý các tiến trình ưu tiên cao và yêu cầu sử dụng tài nguyên nhiều như CPU, bộ nhớ, ổ cứng, làm giảm tính linh hoạt của hệ thống Thí dụ 1: Giả sử có 3 queue với độ ưu tiên khác nhau như sau: - Queue 1: chứa các tiến trình có tính ứng dụng cao, như các tiến trình giao tiếp với người dùng (user-level processes) - Queue 2: chứa các tiến trình có tính ứng dụng trung bình, như các tiến trình nền (background processes) - Queue 3: chứa các tiến trình có tính ứng dụng thấp, như các tiến trình hệ thống (system-level processes) Các tiến trình sẽ được lập lịch vào các queue tương ứng với độ ưu tiên của chúng Khi queue 1 đã xử lý xong các tiến trình trong nó, queue 2 sẽ được xử lý tiếp theo và tương tự với queue 3 Trong mỗi queue, các tiến trình sẽ được xử lý theo thuật toán lập lịch FIFO (First In First Out) Thí dụ 2: Giả sử có 5 tiến trình cần được lập lịch, với thông tin như sau: Tiến trình Thời gian thực thi Độ ưu tiên P1 8 1 P2 6 2 P3 4 3 P4 2 1 P5 4 2 19 | P a g e Ban đầu, các tiến trình sẽ được lập lịch vào queue tương ứng với độ ưu tiên của chúng Ta có: - Queue 1: P1, P4 - Queue 2: P2, P5 - Queue 3: P3 Tiến trình P1 sẽ được xử lý trước, vì độ ưu tiên của nó cao hơn Sau khi P1 thực hiện xong, P4 sẽ được xử lý tiếp theo, vì nó là tiến trình duy nhất còn lại trong queue 1 Sau khi queue 1 đã xử lý xong, tới lượt queue 2 được xử lý Ta có P2 và P5 trong queue này, vì P5 có độ ưu tiên cao hơn nên nó sẽ được xử lý trước Sau đó đến lượt P2 được xử lý Cuối cùng, tới lượt queue 3 được xử lý, và ta có tiến trình P3 trong queue này Tổng thời gian thực hiện của các tiến trình sẽ là: 8 + 2 + 4 + 6 + 4 20 | P a g e