BÀI TẬP MÔN HỆ ĐIỀU HÀNH Chủ đề 1: Mô phỏng các giải thuật định thời cho process. Input: File đặc tả các công việc bao gồm các thông tin sau: Thời gian tính toán của mỗi process Thời điểm process được đưa vào hệ thống Các thông tin khác cần cho giải thuật (nếu thấy cần thiết) Output: Thời gian đợi (waiting time) của mỗi process Thời gian đợi trung bình Thời gian quay vòng (turnaround time) Thời gian quay vòng trung bình Thông năng (throughput) Yêu cầu: Sinh viên hiện thực giải thuật First Come First Serve và 2 trong số các giải thuật sau: Shortest Job First Shortest Remaining Time First Round Robin Highest Response Ration Next Multi-level Queue Scheduling Multi-level Feedback Queue Chủ đề 2: Viết chương trình thực hiện chức năng copy các file văn bản. Input: 1 file văn bản kích thước từ 100MB 10GB Output: bản sao của file Input Yêu cầu: - Có 2 process và một buffer dùng chung (kích thước buffer < 5 KB): o Process 1 thực hiện chức năng đọc dữ liệu từ file Input vào buffer o Process 2 thực hiện chức năng ghi dữ liệu từ buffer ra file Output - Giải quyết vần đề tranh chấp bằng 2 cơ chế: busy-waiting và sleep-and-wakeup. Nhận xét và so sánh thời gian chạy của 2 cơ chế này. Chủ đề 3: Mô phỏng 1. Tài liệu tham khảo - Bài giảng Hệ điều hành, Nguyễn Thị Thùy Linh - Giáo trình Hệ điều hành, Nguyễn Phú Trường, ĐHCT - An Introduction To Operating System, H.M. Deitel 2. Ngôn ngữ lập trình sử dụng: C, C++, Java trên UNIX hoặc Windows Bài 3.1: Viết chương trình mô phỏng giải thuật nhà băng của Dijsktra để tránh deadlock. Số lượng các nguồn tài nguyên, các yêu cầu của hệ thống được tạo ngẫu nhiên. Hãy hiện thực cách xét trạng thái hiện thời của hệ thống là an toàn hay không an toàn. Nếu trạng thái là an toàn, chương trình phải chỉ ra cách để thu hồi tài nguyên hệ thống. Với mỗi yêu cầu cung cấp tài nguyên, hãy hiển thị ra màn hình cách cấp phát, thu hồi tương ứng. Bài 3.2: Viết chương trình mô phỏng các giải thuật định thời đã học: FIFO, SJF, SRT, RR, HRRN, MLFQ. Đầu vào của giải thuật: số quá trình, độ dài các CPU burst, I/O burst… được tạo ngẫu nhiên. Tính toán các thông số và đánh giá độ hiệu quả của từng giải thuật. Bài 3.3: Viết chương trình mô phỏng các giải thuật thay thế trang đã học: OPT, FIFO, LRU, LFU, NUR, Second Chance. Đầu vào của giải thuật: số khung trang, chuỗi tham khảo trang, yêu cầu thay thế trang… được tạo ngẫu nhiên. Đánh giá độ hiệu quả (so sánh số page fault) của từng giải thuật. Chủ đề 4: Đồng bộ giữa các quá trình 1. Tài liệu tham khảo - UNIX network programming. - Tài liệu hướng dẫn thực hành Hệ điều hành 2. Tìm hiểu cách tạo quá trình trong UNIX: hàm fork( ). 3. Tìm hiểu các cách đồng bộ giữa các quá trình trong UNIX: semaphore, lock file. 4. Ngôn ngữ lập trình sử dụng: C trên UNIX Bài 4.1 : (Semaphore) Viết chương trình tạo ra một quá trình con. Quá trình cha sẽ nhận chuỗi số nguyên từ bàn phím do người dùng nhập và ghi vào file tên input. Quá trình con sẽ đọc dữ liệu từ file này, sắp xếp chúng theo thứ tự tăng dần và ghi vào một file khác tên là sorted. Bài 4.2 : (Semaphore) Viết chương trình producer-consumer với bounded buffer. Bài 4.3 : (Semaphore) 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 4.4 : (Lock file) Viết chương trình giải quyết bài toán reader/writer dạng tổng quát. Chương trình phải tạo ra 5 quá trình đồng thời với hoạt động đọc/ghi file bất kỳ để thử nghiệm giải thuật. Chủ đề 5: Thread 1. Tài liệu tham khảo - UNIX Internal, phần Thread and Lightweight Processes - Multithread Programming Guide. - Interprocess Communications in UNIX. - MSDN CDROM - Java How to Program, phần Threads 2. Tìm hiểu thread : - Tìm hiểu khái niệm thread. - Phân biệt giứa mô hình xử lý dùng multithread và dùng nhiều process. - Tìm hiểu cách đồng bộ giữa các thread trong Java và trong Linux. 3. Ngôn ngữ lập trình sử dụng có thể là C, C++, Java trên UNIX hoặc Windows. Bài 5.1 : Ứng dụng multithread trong bài toán nhân ma trận. Đọc vào 2 ma trận A & B từ file, sau đó dùng nhiều thread để thực hiện việc nhân 2 ma trận này. Ghi ma trận kết quả ra một file khác. Bài 5.2 : Ứng dụng multithread trong bài toán xử lý ảnh. Đọc vào một ma trận A từ file, sau đó dùng nhiều thread để thực hiện xử lý trên ma trận này như sau : một phần tử trên ma trận là trung bình cộng của các phần tử chung quanh nó. Ghi ma trận kết quả ra một file khác. Bài 5.3 : Ứng dụng multithread trong bài toán sau : Đọc vào một ma trận A từ file và nhập vào một số k, sau đó dùng n thread để thực hiện tìm kiếm trên các ma trận này xem có bao nhiêu phần tử giống k. Mỗi lần tìm thấy phần tử giống k thì tăng biến chung number (khởi động là 0) lên 1. Bài 5.4 : Ứng dụng multithread trong bài toán sau : Đọc vào một dãy A từ file, dùng n thread để sắp xếp dãy theo thứ tự tăng dần như sau: Mỗi thread lấy một phần dãy a và sắp theo thứ tự tăng dần Sau đó, 1 thread trộn các dãy do n thread vừa rồi đã sắp xếp thành dãy kết quả. Bài 5.5 : Cho người dùng nhập vào 2 số nguyên dương a và b, sau đó dùng n thread để tìm kiếm các số nguyên tố nằm trong khoảng 2 số đã nhập. Mỗi lần tìm được một số thì sẽ tăng biến chung number (khởi động là 0) lên 1. Bài 5.6 : Cho người dùng nhập vào 2 số nguyên dương a và b, sau đó dùng n thread để tìm kiếm các số nguyên tố nằm trong khoảng 2 số đã nhập và ghi các số này ra file. Bài 5.7: Đọc vào một ma trận (kích thước N*N) từ file, sau đó dùng n thread để tính tổng của từng hàng trên ma trận (1 thread nếu tính tổng một hàng xong có thể tính tổng của một hàng khác). Dùng một thread để thu thập các kết quả của các thread kia và ghi vào một file kết quả. Bài 5.8: Sử dụng thread và các phương thức đồng bộ trên thread để viết chương trình producers-consumers với 1 bounded buffer trong trường hợp có nhiều producer và nhiều consumer. Bài 5.9: Sử dụng thread và các phương thức đồng bộ trên thread để giải quyết bài toán N triết gia ăn tối. Bài 5.10 : Sử dụng thread và các phương thức đồng bộ trên thread để viết giải quyết bài toán reader/writer dạng tổng quát. CHÚ Ý : Khi báo cáo sinh viên sẽ được hỏi các vấn đề lý thuyết liên quan đến bài tập và chạy chương trình DEMO của mình. . của 2 cơ chế này. Chủ đề 3: Mô phỏng 1. Tài liệu tham khảo - Bài giảng Hệ điều hành, Nguyễn Thị Thùy Linh - Giáo trình Hệ điều hành, Nguyễn Phú Trường, ĐHCT - An Introduction To Operating System,. BÀI TẬP MÔN HỆ ĐIỀU HÀNH Chủ đề 1: Mô phỏng các giải thuật định thời cho process. Input: File đặc tả các. các quá trình 1. Tài liệu tham khảo - UNIX network programming. - Tài liệu hướng dẫn thực hành Hệ điều hành 2. Tìm hiểu cách tạo quá trình trong UNIX: hàm fork( ). 3. Tìm hiểu các cách đồng bộ