Chẳng hạn như qua môn học Hệ Điều Hành mà các bạn đã có thể nắm vững sơ bộlý thuyết về cách thức mà các hệ điều hành hoạt động và cách chúng sử dụng bộ nhớRAM, phân chia dung lượng CPU v
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
BÁO CÁO BTL HỆ ĐIỀU HÀNH
Đề tài: So sánh các thuật toán lập lịch cho CPU
Trang 2Hà Nội, 2-2023
MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU VỀ MỤC ĐÍCH VÀ NỘI DUNG BÁO CÁO 3
1.1 Đặt vấn đề 3
1.2 Các bài báo nghiên cứu 3
1.3 Giải quyết vấn đề 6
CHƯƠNG 2 NỘI DUNG VÀ CÁCH THỨC NHÓM TIẾN HÀNH 6
2.1 Các vấn đề được triển khai 6
2.2 Cách thức triển khai mô phỏng 7
2.1.1 Code mô phỏng hoạt động 7
2.1.2 Đo Time Slice 10
CHƯƠNG 3 KẾT QUẢ MÔ PHỎNG 14
CHƯƠNG 4 NHẬN XÉT KÉT QUẢ 33
4.1 So sánh các thuật toán lập lịch 33
4.2 So sánh với giá trị được định nghĩa trong rt.h của linux 35
Link tài liệu tham khảo 36
Trang 3CHƯƠNG 1 GIỚI THIỆU VỀ VẤN ĐỀ PROCESS SCHEDULING
1.1 Đặt vấn đề
Hiện nay môn các sinh viên đã được tiếp cận về kiến thức các hệ điều hành mới,khác lạ hơn so với hệ điều hành mà các sinh viên thường sử dụng hằng ngày
Chẳng hạn như qua môn học Hệ Điều Hành mà các bạn đã có thể nắm vững sơ bộ
lý thuyết về cách thức mà các hệ điều hành hoạt động và cách chúng sử dụng bộ nhớRAM, phân chia dung lượng CPU và cách thức quản lý bảo mật các dữ liệu
Trong đó có thể nhắc tới một phần quan trọng đó chính là cách hệ điều hành sửdụng các thuật toán lập lịch lên các tiến trình qua đó phân bố dung dượng CPU cho cáctiến trình với mức độ ưu tiên khác nhau để có thể đạt được kết quả là các tiến trình chạytrơn tru
1.2 Các bài báo và nghiên cứu
Việc sử dụng các thuật toán lập lịch và cách thức hoạt động của chúng cụ thể ởđây là trong hệ điều hành Linux đã được nhiều người quan tâm qua đó mà có một lượnglớn các báo cáo, phân tích và nghiên cứu về cách thức hoạt động của hệ điều hành đối vớicác phép lập lịch:
Bài báo 1: Comparison of Different CPU Scheduling Algorithms in OS
Trang 4Ở bài báo này chúng ta có thể thấy qua được là nó nói về các định nghĩa của cácthuật toán, cách thức chúng triển khai trong hệ điều hành Qua đó đưa ra sự so sánh bảngthống kê sự khác biệt với nhau giữa cách thức triền khai và ứng dụng của các phép lậplịch này.
Bài báo 2: FCFS Scheduling Algorithm: What is, Example Program
Trang 5Trong bài báo này tác giả đã đề cập chi tiết về phương pháp lập lịch: FCFS mộtphép lập lịch cực kì phổ biến và đặc trưng trong các phép lập lịch Nhưng có thể trong bàibáo này tác giả cũng chỉ đề cập đến việc định nghĩa thuật toán cách hoạt động, và đưa ra
Trang 6một số cách giải thích bằng nói qua ví dụ không trực quan mà chỉ là các kí tự, con sốkhông hề trực quan
Nhóm cũng đã tìm rất nhiều nguồn tài liệu và các báo khác trên Internet nhưng kếtquả tìm được lại khá giống nhau khi các báo cáo này chỉ cung cấp cho người đọc mộtkhối lượng kiến thức lý thuyết lớn về vấn đề lập lịch cho tiến trình ở trong hệ điều hành.Thứ mà học sinh, sinh viên cần nhất là các báo cáo, thông tin về việc mô phỏng cách thức
và phương pháp hoạt động của các thuật toán lập lịch lại còn rất ít (Theo ngôn ngữ ViệtNam) và cũng khó tiếp cận, hiểu rõ ràng (Tài liệu tiếng anh)
1.3 Giải quyết vấn đề
Vì hiểu rõ sự quan trọng của môn học này, đồng thời cũng cấp cho các bạn sinhviên khác một số thông tin trực quan về vấn đề lập lịch tiến trình trong hệ điều hành.Đồng thời hoàn thiện nội dung báo cáo môn học Nhóm đã quyết định mô phỏng lại cáchcác thuật toán nay hoạt động cụ thể như thế nào ngay trên hệ điều hành Linux bằng cáchlập trình trực tiếp và cho ra kết quả trực quan
CHƯƠNG 2 NỘI DUNG, CÁCH THỨC NHÓM TIẾN HÀNH
2.1 Các vấn đề được triển khai
Điều kiện cần khi thực hiện bài báo cáo: Các thành viên trong nhóm nắm vữngđược lý thuyết về các phép lập lịch, cách chúng hoạt động, cách chúng sử dụng mức độ
ưu tiên của các tiến trình trong hệ điều hành như thế nào
Trong báo cáo này, nhóm thực hành tạo các tạo các tiến trình riêng (các tiến trìnhnày giống hệt nhau), cho các tiến trình đó chạy các thuật toán lập lịch:
Trang 7Thu thập số liệu vẽ biểu đồ so sánh trước và sau thông tin thời gian chạy của cáctiến trình sử dụng các kiểu lập lịch Đưa ra kết luận cho mỗi lần mô phỏng riêng cho mỗikết quả thu được
Từ đó tập hợp kết luận lại, lập bảng so sánh đối chiếu với lý thuyết thực tế
2.2 Cách thức triển khai hoạt động mô phỏng
2.2.1 Lập trình mô phỏng hoạt động
Process A và B:
• Tạo 2 process chạy vòng lặp vô tận:
o Process A: in ra “process A”
o Process B: in ra “process B”
Process chính:
• Có 2 hàm run_process1(pid1) và run_process2(pid2)
o (pid1, pid2 là ID của process)
• Hai hàm này sử dụng hàm posix_spawn để tạo process nhận ID tương ứng
Trang 8o posix_spawn() = 0 khi process được tạo thành công.
• Hai hàm này cho phép in ra kết quả của process vừa tạo khi posix_spawn() = 0,ngược lại sẽ trả về lỗi
Một số lệnh sử dụng
Top:
• Sử dụng lệnh Top dùng để quan các tiến trình hiện tại đang xuất hiện trên hệthống:
Trang 9Real time processes :
• PR = - 1 - real_time_priority (real_time_priority ranges from 1 to 99)
Trang 10Xem priority và scheduling policy
• Hiện process đang chạy ở SCHED_OTHER, priority = 0
Sửa priority và scheduling policy
• Sử dụng sudo chrt –p –f <pri> <PID> để chỉnh process có ID = <PID> vềSCHED_FIFO với priority = <pri>
Renice
Sửa đổi giá trị nice cho các normal process
• Sử dụng sudo renice –n <NI> –p <PID> để chỉnh process có ID = <PID>
về priority = <NI>
2.2.2 Đo Time slice
Sơ lược hoạt động của chương trình:
• Trình mô phỏng gồm 4 thread A(Thread1), B(Thread2),C (Thread3), D (Thread4)
• Sử dụng biến currentThread để theo dõi Thread nào đang hoạt động:
o currentThread = 0 -> thread A
Trang 12Sơ lược hoạt động của chương trình:
• Tương tự với các thread 2, 3, 4
Sơ lược hoạt động của chương trình:
• Hàm main:
Set up các thông tin cơ bản của thread:
o Param
Trang 13o Priority.
o Scheduling policy
Tạo thread sử dụng lệnh pthread_create()
Join thread vừa tạo vào thread main sử dụng lệnh pthread_join()
o Các giá trị trên sẽ được tùy biến thay đổi dựa theo điều kiện đo
Trang 14CHƯƠNG 3 Kết quả mô phỏng
3.1 Mô phỏng Sched_other
So sánh hai process (1):
• Sử dụng code Mô phỏng hành vi hoạt động
• Process A chạy ở Sched_other
• Process B chạy ở Sched_other
• Dùng lệnh chrt kiểm tra scheduling policy và priority của từng process
• Hiện tại 2 process A, B đang cùng sử dụng SCHED_OTHER với priority =0
Trang 15Kết quả:
Ta thấy các giá trị “Process A”, “Process B” được in ra gần như luân phiên nhau.Hai process này đang có độ ưu tiên như nhau nên thời gian chúng chiếm dụngCPU cũng như nhau
• Hàm main hoàn chỉnh:
Sử dụng code Đo time slide
Chỉnh thông số -> 4 thread sử dụng sched_other với priority lần lượt là 15 – 10 –
5 – 0
Trang 16• Bảng thời gian thread chiếm dụng CPU
Trang 170 1000000
So sánh hai process (2):
• Process A chạy ở Sched_other
• Process B chạy ở Sched_other
• Sử dụng renice:
PR của process A : 15 + 20 = 35
PR của process B không sửa đổi
Trang 19• Bảng thời gian thread chiếm dụng CPU
Trang 20A C B C C B C C B B B B B 0
So sánh hai process (3):
• Process A chạy ở sched_other
• Process B chạy ở sched_batch
Trường hợp 1:
• Cả hai có mức độ ưu tiên như nhau
Trang 21Kết quả:
Hai process sử dụng CPU như nhau,
như vậy với cùng mức độ ưu tiên, sched_other và sched_batch đều có thể sửdụng CPU như nhau
Trang 22So sánh hai process:
• Process A chạy ở sched_other
• Process B chạy ở sched_idle
Ta thấy process B “thi thoảng” biến mất trên lệnh top do nó chạy ở trạng thái
“idle”
Kết quả:
Với cùng mức độ ưu tiên, ta thấy process A chiếm toàn bộ thời gian sử dụngCPU, không thấy được bất kì “Process B” được in ra
• Tăng mức độ ưu tiên lên cho process B lớn hơn nhiều process A
Tuy nhiên ta vẫn thấy process A chiếm toàn bộ CPU, chỉ rất ít khi process B có thể
sử dụng CPU
Trang 23So sánh hai process (4):
• Process A chạy ở sched_batch,
• Process B chạy ở sched_idle
Trang 24• Tăng mức độ ưu tiên cho process B.
Trang 25Kết quả:
Process A chiếm toàn bộ thời gian sử dụng CPU
Khi ta kill Process hoặc tạm dừng process B, nếu cả hai cùng ưu tiên như nhauthì process A sẽ được toàn quyền dùng CPU, khi process B resume thì chúng lạichia sẻ CPU như trước
Trang 26Thread Thời gian chiếm dụng CPU
Với SCHED_RR, tuy có một vài trường hợp xuất hiện giá trị đột biến lớn nhưng
về tổng thể có thể thấy time slice được fix cứng cho từng thread với giá trị
So sánh hai process (6):
Trang 27• Process B chạy ở Sched_RR,
• Process A chạy ở Shced_Other,
Kết quả:
Process B sẽ chiếm toàn quyền sử dụng CPU do process A luôn ưu tiên hơn(realtime process)
So sánh hai process (7):
• Process A chạy ở sched_FF
• Process B chạy ở sched_FF
Trường hợp 1:
• Cả hai có mức độ ưu tiên như nhau
Tiến trình nào dùng CPU trước sẽ chiếm CPU trước
Trường hợp 2 :
Trang 28• Khi một process ưu tiên cao hơn được đặt lại cho ưu tiên thấp hơn, bị tạm dừnghoặc kill thì
tiến trình còn lại sẽ lấy toàn bộ CPU
So sánh hai process (8):
• Process A chạy ở Sched_Other
• Process B chạy ở Sched_FF
Kết quả:
Trang 29Độ ưu tiên không có tác động đáng kể
Tiến trình B sẽ chiếm toàn bộ CPU do nó được ưu tiên hơn (B là real-timeprocess)
• Process A chạy ở Sched_FF
• Process B chạy ở Sched_RR
• Cả 2 có mức độ ưu tiên như nhau
Kết quả:
Hai process cùng sử dụng CPU
Tuy nhiên thời gian sử dụng khác nhau, lúc process A sử dụng CPU lâu hơn, lúclại sử dụng ít hơn nhưng cả process A và process B đều có được một khoảng thờigian dài sử dụng CPU
So sánh hai process:
Trang 30• Process A chạy ở Sched_RR.
• Process B chạy ở Sched_FF
• Process A có mức độ ưu tiên cao hơn.Kết quả:
Process A sẽ chiếm toàn quyền sử dụng CPU
So sánh hai process (9):
• Process A chạy ở Sched_FF
• Process B chạy ở Sched_RR
• Process A có mức độ ưu tiên cao hơn.Kết quả:
Process A sẽ chiếm toàn quyền sử dụng CPU
Trang 31Sched_Idle
sử dụngCPU
Sched_F
F process
có thời gian hoạt động thất thường hơn Sched_
RR process
Process A chiếm toàn quyền CPU
Process A chiếm toàn quyền CPU
Process
A chiếm toàn quyền CPU
nào được cấp quyền trước sẽkhông nhường
Process A chiếm toàn quyền CPU
Process A chiếm toàn quyền CPU
Process
A chiếm toàn quyền CPU
Trang 32CPU chođến khi hết Burst time của nóSched_Oth
Các process luân phiên
sử dụng CPU
Thời gian chiếm dụng CPU tương tự nhau
Các process luân phiên
sử dụng CPU
Thời gian chiếm dụng CPU tương tự nhau
Process
A chiếm toàn quyền CPU
process luân phiên
sử dụng CPU
Thời gian chiếm dụng CPU tương tự nhau
Process
A chiếm toàn quyền CPU
Bảng kết quả Mô phỏng hành vi giữa các thuật toán – Độ ưu tiên process A > process B Pro
Sched_batch
Sched_Idle
Sched_RR Time slide
Process A chiếm toàn quyền CPU
Process A chiếm toàn quyền CPU
Process
A chiếm toàn quyền CPU
Trang 33quyền
CPU
A khôngnhường CPU chođến khi hết Burst time của nó
Process A chiếm toàn quyền CPU
Process A chiếm toàn quyền CPU
Process
A chiếm toàn quyền CPU
Process A chiếm quyền CPUnhiều hơn Process B
Process A chiếm toàn quyền CPU
Process
A chiếm toàn quyền CPU
chiếm toàn quyền CPU
Process
A chiếm toàn quyền CPU
4.2 So sánh với giá trị được định nghĩa trong rt.h của linux
Timeslice được phân cho các process chạy ở SCHED_OTHER không đều, chúngkhông được fix cứng một giá trị timeslice cố định
Timeslice được phân cho các process chạy ở SCHED_RR được phân bố đều, fixcứng trong khoảng giá trị tầm 100ms, với cùng mức độ ưu tiên Giá trị 100mscũng trùng với giá trị được định nghĩa cho SCHED_RR trong file rt.h của linux
Trang 34h琀琀ps://www.studocu.com/vn/course/truong-dai-hoc-bach-khoa-ha-noi/he-4 Slide h điêều hành c a thầềy Hàn Huy Dũngệ ủ
(Link:
h琀琀ps://drive.google.com/drive/folders/1-cd6amVh56PDK0QVtUbYt2aZZ1SQLyw8)
Trang 35Thiếết b hỗỗ tr ị ợ
- Trong quá trình tìm hi u và nghiến c u b n em đã s d ng thiếết b :ể ứ ọ ử ụ ịMáy Laptop Thinkpad , máy tính laptop nitro5
- Vi điếều khi n:ể
11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz 2.42 GHz
Đ có th th c hi n vi c l p trình cũng nh đo đ c các thông sôố báo cáoể ể ự ệ ệ ậ ư ạ