2 第零章实验
在你日常使用的操作系统环境中安装并配置好实验环境,填写你的关键代码并简要描述实现方法和遇到的关键问题。
在Linux环境下编写一个会产生异常的应用程序,并简要解释操作系统的处理结果。填写你的关键代码并简要描述实现方法和遇到的关键问题。
在Linux环境下编写一个可以睡眠5秒后打印出一个字符串,并把字符串内容存入一个文件中的应用程序A。(基于C或Rust语言)
在Linux环境下编写一个应用程序B,简要说明此程序能够体现操作系统的并发性、异步性、共享性和持久性。(基于C或Rust语言)
6 第四章实验
使用sbrk,mmap,munmap,mprotect内存相关系统调用的linux应用程序。
修改本章操作系统内核,实现任务和操作系统内核共用同一张页表的单页表机制。
扩展内核,支持基于缺页异常机制,具有Lazy 策略的按需分页机制。
扩展内核,支持基于缺页异常的COW机制。(初始时,两个任务共享一个只读物理页。当一个任务执行写操作后,两个任务拥有各自的可写物理页)
扩展内核,实现swap in/out机制,并实现Clock置换算法或二次机会置换算法。
7 第五章实验
实现一个使用nice,fork,exec,spawn等与进程管理相关的系统调用的linux应用程序。
扩展操作系统内核,能够显示操作系统切换进程的过程。
请阅读下列代码,分析程序的输出 A 的数量:( 已知 && 的优先级比 || 高)
int main() {
fork() && fork() && fork() || fork() && fork() || fork() && fork();
printf("A");
return 0;
}
如果给出一个 && || 的序列,如何设计一个程序来得到答案?
在本章操作系统中实现本章提出的某一种调度算法(RR调度除外)。
8 第六章实验
扩展easy-fs文件系统功能,扩大单个文件的大小,支持三重间接inode。
扩展内核功能,支持stat系统调用,能显示文件的inode元数据信息。
扩展内核功能,支持mmap系统调用,支持对文件的映射,实现基于内存读写方式的文件读写功能。
扩展easy-fs文件系统功能,通过日志机制支持crash一致性。
扩展easy-fs文件系统功能,支持二级目录结构。可扩展:支持N级目录结构。
10 第八章实验
在Linux环境下,请用信号量实现哲学家就餐的多线程应用程序。
在Linux环境下,请用互斥锁和条件变量实现哲学家就餐的多线程应用程序。
在Linux环境下,请建立一个多线程的模拟资源分配管理库,可通过银行家算法来避免死锁。
进一步扩展内核功能,在内核线程中支持同步互斥机制,实现内核线程用的mutex, semaphore, cond-var。
解决优先级反转问题:实现RM实时调度算法,设计优先级反转的实例,实现优先级天花板和优先级继承方法。