一级操作系统实验报告.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
操作系统实验报告主要关注的是进程管理和Linux操作系统的应用。实验旨在帮助学生深入理解进程的概念,区别进程与程序,并掌握在Linux环境下如何创建、控制和管理进程,特别是守护进程的创建。 **实验目标与原理** 1. **进程概念理解**:进程是程序在执行过程中的实例,具有独立的内存空间和执行路径,与程序的静态存在形式有本质区别。 2. **进程创建与撤销**:在Linux中,可以通过系统调用`fork()`创建新进程,`exit()`或`_exit()`撤销进程。并发执行使得多个进程可以在同一时间片内轮流执行。 3. **守护进程创建**:守护进程是在后台运行且无控制终端的进程,常用在系统服务中。创建步骤包括:创建子进程、脱离会话、改变工作目录、重置文件权限掩码以及关闭文件描述符。 **实验内容** 1. **获取进程信息**:使用`ps`命令查看当前系统中的进程状态,如进程ID(PID)、父进程ID(PGID)等。 2. **进程创建与控制**:通过编程实现父进程创建子进程,两者并发或同步执行特定任务。例如,使用`fork()`创建进程,通过`if`判断条件来区分父子进程,并使用`sleep()`函数控制输出间隔。 **实验代码示例** - 并发输出: ```c #include<sys/types.h> #include<unistd.h> #include<stdio.h> int main() { pid_t pt; printf("Hello world!\n"); int i; pt = fork(); for(i = 0; i < 5; i++) { if(pt == -1) printf("Fork error.\n"); else if(pt > 0) { // 父进程 printf("I am a parent.\n"); sleep(1); } else { // 子进程 printf("I am a child.\n"); sleep(1); } } return 0; } ``` - 同步输出: ```c #include<sys/types.h> #include<unistd.h> #include<stdio.h> int main() { pid_t pt; printf("Hello world!\n"); int i; pt = fork(); for(i = 0; i < 5; i++) { if(pt == -1) printf("Fork error.\n"); else if(pt > 0) { // 父进程 // 子进程完成输出后,父进程再输出 } else { // 子进程 printf("I am a child.\n"); sleep(1); } } return 0; } ``` **思考题解答** 1. **程序与进程的区别**: - 程序是静态的,是有序代码的集合,而进程是动态的,是程序的执行实例。 - 进程是临时的,随着执行结束而消失,而程序可长期保存。 - 进程包含程序、数据和进程控制块,而程序仅包含代码。 - 一个程序可以对应多个并发执行的进程,一个进程也可能执行多个程序。 2. **Linux进程类型**: - 交互进程:与用户交互,响应用户输入。 - 批处理进程:一次性处理大量数据,不需用户交互。 - 守护进程:在后台运行,提供持续服务,如网络服务器。 3. **`fork()`与`vfork()`的区别**: - `fork()`创建完整副本,父子进程各自拥有独立的内存空间。 - `vfork()`创建子进程后,子进程共享父进程的地址空间,直到调用`exec()`或`exit()`。 - `vfork()`效率更高,但需谨慎处理,因为它可能导致父进程被阻塞,直到子进程结束或调用`exec()`。 实验通过实践加深了学生对操作系统中进程管理的理解,特别是进程的创建、同步与通信,以及守护进程的特性。通过编写代码并观察执行结果,有助于巩固理论知识,并提高实际操作能力。
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/b9e30650f9054965991acd62ffff20ae_purplerainqq.jpg!1)
- 粉丝: 10
- 资源: 15万+
![benefits](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-1.c8e153b4.png)
![privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-2.ec46750a.png)
![article](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-3.fc5e5fb6.png)
![course-privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-4.320a6894.png)
![rights](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-icon.fe0226a8.png)
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- stm32C8T6 驱动mpu6050 网上代码扒下来的,自己又改了一部分希望有帮助 实测通过
- 基于多目标遗传算法的分布式电源选址定容研究 关键词:分布式电源 选址定容 多目标遗传算法 参考文档:《店主自写文档》基本复
- 基于CNN、RNN、SVM分别实现心电图分类识别python源码
- “丢失 api-ms-win-crt-runtime-l1-1-0.dll” “找不到MSVCR100.dll等等”等错误
- 基于单片STM32的mp3解码器wav播放器
- 160001-2-12-1222.nda
- openGauss 的Java驱动
- 如何在Java中实现多重继承
- VB获取CPU内存占用率及网卡流量监控
- java类和接口有什么区别
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)