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ầ
Trang 1BÀ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.
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
Trang 2củ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
Trang 3thread để 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.