华科操作系统 | OS实验&课设 | Ubuntu
操作系统 | 实验 | 课设| Ubuntu
实验
实验一
实验内容
- 在Linux(建议麒麟版本)下裁剪和编译Linux内核,并启用新内核。(其他发行版本也可以)
- 在Linux(建议麒麟版本)内核中增加3个新的系统调用,并启用新的内核,并编写应用程序测试。(其他发行版本也可以)
- 在Windows下,编写“算命大师.bat”批处理程序,输入出生年月日,输出属相和星座。
- 在Linux下,编写“算命大师”脚本程序,输入出生年月日,输出属相和星座
实验记录和答案
https://gvqnmru1asr.feishu.cn/wiki/MncGwdbeHilzIkkwHoVc2g16nob?from=from_copylink
实验二
实验内容
- 在Linux/Windows下创建2个线程A和B,循环输出数据或字符串。
- 在Liunx下创建(fork)一个子进程,实验wait/exit函数
- 在Windows/Linux下,利用线程实现并发画圆画方。
- 在Windows或Linux下利用线程实现“生产者-消费者”同步控制
- 在Linux下利用信号机制(signal)实现进程通信
- 在Windows或Linux下模拟哲学家就餐,提供死锁和非死锁解法。
实验记录和答案
https://gvqnmru1asr.feishu.cn/wiki/JvAew81TSi7LabkM7tFcTxXznpc?from=from_copylink
实验三
实验内容
- Windows/Linux模拟实现FIFO或LRU页面淘汰算法。
- Linux下利用/proc/pid/pagemap计算某个变量或函数虚拟地址对应的 物理地址等信息。建议优麒麟或麒麟系统。
- 研读并修改Linux内核的缺页处理函数do_no_page 或页框分配函数 get_free_page,并用printk打印调试信息。
- 注意:需要编译内核。建议优麒 麟或麒麟系统。
实验记录和答案
https://gvqnmru1asr.feishu.cn/wiki/VKiQwKeNTiKoDukiX3RcMD2Znlb?from=from_copylink
实验四
实验内容
- 编写一个Linux内核模块,并完成模块的安装/卸载等操作。
- 在Linux平台编写一个字符设备的驱动程序和测试用的应用程序。
- 驱动程序的功能:可以接收应用程序调用write输入的整数,并用read输出 最近输入的两个整数的和或最大值。
- 在Linux平台编写一个字符设备的驱动程序和测试用的应用程序。
- 驱动程序的功能:内部维护一个32字节的缓冲区,应用程序可以多次调用 read或write函数读写该缓冲区。
- read或write操作相互之间无关联,但要 求每次read或write要接着上操作的位置继续。如果读写失败返回错误。
实验记录和答案
https://gvqnmru1asr.feishu.cn/wiki/TUIKwX2jqiju0ik5pU6c5pXnnlf?from=from_copylink
课设
课设内容
编写设备(含缓冲区)驱动程序,并支持应用程序对其缓冲区的读写
- 设备的缓冲区大小可调(例32字节),缓冲区逻辑上是环形缓冲区;
- 缓冲区按序读/写,每个字节读/写过程中不重复且不遗漏;
- 编写若干个应用程序读或写设备缓冲区(读/写数目不定且程序乱序运行)
- 应用程序读缓冲区时:有新数据读就读,否则就被阻塞,直到有可读数据才被唤醒应用程序写缓冲区时:
- 有空位写就写,否则就被阻塞,直到有空位时才被唤醒;
- 驱动程序内部维护缓冲区的读/写,确保适时阻塞或唤醒相应进程
- 实验现象:观察缓冲区的变化与读/写进程的阻塞/唤醒的实际
- 提示
- 内设固定大小缓冲区BUFFER,读/写不遗漏不重复
- 实现设备的阻塞和非阻塞两种工作方式
- 读指针pRead,写指针pWrite
编写或复制至少4个应用程序进行读/写测试(可选:用echo/cat命令代替具有读/写设备功能的应用程序)
- 编写不少于2个读/写的测试应用程序
- 观察缓冲区变化与读/写进程的阻塞/被唤醒的同步情况。
- ps命令 查看进程状态:阻塞中……
课设记录
https://gvqnmru1asr.feishu.cn/wiki/AWTowekjxiftmPkhRqxcVXN2nhf?from=from_copylink
课设报告
https://gvqnmru1asr.feishu.cn/wiki/XgoSwdU0jiMSt9khqWmcSrmInLf?from=from_copylink