Bài tập môn OS concepts Điều phối tiến trình: Bài 1. VCT xác định kết quả điều phối tiến trình & thời gian chờ trung bình theo thuật toán FCFS, với tập tiến trình cần xử lý được mô tả trong file văn bản INPUT.TXT theo dạng: tiến trình thứ K có thời điểm vào và thời gian xử lý là 2 số nguyên ở dòng K. Ví dụ, nội dung file văn bản là: 0 24 1 3 2 3 thì có 3 tiến trình cần xử lý, trong đó tiến trình P1 có thời điểm vào là 0 & thời gian xử lý là 24, tương tự tiến trình P2 có thời điểm vào là 1 và P3 là 2 – cả hai cùng có thời gian xử lý là 3. Bài 2. VCT xác định kết quả điều phối tiến trình & thời gian chờ trung bình theo thuật toán Round Robin, Tập tiến trình cần xử lý được mô tả trong file văn bản INPUT.TXT theo dạng như trên – riêng dòng cuối cùng của file lưu giá trị quantum. Bài 3. VCT xác định kết quả điều phối tiến trình & thời gian chờ trung bình theo thuật toán điều phối SJF độc quyền và không độc quyền. Tập tiến trình cần xử lý được mô tả trong file văn bản INPUT.TXT theo dạng như câu 1.
Bài tập môn OS concepts Điều phối tiến trình: Bài 1. VCT xác định kết quả điều phối tiến trình & thời gian chờ trung bình theo thuật toán FCFS, với tập tiến trình cần xử lý được mô tả trong file văn bản INPUT.TXT theo dạng: tiến trình thứ K có thời điểm vào và thời gian xử lý là 2 số nguyên ở dòng K. Ví dụ, nội dung file văn bản là: 0 24 1 3 2 3 thì có 3 tiến trình cần xử lý, trong đó tiến trình P1 có thời điểm vào là 0 & thời gian xử lý là 24, tương tự tiến trình P2 có thời điểm vào là 1 và P3 là 2 – cả hai cùng có thời gian xử lý là 3. Bài 2. VCT xác định kết quả điều phối tiến trình & thời gian chờ trung bình theo thuật toán Round Robin, Tập tiến trình cần xử lý được mô tả trong file văn bản INPUT.TXT theo dạng như trên – riêng dòng cuối cùng của file lưu giá trị quantum. Bài 3. VCT xác định kết quả điều phối tiến trình & thời gian chờ trung bình theo thuật toán điều phối SJF độc quyền và không độc quyền. Tập tiến trình cần xử lý được mô tả trong file văn bản INPUT.TXT theo dạng như câu 1. Bài 4. VCT xác định kết quả điều phối tiến trình & thời gian chờ trung bình theo thuật toán điều phối với độ ưu tiên độc quyền. với tập tiến trình cần xử lý được mô tả trong file văn bản INPUT.TXT theo dạng tương tự câu 1 – nhưng mỗi dòng có 3 con số và số thứ ba là độ ưu tiên của tiến trình tương ứng. Bài 5. Xét 3 tiến trình A, B, C liên tục xuất ra các ký tự ‘A’, ‘B’, ’C’ tại các dòng 1, 2, 3 (khi xuất tới cuối dòng thì xóa cả dòng và xuất lại ở đầu dòng). Hãy xây dựng hệ thống giả lập điều phối 3 tiến trình theo thuật toán RR, biết thời điểm vào tương ứng của 3 tiến trình là 0, 10, 20 và trong khoảng thời gian quantum số ký tự xuất ra được của 3 tiến trình tương ứng là 1, 2, 3 Liên lạc tiến trình: Bài 6. Tạo ra 2 tiến trình. Tiến trình thứ nhất đọc từ file nhiều chuỗi liên tiếp, mỗi chuỗi gồm các phép toán +, -, *, / và hai toán hạng. Ví dụ trong file sẽ lưu các chuỗi dạng như sau : 2 + 3 1 - 2 4 * 6 15 / 3 Sau đó tiến trình thứ nhất truyền các chuỗi dữ liệu này cho tiến trình thứ hai. Tiến trình thứ hai thực hiện tính toán và trả chuỗi kết quả về lại cho tiến trình đầu tiên để ghi lại vào file như sau: 2 + 3 = 5 1 - 2 = -1 4 * 6 = 24 15 / 3 =5 Thực hiện bài toán dùng message queue để giao tiếp giứa 2 quá trình. Quản lý bộ nhớ: Bài 7. Xây dựng chương trình mô phỏng trực quan việc cấp phát liên tiếp với phân vùng cố định sử dụng nhiều hàng đợi. Số phân vùng, kích thước từng phân vùng tự thiết kế cho phù hợp; các tiến trình và kích thước tương ứng được phát sinh ngẫu nhiên (và thời điểm giải phóng cũng được random sao cho hợp lý) Bài 8. Tương tự bài trên với phân vùng cố định sử dụng một hàng đợi Bài 9. Tương tự bài trên với phân vùng động & thuật toán First – fit Bài 10. Tương tự bài trên với phân vùng động & thuật toán Best – fit Đồng bộ: (Semaphore) Bài 11. Viết chương trình giải quyết bài toán 5 triết gia ăn tối. Chương trình phải tạo ra 5 quá trình con mô phỏng hoạt động của 5 triết gia. Dùng semaphore để đồng bộ hoạt động của 5 triết gia này. Bài 12. Bài toán Tạo phân tử H2O Đồng bộ hoạt động của một phòng thí nghiệm sử dụng nhiều tiến trình đồng hành sau để tạo các phân tử H 2 O: MakeH() // Mỗi tiến trình MakeH tạo 1 nguyên tử H { Make-Hydro(); } MakeO() // Mỗi tiến trình MakeO tạo 1 nguyên tử O { Make-Oxy(); } MakeWater() /* Tiến trình MakeWater hoạt động đồng hành với các tiến trình MakeH, MakeO, chờ có đủ 2 H và 1 O để tạo H 2 O */ { while (T) Make-Water(); //Tạo 1 phân tử H 2 O } Bài 13. Bài toán Cây cầu cũ Để tránh sụp đổ, người ta chỉ có cho phép tối đa 3 xe lưu thông đồng thời qua một cây cầu rất cũ. Hãy xây dựng thủ tục ArriveBridge(int direction) và ExitBridge() kiểm soát giao thông trên cầu sao cho : Tại mỗi thời điểm, chỉ cho phép tối đa 3 xe lưu thông trên cầu. Tại mỗi thời điểm, chỉ cho phép tối đa 3 xe lưuthông cùng hướng trên cầu. Mỗi chiếc xe khi đến đầu cầu sẽ gọi ArriveBridge(direction) để kiểm tra điều kiện lên cầu, và khi đã qua cầu được sẽ gọi ExitBridge() để báo hiệu kết thúc. Giả sử hoạt động của mỗi chiếc xe được mô tả bằng một tiến trình Car() sau đây: Car(int direction) /* direction xác định hướng di chuyển của mỗi chiếc xe.*/ { RuntoBridge(); // Đi về phía cầu ArriveBridge(direction); PassBridge(); // Qua cầu Exit Bridge(); RunfromBridge(); // Đã qua cầu } Bài 14. Bài toán Qua sông Để vượt qua sông, các nhân viên Microsof và các Linux hacker cùng sử dụng một bến sông và phải chia sẻ một số thuyền đặc biệt. Mỗi chiếc thuyền này chỉ cho phép chở 1 lần 4 người, và phải có đủ 4 người mới khởi hành được. Để bảo đảm an toàn cho cả 2 phía, cần tuân thủ các luật sau : a. Không chấp nhận 3 nhân viên Microsoft và 1 Linux hacker trên cùng một chiếc thuyền. b. Ngược lại, không chấp nhận 3 Linux hacker và 1 nhân viên Microsoft trên cùng một chiếc thuyền. c. Tất cả các trường hợp kết hợp khác đều hợp pháp. d. Thuyền chỉ khởihành khi đã có đủ 4 hành khách. Cần xây dựng 2 thủ tục HackerArrives() và EmployeeArrives() được gọi tương ứng bởi 1 hacker hoặc 1 nhân viên khi họ đến bờ sông để kiểm tra điều kiện có cho phép họ xuống thuyền không ? Các thủ tục này sẽ sắp xếp những người thích hợp có thể lên thuyền. Những người đã được lên thuyền khi thuyền chưa đầy sẽ phải chờ đến khi người thứ 4 xuống thuyền mới có thể khởi hành qua sông. (Không quan tâm đến số lương thuyền hay việc thuyền qua sông rồi trở lại…Xem như luôn có thuyền để sắp xếp theo các yêu cầu hợp lệ) Giả sử hoạt động của mỗi hacker được mô tả bằng một tiến trình Hacker() sau đây: Hacker() { RuntoRiver(); // Đi đến bờ sông HackerArrives (); // Kiểm tra điều kiện xuống thuyền CrossRiver(); // Khởi hành qua sông } và hoạt động của mỗi nhân viên được mô tả bằng một tiến trình Employee() sau đây: Employee() { RuntoRiver(); // Đi đến bờ sông EmployeeArrives (); // Kiểm tra điều kiện xuống thuyền CrossRiver(); // Khởi hành qua sông } Bài 15. Bài toán Điều phối hành khách xe bus Hãy tưởng tượng bạn chịu trách nhiệm kiểm soát hành khách lên xe bus tại một trạm dừng. Mỗi xe bus có đủ chỗ cho 10 hành khách. Trong đó 4 chỗ chỉ dành cho khách ngồi xe lăn, 6 chỗ còn lại chỉ dành cho khách bình thường. Công việc của bạn là cho khách lên xe theo đúng qui định chỗ, khi xe đầy khách sẽ khởi hành. Có thể có nhiều xe và nhiều hành khách vào bến cùng lúc, nguyên tắc điều phối sẽ xếp khách vào đầy một xe, cho xe này khởi hành rồi mới điều phối cho xe khác. Giả sử hoạt động điều phối khách của bạn cho 1 chiếc xe bus được mô tả qua tiến trình GetPassengers(); hoạt động của mỗi hành khách tùy loại được mô tả lần lượt bằng tiến trình WheelPassenger() và NonWheelPassenger() sau đây , hãy sửa chữa các đoạn code, sử dụng cơ chế semaphore để thực hiện các nguyên tắc đồng bộ hoá cần thiết. GetPassenger() { ArriveTerminal(); // tiếp nhận một xe vào bến OpenDoor(); // mở cửa xe, thủ tục này xem như đã có for (int i=0; i<4; i++) // tiếp nhận các hành khách ngồi xe lăn { ArrangeSeat(); // đưa 1 khách vào chỗ } for (int i=0; i<6; i++) // tiếp nhận các hành khách bình thường { ArrangeSeat(); // đưa 1 khách vào chỗ } CloseDoor(); // đóng cửa xe, thủ tục này xem như đã có DepartTerminal(); // cho một xe rời bến } WheelPassenger() { ArriveTerminal(); // đến bến GetOnBus(); // lên xe } NonWheelPassenger() { ArriveTerminal(); // đến bến GetOnBus(); // lên xe } Bài 16. Bài toán sản xuất thiết bị xe hơi Hãng Pontiac có 2 bộ phận hoạt động song song : - Bộ phận sản xuất 1 khung xe : MakeChassis() { // tạo khung xe Produce_chassis(); } - Bộ phận sản xuất 1 bánh xe : MakeTires() { // tạo bánh xe và gắn vào khung xe Produce_tire(); Put_tire_to_Chassis(); } Hãy đồng bộ hoạt động trong việc sản xuất xe hơi theo nguyên tắc sau : o Sản xuất một khung xe, o cần có đủ 4 bánh xe cho 1 khung xe được sản xuất ra, sau đó mới tiếp tục sản xuất khung xe khác… Deadlock: Bài 17. Viết chương trình mô phỏng vấn đề phân phối tài nguyên RAG và kiểm tra trạng thái hệ thống hiện tại có thể deadlock không(có chu trình). Bài 18. Viết chương trình mô phỏng giải thuật chủ nhà băng để ngăn ngừa deadlock. Bài 19. Viết chương trình mô phỏng thuật toán phát hiện deadlock cho trường hợp tài nguyên đơn cá thể: chuyển từ đồ thị RAG sang Wait-For, kiểm tra chu trình trên đồ thị Wait-For. Bài 20. Viết chương trình mô phỏng thuật toán phát hiện deadlock cho trường hợp tài nguyên đa cá thể. Bài 21. Viết chương trình mô phỏng bài toán deadlock “Triết gia ăn tối”. Quản lý bộ nhớ thứ cấp: Bài 22. Viết chương trình mô phỏng thuật toán First Come Fist Server cho việc dịch chuyển của đầu đọc ghi. Bài 23. Viết chương trình mô phỏng thuật toán Sortest Seek-time First cho việc dịch chuyển của đầu đọc ghi. Bài 24. Viết chương trình mô phỏng thuật toán SCAN Bài 25. Viết chương trình mô phỏng thuật toán C-SCAN Bài 26. Viết chương trình mô phỏng thuật toán LOOK Bài 27. Viết chương trình mô phỏng thuật toán C-LOOK Hệ thống File: Bài 30. Viết chương trình mô phỏng phương pháp định vị liên tục( Contiguous allocation) file trên ổ đĩa thứ cấp Bài 31. Viết chương trình mô phỏng phương pháp định vị liên kết( Linked allocation) file trên ổ đĩa thứ cấp Bài 32. Viết chương trình mô phỏng phương pháp định vị chỉ số( Indexed allocation) file trên ổ đĩa thứ cấp Bài 32. Viết chương trình mô phỏng phương pháp định vị cơ sở mở rộng ( Extent-Based) file trên ổ đĩa thứ cấp . Bài tập môn OS concepts Điều phối tiến trình: Bài 1. VCT xác định kết quả điều phối tiến trình &. hợp lý) Bài 8. Tương tự bài trên với phân vùng cố định sử dụng một hàng đợi Bài 9. Tương tự bài trên với phân vùng động & thuật toán First – fit Bài 10.