本实验报告详细探讨了操作系统的内部工作原理与性能优化策略。通过实际案例和代码解析,深入剖析了进程管理、内存分配及文件系统等关键技术环节,旨在提升读者对现代操作系统架构的理解与应用能力。
### 实验内容与要求
1. **熟悉Windows编程接口**:使用系统调用将文件`file1.txt`和`file2.txt`的内容合并到文件`zong.txt`。请上传名为学号后5位的ex0701.c文件。
2. 使用命令行工具实现相同功能,即将两个文本段落件内容合并至第三个指定文件中,并在批处理脚本的第一行写明具体操作步骤。
3. 为公司员工每人单独建立一个以工号命名的文件夹(例如:`10201`, `10202`...),并将每个员工提交的文档移动到对应的个人文件夹内,编写实现上述功能的批处理脚本并上传。
### 实验目的与内容
#### 进程概念理解
- 深化对进程的理解,明确进程和程序的区别。
- 分析多进程竞争资源的现象,并学习解决互斥的方法。
- 了解Linux系统中进程通信的基本原理。
#### 进程软中断通信实现
1. 编写一段C语言代码使用`fork()`创建两个子进程;用`signal()`捕捉键盘输入的DEL键信号,当父进程中捕获到该信号后向所有子进程发送终止信号。
2. 在上述程序中增加对特定信号忽略处理(如:SIGINT和SIGQUIT)以观察执行效果并分析原因。
#### 进程管道通信
- 实现基于管道的父子进程间信息传递,父进程接收来自两个子进程的消息,并按顺序显示出来。
### 进程状态转换模拟程序设计
1. 设计一个能够展示多个虚拟进程中各种状态(如:就绪态、运行态等)及其PCB内容变化的图形化界面。
2. 自定义数据结构表示每个进程的状态和相关信息,确保信息完整且易于理解;同时实现良好可视化的用户界面。
### 请求页式存储管理模拟
- 模拟不同页面置换算法的效果(如FIFO, LRU),并根据内存大小的变化评估这些算法的性能表现。
### 防止死锁的发生
- 编写一个简单的资源分配与回收程序,展示如何使用银行家算法避免系统进入无法解决的状态。
#### 算法描述:
1. **数据结构**:定义可利用资源向量`Available`, 最大需求矩阵`Max`, 分配矩阵`Allocation`, 需求矩阵`Need`.
2. 当一个进程请求更多资源时,检查该请求是否合理,并更新相关变量值。
### 磁盘调度程序设计
- 模拟先来先服务和最短寻道优先两种磁盘调度算法。
- 设计“驱动调度”与“接受请求”两个虚拟进程以模拟实际的磁盘操作流程。