1. 1
DANH SÁCH VÀ YÊU CẦU CÁC ĐỀ TÀI CỦA ĐỒ ÁN MÔN HỌC
MÔN HỌC : HỆ ĐIỀU HÀNH
CÁN BỘ HƯỚNG DẪN: Ths.Nguyễn Văn Nguyên
1.1. Chủ đề 1: Mô phỏng
1.1.1. Đề tài số 1: Mô phỏng thuật toán nhà băng của Dijsktra để
tránh Deadlock
Yêu cầu:
1. Giới thiệu Deadlock
2. Trình bày thuật toán Banker
3. Xây dựng chương trình và kết quả demo
4. Viết báo cáo theo mẫu Bộ môn mạng và Truyền thông
5. Gặp giáo viên hướng dẫn, làm đúng yêu cầu của giáo viên hướng dẫn và
báo cáo tiến độ đúng thời gian
6. Ngôn ngữ dùng để viết chương trình C,C++, Visual C++
7. Làm 10 đến 15 slide để bảo vệ sau khi được giáo viên hướng dẫn cho phép
Tài liệu tham khảo
[1] Nguyễn Phú Cường, Giáo trình hệ điều hành, Đại học Cần Thơ
[2] Trần Hạnh Nhi, Giáo trình hệ điều hành nâng cao, Đại học Quốc Gia Hồ
Chí Minh
2. 2
[3] Giáo trình hệ điều hành, chương 6: Deadlock
[4] www.mediaafire
[5] An Introduction To Operating System, H.M. Deitel
1.1.2. Đề tài số 2: Xây dựng chương trình mô phỏng các giải thuật
định thời cho CPU
Yêu cầu:
1. Trình bày các giải thuật FIFO, SJF, SRT,RR
2. Xây dựng chương trình với các giải thuật trên và kết quả demo
3. Viết báo cáo theo mẫu Bộ môn mạng và Truyền thông
4. Gặp giáo viên hướng dẫn, làm đúng yêu cầu của giáo viên hướng dẫn và
báo cáo tiến độ đúng thời gian
5. Ngôn ngữ dùng để viết chương trình C, C++, Visual C++
6. Làm 10 đến 15 slide để bảo vệ sau khi được giáo viên hướng dẫn cho phép
Tài liệu tham khảo
[1] Vũ Lê Hùng, Giáo trình nguyên lý hệ điều hành, Đại học Bách Khoa Hồ
Chí Minh
[2] Nguyễn Phú Cường, Giáo trình hệ điều hành, Đại học Cần Thơ
[3] Trần Hạnh Nhi, Giáo trình hệ điều hành nâng cao, Đại học Quốc Gia Hồ
Chí Minh
3. 3
[4] Lê Trung Dũng, Giáo trình hệ điều hành, Nhà xuất bản giáo dục
1.2. Chủ đề 2: Đồng bộ giữa các quá trình
1.2.1. Đề tài 1: Bài toán năm triết gia ăn tối
Yêu cầu:
1. Mô tả bài toán
2. Giới thiệu tài nguyênn găng và đoạn găng
3. Giải pháp Semaphore, Deadlock.
3. 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.
4.Viết báo cáo theo mẫu Bộ môn mạng và Truyền thông
5. Gặp giáo viên hướng dẫn, làm đúng yêu cầu của giáo viên hướng dẫn và
báo cáo tiến độ đúng thời gian
6. Ngôn ngữ dùng để viết chương trình C, C++, Visual C++, Java
7. Làm 10 đến 15 slide để bảo vệ sau khi được giáo viên hướng dẫn cho phép
Tài liệu tham khảo
[1]Đặng Vũ Tùng, Giáo trình nguyên lý hệ điều hành, NXB Hà Nôi, 2005
[2] Internet
4. 4
1.2.2. Xây dựng chương trình producer-consumer với bounded
buffer.
Yêu cầu:
1. Giới thiệu tiến trình trong Unix, cách tạo quá trình trong Unix
2. Giới thiệu sơ lược về Semaphore, giao tiếp đồng bộ với Semaphore
3. Các hàm xử lý Semaphore
4. Tạo tiến trình Prodecer, Consumer
5. Sử dụng semaphore để truy xuất tài nguyên
6. Xây dựng chương trình và kết quả demo
7. Viết báo cáo theo mẫu Bộ môn mạng và Truyền thông
8. Gặp giáo viên hướng dẫn, làm đúng yêu cầu của giáo viên hướng dẫn và
báo cáo tiến độ đúng thời gian
9. Ngôn ngữ dùng để viết chương trình C trên Linux, Ubuntu.
10. Làm 10 đến 15 slide để bảo vệ sau khi được giáo viên hướng dẫn cho phép
Tài liệu tham khảo
[1] Nguyễn Hải Châu, Nguyên lý hệ điều hành, Đại học Công Nghệ
[2] Nguyễn Phú Trường, Giáo trình hệ điều hành, Đại học Cần Thơ
[3]Trần Hạnh Nhi, Giáo trình hệ điều hành nâng cao, Đại học Khoa học tự
nhiên Hồ Chí Minh
[4] Internet
5. 5
1.3. Chủ đề 3: Quản lý bộ nhớ
1.3.1. Đề tài số 1: Xây dựng chương trình đọc thông tin đĩa cứng với
định dạng NTFS và FAT32
Yêu cầu:
1. Giới thiệu hệ thống FAT32, cấu trúc FAT32, partion Boot Sector, directory
table
2. Giới thiệu hệ thống NTFS, Cấu trúc phân vùng NTFS, Master File Table
3. So sánh hệ thống FAT32 và NTFS
4. Xây dựng chương trình thực hiện các chức năng sau: Đưa ra màn hình Ổ
đĩa, tên ổ đĩa, số serial, trạng thái, định dạng, dung lượng, còn trống, số
byte /sector, số sector/cluster
5.Viết báo cáo theo mẫu Bộ môn mạng và Truyền thông
6. Gặp giáo viên hướng dẫn, làm đúng yêu cầu của giáo viên hướng dẫn và
báo cáo tiến độ đúng thời gian
7. Ngôn ngữ dùng để viết chương trình Visual C++
8. Làm 10 đến 15 slide để bảo vệ sau khi được giáo viên hướng dẫn cho phép
Tài liệu tham khảo
[1] Lê Ngọc Thạnh, Lập trình windows với MFC Visual C++6.0, NXB thống
kê, 2002
[2] Nguyễn Chánh Thành, Lập trình windows với VC/MFC, 2006
6. 6
[3] http://www.ntfs.com
1.4. Chủ đề 4: Giao tiếp giữa các quá trình
1.4.1. Đề tài số 1: Tìm hiểu cơ chế giao tiếp giữa hai quá trình dùng
Message Queue
Yêu cầu
1. Giới thiệu tiến trình trong Linux
2. Các trạng thái của tiến trình, cách xử lý các tiến trình bằng hàm System(),
giao tiếp giữa các tiến trình bằng hàng đợi thông điệp
3. Xây dựng chương trình minh họa để giải quyết bài toán sau:
a. Tạo ra 2 quá trình. Quá trình thứ nhất đọc 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ụ
3-1
4*2
5+4
20/5
Sau đó quá trình thứ nhất truyền các chuỗi dữ liệu này sang quá trình
thứ 2. Quá trình thứ 2 thực hiện tính toán và trả chuỗi kết quả về lại cho
quá trình đầu tiên để ghi lại file như sau:
3-1=2
4*2=8
7. 7
5+4=9
20/5=4
4. Dùng hàm fork() để tạo 2 quá trình.
5. Viết báo cáo theo mẫu Bộ môn mạng và Truyền thông
6. Gặp giáo viên hướng dẫn, làm đúng yêu cầu của giáo viên hướng dẫn và
báo cáo tiến độ đúng thời gian
7. Ngôn ngữ dùng để viết chương trình C trên Linux hoặc ubuntu
9. Làm 10 đến 15 slide để bảo vệ sau khi được giáo viên hướng dẫn cho phép
Tài liệu tham khảo
[1] Phạm Quang Dũng, Bộ môn Khoa học máy tính, Giáo trình Linux,Đại học
Quốc gia Hà nội
[2] Nguyễn Phương Lan, Hoàng Đức Hải, lập trình Linux-Tập 1,NXB Giáo
dục
[3] Đỗ Duy Việt-Nguyễn Hoàng Thanh Ly, Linux kernel
[4] Nguyễn Thanh Thủy, Nhập môn hệ điều hành Linux
[5] http://www.cprogramming.com/tutorial.html
1.4.2. Đề tài số 2: Giao tiếp các tiến trình bằng đường ống PIPE
Yêu cầu:
8. 8
1. Giới thiệu tiến trình trong Linux, các hoạt động của tiến trình, cấu trúc tiến
trình, giao tiếp giữa các tiến trình, các cơ chế giao tiếp và giới thiệu cơ chế
liên lạc bằng đường ống Pipe
2. Tạo đường ống giao tiếp ( có thể sử dụng hàm Fork()), các loại pipe
3. Viết chương trình gồm 2 quá trình. Quá trình thứ nhất cho người dùng
nhập vào từ bàn phím một chuỗi biểu diễn các phép tính gồm các phần tử
+,-,(,). Độ ưu tiên của các phép tính trong ngoặc(cặp dấu (&)) là cao nhất,
phép +,và – có cùng độ ưu tiên. Ví dụ
1+2+(2-3-4)-((3+4)-5)
(1+(-2)-((3+4)-5))
Sau đó truyền chuỗi dữ liệu này sang quá trình thứ hai. Quá trình thứ hai
thực hiện tính toán và trả về cho quá trình thứ nhất để thể hiện cho người sử
dụng biết
5. Viết báo cáo theo mẫu Bộ môn mạng và Truyền thông
6. Gặp giáo viên hướng dẫn, làm đúng yêu cầu của giáo viên hướng dẫn và
báo cáo tiến độ đúng thời gian
7. Ngôn ngữ dùng để viết chương trình C trên Linux hoặc ubuntu
8. Làm 10 đến 15 slide để bảo vệ sau khi được giáo viên hướng dẫn cho phép
Tài liệu tham khảo
[1] Nguyễn Phương Lan-Hoàng Hải, Lập trình Linux, tập1, NXB Giáo dục,
2001
[2] Đỗ Duy Việt-Nguyễn Hoàng Thanh Ly, Linux kernel