Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.89 MB, 15 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
MỤC LỤC
<i><b><small>1.Giới thiệu đề tài và một số khái ni mệ ... 3 </small></b></i>
<small>1.1 Ti n trình ế... 3 </small>
<small>1.2 Luồng ... 4 </small>
<small>1.3 Job scheduler ( Long-term scheduler) ... 4 </small>
<small>1.4 CPU scheduler (Short-term scheduler) ... 5 </small>
<small>1.5 First-Come, First-Served Scheduling ... 5 </small>
<small>1.6 Công vi c ngệắn trước(Shortest-job-first (SJF). ... 5 </small>
<small>1.7Công việc ưu tiên cao trước (Priority scheduling) ... 5 </small>
<small>1.8 Round Robin 1.9 Multilevel Queue Scheduling (MLQ) ... 5 </small>
<b><small>1.9a Ưu điểm của hàng đợi đa mức (Multilevel Queue Scheduling (MLQ)) ... 6 </small></b>
<b><small>1.9b Nhược điểm của hàng đợi đa mức. ... 7 </small></b>
<small>1.10 Hàng đợi hồi tiếp đa mức (Multilevel Feedback Queue Scheduling) ... 7 </small>
<small>Mô t bài toán: ả... 8 </small>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">1.Giới thiệu đề tài và một số ái nikh ệm
<b> 1.1 Tiến trình </b>
Process, hay tiến trình, là sự thực thi của một chương trình và thực hiện các hành động liên quan được chỉ định trong một chương trình, hoặc nó là một đơn vị thực thi nơi chương trình chạy. Hệ điều hành tạo, lên lịch và chấm dứt các tiến trình. Các tiến trình khác được tạo bởi tiến trình chính được gọi là tiến trình con.
Hoạt động của bất kì tiến trình nào cũng được kiểm sốt bởi khối điều khiển tiến trình (Process Control Block, viết tắt là PCB). PCB chứa tất cả những thông tin quan trọng liên quan đến các tiến trình, chẳng hạn như: id tiến trình, ưu tiên, trạng thái, CPU, …
Những hoạt động xen kẽ của các tiến trình giúp nâng cao tốc độ tính tốn khi hoạt động I / O trong một tiến trình trùng lặp với hoạt động tính tốn trong tiến trình khác.
Tiến trình đơn luồng: Là TT thực hiện chỉ 1 luồng thực thi Tiến trình đa luồng : Là TT có nhiều luồng thực thi Khi thực hiện, TT thay đổi trạng thái
<b>• Khởi tạo (New) TT đang được khởi tạo </b>
<b>• Sẵn sàng (Ready) TT đang đợi sử dụng processor vật </b>
lý
<b>• Thực hiện (Running) Các câu lệnh của TT đang được </b>
thực hiện
<b>• Chờ đợi (Waiting) TT đang chờ đợi 1 sự kiện nào đó </b>
xuất hiện (sự hồn thành thao tác vào/ra)
<b>• Kết thúc (Terminated) TT thực hiện xong </b>
Trạng thái của TT là một phần trong hoạt động hiện tạicủa TT
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><b> 1.2 Luồng </b>
Luồng (tiếng Anh: thread) thực thi là một chuỗi các lệnh được lập trình nhỏ nhất để có thể được quản quản lý độc lập bởi một bộ định thời (scheduler), thường là một phần của hệ điều hành. Việc hiện thực các luồng và tiến trình (process) khác nhau giữa các hệ điều hành, nhưng trong hầu hết các trường hợp, luồng là một thành phần của tiến trình. Đa luồng có thể tồn tại trong cùng một tiến trình, thực thi đồng thời và chia sẻ tài nguyên như bộ nhớ, trong khi những tiến trình khác nhau thì khơng chia sẻ các tài ngun này. Cụ thể, các luồng trong một tiến trình chia sẻ mã thực thi và giá trị của các biến được phân bổ động và biến tồn cục khơng phải cục bộ của luồng tại bất kì thời điểm nào.
➔Trong máy tính có nhiều tiến trình ( process) và luồng (thread). Nhưng CPU thì mỗi máy chỉ có một, và thực tế đa số hệ thống khi hoạt động đều là thực hiện 1 lúc nhiều tiến trình và luồng.
Vậy làm sao để có thể điều phối tiến trình hợp lí nhất và sử dụng CPU sao cho tận dụng được tối đa năng suất của CPU? ➔Cần có 1 cơ chế để điều phối tiến trình và CPU (Scheduler) 1.3 Job scheduler ( Long-term scheduler)
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">Bộ điều phối công việc là cơ chế chọn tiến trình nào sẽ được thêm vào hàng đợi sẵn sàng (ready queue).
1.4 CPU scheduler (Short-term scheduler)
Điều phối CPU là cơ chế chọn tiến trình tiếp theo trong hàng đợi sẵn sàng ( ready queue) để xử lí
➔Có rất nhiều thuật toán điều phối CPU nhưng thuật toán tổng hợp nhất là Điều phối hàng đợi hồi tiếp đa mức (Multilevel Feedback Queue )
Phần tiếp theo của đề tài em xin trình bày về thuật tốn điều phối hàng đợi hồi tiếp đa mức các thuật toán khác chỉ nêu tên
<small> 1.5 First-Come, First-Served Scheduling </small>
<b><small>1.6 Công việc ngắn trước(Shortest-job-first (SJF). 1.7Công việc ưu tiên cao trước (Priority scheduling) </small></b>
<small>1.8 Round Robin </small>
1.9 Multilevel Queue Scheduling (MLQ)
Các tiến trình trong hàng đợi sẵn sàng được chia thành các hàng đợi riêng biệt phụ thuộc vào một số đặc điểm của tiến trình ví dụ( memory size, process priority, process type…) mỗi hàng đợi có một 1 thuật tốn điều phối CPU riêng. Ví dụ cách chia phổ biến là foreground và background . 2 loại tiến trình này có thời gian phản hồi khác nhau nên cần 2 thuật toán điều phối riêng(VD Foreground dùng RR và background dùng FCFS) . Ngoài ra hàng đợi foreground có độ ưu tiên cao hơn background. Tiến trình được chia cố định cho một hàng đợi.Ví dụ chúng ta có 5 hàng đợi với mức độ ưu tiên từ cao theo STT:
1. System Processes 2. Interactive Processes
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">3. Interactive Editing Processes 4. Batch Processes
5. Student Processes
Tiến trình trong hàng đợi chỉ được xử lí khi những hàng đợi có độ ưu tiên cao hơn nó đều trống. Ví dụ tiến trình trong hàng đợi Batch process chỉ được xử lí khi 3 hàng đợi System,
Interactive, và Interactive editting đều trống. Giả sử tiến trình trong hàng đợi Batch process đang được xử lí mà có một tiến trình vào hàng đợi Interactive editing thì CPU sẽ được chuyển giao cho tiến trình vừa vào.
<b>1.9a Ưu điểm của hàng đợi đa mức (Multilevel Queue </b>
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b> 1.9b Nhược điểm của hàng đợi đa mức. </b>
Xảy ra hiện tượng “đói CPU” cho các tiến trình ở các hàng đợi có mức độ ưu tiên thấp. Chúng không bao giờ được thực thi hoặc phải đợi 1 khoảng thời gian dài vì các tiến trình ở hàng đợi ưu tiên cao chiếm một khoảng thời gian lớn .
Trong thuật toán điều phối hàng đợi đa mức , các tiến trình được chia c nh vào các hàng ch , ti n trình không th di chuy n gi a các ố đị ờ ế ể ể ữhàng đợi tuy rằng chi phí lên lịch thấp nhưng nhược điểm là khơng lịch hoạt. Hàng đợ ồ ếp đa mứi h i ti c giống hàng đợi hàng đợi đa mức nhưng các tiến trình có thể di chuyển giữa các hàng đợi. Phân chia tiến trình theo đặc điểm xử dụng vi xử lí.
-N u m t ti n trình x lí m t quá nhi u th i gian, nó sế ộ ế ử ấ ề ờ ẽ được chuyển tới hàng đợi có độ ưu tiên thấp hơn.
-N u m t tiế ộ ến trình đợi quá lâu ở hàng đợi ưu tiên thấp, nó s ẽ được chuyển lên hàng đợi có mức độ ưu tiên cao hơn.
Định nghĩa của bộ lập lịch hàng đợi phản hồi đa cấp làm cho nó trở thành thu t toán l p l ch CPU chung nh t. Nó có th ậ ậ ị ấ ể được cấu hình đểphù hợp v i m t h ớ ộ ệ thống c ụ thể đang được thi t kế ế. Thật không may, nó cũng yêu cầu một số phương tiện chọn giá trị cho tất cả các tham số để xác định b l p l ch t t nh t. Mộ ậ ị ố ấ ặc dù hàng đợi ph n hả ồi đa cấp là sơ đồ chung nhất, nhưng nó cũng là sơ đồ phức tạp nhất.
Nói chung, b l p l ch ộ ậ ị hàng đợi ph n hả ồi đa cấp được xác định bởi các tham s sau: ố
1.S ố lượng hàng đợi.
2.Thu t toán l p l ch cho mậ ậ ị ỗi hàng đợi.
3.Phương pháp được sử dụng để xác định thời điểm chuyển tiến trình lên hàng đợi có mức độ ưu tiên cao hơn.
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">4.Phương pháp được sử dụng để xác định thời điểm chuyển một tiến trình xuống hàng đợi có mức độ ưu tiên thấp hơn.
5.Phương pháp được sử dụng để xác định hàng đợi mà một tiến trình sẽ vào khi quy trình đó cần được x lí. ử
<b>Mơ tả bài tốn: </b>
-Xây dựng chương trình minh họa gi i thu t l p l ch h i tiả ậ ậ ị ồ ếp đa
m c((Multilevel Feedback Queue Scheduling). Yêu cứ ầu đặt ra là phân phối CPU cho các ti n trình sao cho: ế
- Có các ti n trình v i th i gian vào và th i gian x lí riêng vào h ế ớ ờ ờ ử ệthống
- Có các hàng đợi và mức độ ưu tiên.
-Chỉ có 1 n trình s d ng CPU t i 1 thtiế ử ụ ạ ời điểm
-Các ti n trình ế ở hàng đợi ưu tiên thấp không được phân ph i CPU ốtrừ khi hàng đợi ưu tiên cao hơn nó trống
-N u m t ti n trình x lí m t quá nhi u th i gian thì chuy n nó ế ộ ế ử ấ ề ờ ểxuống hàng đợi có mức ưu tiên thấp hơn.
2.N i dung chính <b>ộ</b>
-<b>Lời giải đã lựa chọn:</b>
Xây dựng chương chình có 3 hàng đợ ới v i 3 mức độ ưu tiên lần lượt là 1, 2, 3. Các tiến trình trên cùng 1 hàng đợi có cùng mức độ ưu tiên. Khi tiến trình đang chạy nghĩa là nó đang được phân ph i CPU. ố * Queue 1 s d ng chiử ụ ến lược điều ph i RR vố ới lượng t ử thời gian là 8.
* Queue 2 s d ng chiử ụ ến lược điều ph i RR vố ới lượng t ử thời gian là 16.
* Queue 3 s d ng chiử ụ ến lược điều ph i FCFS. ố
* Khi 1 ti n trình P1 yêu cế ầu CPU mà khơng được đáp ứng ngay thì xếp nó vào Queue 1.
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">* N u hế ết lượng t ử thời gian dùng CPU Queue 1 mà P1 vở ẫn chưa thực hiện xong thì đẩy nó xuống Queue 2.
* N u hế ết lượng t ử thời gian dùng CPU Queue 2 mà P1 vở ẫn chưa thực hiện xong thì đẩy nó xuống Queue 3.
* Th c hi n các ti n trình theo mự ệ ế ức độ ưu tiên và thứ ự t trong hàng đợi.
* Khi m t ti n trình ộ ế ở hàng ưu tiên thấp đang chạy mà có ti n trình ếđẩy vào hàng đợi ưu tiên cao hơn thì nó sẽ bị ngắt và chuyển CPU cho tiến trình v a vào ừ
- Cài đặt 3 hàng đợi 1,2,3.bằng 3 mảng 1 chiều q1;q2;q3. Với mỗi mảng ta dùng 2 biến f và r riêng.
- Luồng chạy và thuật toán của chương trình được minh họa ở hình bên dưới
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><b><small>Khi điều kiện kết thúc của chương trình đúng thì chương trình sẽ kết thúc. </small></b>
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">Ta có thể thấy tiến trình 1 đang chạy thì ti n trình 3 vào hàng ếđợi 1 nên CPU sẽ chuyển cho tiến trình 3.
Ví d 3: Khi có ngụ ắt ở hàng đợi 3
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">3. int pop(int q[], int &f, int &r) – Đẩy tiến trình ra khỏi hàng đợi và trả về tiến trình đó.
4. int isempty(int q[], int f, int r) – Kiểm tra 1 hàng đợi có rỗng hay khơng
5.int ketthuc() – Kiểm tra tất cả tiến trình đã được xử lí chưa( điều kiện kết thúc của chương trình).
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><b>3.3 Miêu tả biến của chương trình</b>
max <sub>Số lượng phần tử tối đa của các hàng đợi </sub>t[] <sub>Mảng lưu thời gian các tiến trình hồn thành </sub>b[] <sub>Mảng lưu thời điểm các tiến trình xuất hiện </sub>kt[] <sub>Mảng kiểm tra tiến trình i hồn thành chưa </sub>
Nếu hoàn thành kt[i]=1, ngược lại=0 q1,q2,q3 <sub>3 mảng lưu hàng đợi 1,2,3 </sub>f1,f2,f2,r1,r2,r3 <sub>Các biến lưu địa chỉ đầu và cuối hàng đợi </sub>
Vt[] <sub>Mảng lưu thứ tự các tiến trình xuất hiện </sub>tt <sub>Biến int lưu tiến trình đang làm việc </sub>ok <sub>Biến để rẽ nhánh luồng chương trình </sub>
td <sub>Biến lưu thời gian hiện tại trong chương trình </sub>
3.4 <b>Nhận xét:</b>
- Chương trình đã thực hiện được yêu c u cầ ủa bài toán đặt ra - X lí ng t chính xác. ử ắ
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">-Input và output d p c n ễ tiế ậ-Chưa có giao điện đồ ọ h a
<b>Nguồn tham khảo : </b>
1. Giáo trình Ngun lí h ệ điều hành –Trường Đại Học Bách Khoa Hà N i ộ
2. <small>scheduling</small>
Báo cáo bài t p l n h ậ ớ ệ điều hành Chu Đức Lộc, Ph m Quang ạToản
4. Multilevel Queue Scheduling Algorithm:
5. <small> <small>mlfq-cpu-scheduling/</small>
<small>