欢迎来到天天文库
浏览记录
ID:57219561
大小:2.79 MB
页数:68页
时间:2020-08-06
《山东大学操作系统实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、操作系统实验报告计算机科学与技术学院目录一、进程控制实验31.1实验目的31.2示例实验31.2.1实验内容31.3独立实验41.3.1实验内容41.3.2实验步骤41.3.3实验演示结果71.3.4实验代码7二、进程调度算法实验92.1实验目的92.2示例实验102.2.1实验内容102.2.2实验演示结果102.3独立实验112.3.1实验内容112.3.2实验步骤122.3.3实验演示结果142.3.4实验代码14二、进程同步实验163.1实验目的163.2示例实验163.2.1实验内容163.2.2实验演示结果173.3独立实验173.3.1实验内容173.
2、3.2实验步骤183.3.3实验演示结果213.3.4实验代码21三、内存页面置换算法实验314.1实验目的314.2示例实验314.2.1实验内容314.2.2实验演示结果324.3独立实验324.3.1实验内容324.3.2实验步骤334.3.3实验演示结果354.3.4实验代码37四、磁盘移臂调度算法实验485.1实验目的485.2示例实验495.2.1实验内容495.2.2实验演示结果505.3独立实验505.3.1实验内容505.3.2实验步骤515.3.3实验演示结果545.3.4实验代码54一、进程控制实验1.1实验目的加深对于进程并发执行概念的理解。
3、实践并发进程的创建和控制方法。观察和体验进程的动态特性。进一步理解进程生命期期间创建、变换、撤销状态变换的过程。掌握进程控制的方法,了解父子进程间的控制和协作关系。练习Linux系统中进程创建与控制有关的系统调用的编程和调试技术。1.2示例实验1.2.1实验内容以下实验示例程序应实现一个类似shell子命令的功能,它可以从执行程序中启动另一个新的子进程并执行一个新的命令和其并发执行。1.2.2实验演示结果1.3独立实验1.3.1实验内容参考以上示例程序中建立并发进程的方法,编写一个父子协作进程,父进程创建一个子进程并控制它每隔3秒显示一次当前目录中的文件名列表。1.
4、3.2实验步骤 1.3.2.1算法设计通过进程间的通讯,先创建一个父进程一个子进程,父进程沉睡3秒,子进程作为当前父进程再次创建一个他的子进程,当前子进程执行显示当前目录文件列表功能,执行execve()方法后死亡。While(1) 在死循环里无限进行当前操作。即达到父进程创建一个子进程并控制它每隔3秒显示一次当前目录中的文件名列表的要求。1.3.2.2开发调试过程打开一终端命令行窗体,新建一个文件夹,在该文件夹中建立名为pctrl.c的C语言程序;再建立以下名为pctrl.h的C语言头文件;建立项目管理文件Makefile;输入make命令编译连接生成可执行的pc
5、tl程序;执行pctl程序;再次执行带有子进程指定执行命令的pctl程序。1.3.2.3思考与分析1.反映的进程的特征和功能,在真实的操作系统中是怎样实现和反映出教材中讲解的进程的生命期、进程的实体和进程状态控制的。对于进程概念和并发概念有哪些新的理解和认识?子进程是如何创建和执行新程序的?答:进程是一个可并发执行的程序在某数据集上的一次运行,是程序的一次运行过程。而程序只是进程的一个组成部分,进程是程序的执行过程。程序是静态的指令集合,而进程是动态的过程实体,是动态的产生、发展和消失。此外所谓的进程并发执行是在宏观上并发,而在微观上交替执行。每个进程都用一个唯一的
6、整数形式的进程标识符来标识,通过fork()系统调用,可创建新进程。新进程通过复制原来进程的地址空间而成。这种机制允许父子进程方便的进行通信。系统调用fork(),得到的子进程实际上是父进程的克隆体,要执行不同的新程序要使用系统调用exec(),以用新程序来取代进程的内存空间。其功能是根据参数指定的文件名找到程序文件,把它装入内存,覆盖原来进程的映像,形成一个不同于父进程的子进程。除了进程映像被更换之外,新进程的PID及其他PCB属性均保持不变,实际上是一个新进程“借壳”原来子进程开始运行。父进程可通过系统调用waitpid()来把自己移出就绪队列来等待子进程的终止
7、。2.信号的机理是什么?怎样利用信号实现进程控制?每个信号对应一个正整数常量(为signal number。定义在系统头文件中),代表同一用户的诸进程之间传送事先约定的信息的类型,用于通知某进程发生了某异常事件。每个进程运行时,要通过信号机制来检查是否有信号到达。若有,中断正在执行的程序,转向该信号相对应的处理程序,已完成对事件的处理;处理结束后再返回到原来的断点继续执行。1.3.3实验演示结果1.3.4实验代码pctl.c文件:#include"pctl.h"intmain(){intpid_1,pid_2;//存放子进程号intstatu
此文档下载收益归作者所有