版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一Linux环境下的进度管理(DOC)实验一Linux环境下的进度管理(DOC)14/14实验一Linux环境下的进度管理(DOC)软件学院上机实验报告课程名称:操作系统实验项目:实验一:Linux环境下进度管理实验室:耘慧402姓名:学号:专业班级:实验时间:实验成绩评阅教师一、实验目的及要求加深对进度见解的理解,明确进度和程序的差别;进一步认识并发履行的实质;分析进度争用资源的现象,学习解决进度互斥的方法;认识Linux系统中进度通讯的基本源理;二、实验性质进度的创立:编写一段程序,使用系统调用fork()创立两个子进度。当此程序运转时,在系统中有一个父进度和两个子进度活动。让每一个进
2、度在屏幕上显示一个字符:父进度显示字符“a;”子进度分别显示字符“b和”字符“c。”试察看记录屏幕上的显示结果,并分析原由。进度的控制:改正已编写的程序,将每个进度输出一个字符改为每个进度输出一句话,再察看程序履行时屏幕上出现的现象,并分析原由。假如在程序中使用系统调用lockf()来给每一个进度加锁,能够实现进度之间的互斥,察看并分析出现的现象。用fork()创立一个进度,再调用exec()用新的程序取代该子进度的内容;利用wait()来控制进度履行次序。三、实验学时实验性质:考证性实验学时:4学时实验要求:必做四、实验环境1.实验环境:Linux系统开发环境知识准备:1)Linux系统开发
3、环境搭建;2)Linux环境下GCC编译器的使用;3)语言中函数定义与调用、指针和种类的定义与使用、构造的定义、动向内存的申请等预备知识。五、实验内容及步骤实验内容:(1)进度的创立编写一段程序,使用系统调用fork()创立两个子进度。当此程序运转时,在系统中有一个父进度和两个子进度活动。让每一个进度在屏幕上显示一个字符:父进度显示字符“a”;子进度分别显示字符“b”和字符“c”。试察看记录屏幕上的显示结果,并分析原由。(2)进度的控制改正已编写的程序,将每个进度输出一个字符改为每个进度输出一句话,再察看程序履行时屏幕上出现的现象,并分析原由。假如在程序中使用系统调用lockf()来给每一个进
4、度加锁,能够实现进度之间的互斥,察看并分析出现的现象。(3)用fork()创立一个进度,再调用exec()用新的程序取代该子进度的内容;利用wait()来控制进度履行次序。实验步骤:进度的创立1.1进度UNIX中,进度既是一个独立拥有资源的基本单位,又是一个独立调动的基本单位。一个进度实体由若干个区(段)构成,包含程序区、数据区、栈区、共享储蓄区等。每个区又分为若干页,每个进度配置有独一的进度控制块PCB,用于控制和管理进度。PCB的数据构造以下:(1)进度表项(ProcessTableEntry)。包含一些最常用的核心数据:进度表记符PID、用户表记符UID、进度状态、事件描绘符、进度和U区
5、在内存或外存的地点、软中止信号、计时域、进度的大小、偏置值nice、指向就绪行列中下一个PCB的指针P_Link、指向U区进度正文、数据及栈在内存地区的指针。(2)U区(UArea)。用于寄存进度表项的一些扩大信息。每一个进度都有一个私用的U区,此中含有:进度表项指针、真切用户表记符u-ruid(readuserID)、有功能户表记符u-euid(effectiveuserID)、用户文件描绘符表、计时器、内部I/O参数、限制字段、差错字段、返回值、信号办理数组。因为UNIX系统采纳段页式储蓄管理,为了把段的初步虚地点变换为段在系统中的物理地点,便于实现区的共享,所以还有:(3)系统区表项。以
6、寄存各个段在物理储蓄器中的地点等信息。系统把一个进度的虚地点空间区分为若干个连续的逻辑区,有正文区、数据区、栈区等。这些区是可被共享和保护的独立实体,多个进度可共享一个区。为了对区进行管理,核心中设置一个系统区表,各表项中记录了以下相关描绘活动区的信息:区的种类和大小、区的状态、区在物理储蓄器中的地点、引用计数、指向文件索引结点的指针。(4)进度区表系统为每个进度配置了一张进度区表。表中,每一项记录一个区的初步虚地点及指向系统区表中对应的区表项。核心经过查找进度区表和系统区表,即可将区的逻辑地点变换为物理地点。1.2进度映像UNIX系统中,进度是进度映像的履行过程,也就是正在履行的进度实体。它
7、由三部分构成:(1)用户级上、下文。主要成分是用户程序;(2)寄存器上、下文。由CPU中的一些寄存器的内容构成,如PC,PSW,SP及通用寄存器等;(3)系统级上、下文。包含OS为管理进度所用的信息,有静态和动向之分。1.3所波及的系统调用fork()创立一个新进度。系统调用格式:pid=fork()参数定义:intfork()fork()返回值意义以下:0:在子进度中,pid变量保留的fork()返回值为0,表示目行进度是子进度。0:在父进度中,pid变量保留的fork()返回值为子进度的id值(进度独一表记符)。-1:创立失败。假如fork()调用成功,它向父进度返回子进度的PID,并向子
8、进度返回0,即fork()被调用了一次,但返回了两次。此时OS在内存中成立一个新进度,所建的新进程是调用fork()父进度(parentprocess)的副本,称为子进度(childprocess)。子进度继承了父进度的很多特色,并拥有与父进度完满同样的用户级上下文。父进度与子进度并发履行。1.4核心为fork()达成以下操作(1)为新进度分派一进度表项和进度表记符进入fork()后,核心检查系统能否有足够的资源来成立一个新进度。若资源不足,则fork()系统调用失败;不然,核心为新进度分派一进度表项和独一的进度表记符。(2)检查同时运转的进度数量超出开初规定的最大数量时,fork()系统调用
9、失败。(3)拷贝进度表项中的数据将父进度的目前目录和全部已翻开的数据拷贝到子进度表项中,并置进度的状态为“创立”状态。(4)子进度继承父进度的全部文件对父进度目前目录和全部已翻开的文件表项中的引用计数加1。(5)为子进度创立进度上、下文进度创立结束,设子进度状态为“内存中就绪”并返回子进度的表记符。(6)子进度履行固然父进度与子进度程序完满同样,但每个进度都有自己的程序计数器PC(注意子进度的PC开始地点),此后依据pid变量保留的fork()返回值的不同样,履行了不同样的分支语句。六、实验数据及结果分析运转结果1分析:因为函数printf()输出的字符串之间不会被中止,所以,每个字符串内部的
10、字符次序输出时不变。可是,因为进度并发履行时的调动次序和父子进度的抢占办理机问题,输出字符串的次序和先后跟着履行的不同样而发生变化。这与打印单字符的结果相同。运转结果2分析:因为上述程序履行时,标准输出设施,在lockf(1,1,0)与lockf(1,1,0)lockf(1,0,0)锁定标准输出设施,lockf(1,0,0)解锁中间的for循环输出不会被中止,加锁与不加锁见效不同样。运转结果3分析:程序在调用fork()成立一个子进度后,立刻调用wait(),使父进度在子进度结束以前,向来处于睡眠状态。子进度用exec()装入命令ls,exec()后,子进度的代码被ls的代码取代,这时子进度的
11、PC指向ls的第1条语句,开始履行ls的命令代码。七、实验总结经过此次上机实验的学习,我们一共做了三道题,遇到的第一问题是Linux系统其实不是我们平常使用的Windows系统,还未上手便已产生害怕的心理;遇到的第二个问题,在刚开始搭建环境的时候,.后边的的其实不是手打而是按Tab键引出今后的代码,今后陆陆续续的一些小问题,在老师、学长耐心的帮助下相对轻松地解决了,比较在讲堂上老师的解说与课件的演示,最大的不同样是我更为的直观且真切触摸到了这一学科,在实践的过程中理解了当时逻辑其实不清楚的抽象问题什么是进度,我想在实践的过程中我会更为热爱这个学科并得益匪浅。附录源程序清单程序1#include
12、voidmain()intp1,p2;while(p1=fork()=-1);if(p1=0)putchar(b);elsewhile(p2=fork()=-1);if(p2=0)putchar(c);elseputchar(a);程序2#include#includemain()intp1,p2,i;while(p1=fork()=-1);if(p1=0)lockf(1,1,0);for(i=0;i50;i+)printf(child%d/n,i);lockf(1,0,0);elsewhile(p2=fork()=-1);if(p2=0)lockf(1,1,0);for(i=0;i50;i+)printf(son%d/n,i);lockf(1,0,0);elselockf(1,1,0);for(i=0;i50;i+)printf(daughter%d/n,i);lockf(1,0,0);程序3#include#includemain()intpid;pid=fork();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医精神科工作制度
- 体育馆防疫工作制度
- 儿童游泳室工作制度
- 骨科特殊患者护理
- ktv人员工作制度
- 企业调解室工作制度
- 办公室内部工作制度
- 加拿大一周工作制度
- 劳动法标准工作制度
- 医学心理科工作制度
- 基于STM32单片机的智能水杯设计
- 小学生读书分享图
- 机关单位食堂承包方案
- 基于沉浸式体验下的城市形象构建与传播研究-以西安大唐不夜城为例
- 2025光伏电站巡视规范
- 2024年中信银行社会招聘试题含答案详解(考试直接用)
- 《工业机器人技术基础》课件 2.3.1 工业机器人的内部传感器
- 2025年副高卫生职称-公共卫生类-健康教育与健康促进(副高)代码:091历年参考题库含答案解析(5套)
- 2025年医院麻、精药品培训考试题试题与答案
- 林地勘界协议书
- 2025年成人教育线上学习模式创新中的学习成果认证与转换研究报告
评论
0/150
提交评论