操作系统进程管理实验报告


    操作系统进程理实验报告
    实验 进程理
    1.实验目:
    (1)加深进程概念理解明确进程程序区
    (2)进步认识发执行实质
    (3)分析进程争资源现象学解决进程互斥方法
    (4)解Linux系统中进程通信基原理
    2.实验预备容
    (1)阅读Linuxschedh源码文件加深进程理概念理解
    (2)阅读Linuxfork()源码文件分析进程创建程
    3.实验容
    (1)进程创建:
    编写段程序系统调fork() 创建两子进程程序运行时系统中父进程两子进程活动进程屏幕显示字符:父进程显示字符a子进程分显示字符bc试观察记录屏幕显示结果分析原
    源代码:
    #include
    #include
    #include
    #include
    #include

    int main(int argcchar* argv[])

    {
    pid_t pid1pid2
    pid1 fork()
    if(pid1<0){
    fprintf(stderrchildprocess1 failed)
    exit(1)
    }
    else if(pid1 0){
    printf(b\n)
    }
    else{
    pid2 fork()
    if(pid2<0){
    fprintf(stderrchildprocess1 failed)
    exit(1)
    }
    else if(pid2 0){
    printf(c\n)
    }
    else{
    printf(a\n)
    sleep(2)
    exit(0)

    }
    }

    return 0

    }
    结果:

    分析原:
    pidfork()
    操作系统创建新进程(子进程) 进程表中相应建立新表项新进程原进程执行程序程序文数绝部分 原进程(父进程)拷贝两相互独立进程三进程先执行执行完全取决操作系统调度没固定序


    (2)进程控制
    修改已编写程序进程输出字符改进程输出句话观察程序执行时屏幕出现现象分析原
    父进程输出改father process completed
    输出b子进程改输出child process1 completed
    输出c子进程改输出child process2 completed
    运行结果:


    理(1)
    果程序中系统调lockf () 进程加锁实现进程间互斥观察分析出现现象
    加锁代码:
    #include
    #include
    #include
    #include
    #include

    int main(int argcchar* argv[])
    {
    pid_t pid1pid2
    pid1 fork()
    if(pid1<0){
    fprintf(stderrchildprocess1 failed)
    exit(1)
    }

    else if(pid1 0){
    lockf(110)
    printf(child process1 completed\n)
    }

    else{
    pid2 fork()
    if(pid2<0){
    fprintf(stderrchildprocess1 failed)
    exit(1)
    }
    else if(pid2 0){
    lockf(110)
    printf(child process2 completed\n)
    }
    else{
    lockf(110)
    printf(father process is completed\n)
    sleep(2)
    exit(0)
    }
    }

    return 0

    }

    谓进程互斥指两两进程时进入关组享变量界区域否发生时间关错误种现象称作进程互斥lockf()函数文件区域作信号量(监视锁)控制锁定进程访问(强制模式记录锁定)试图访问已锁定资源进程返回错误进入休态直资源解锁定止面三进程存时进入组享变量界区域现象输出原相

    (3)
    a) 编写段程序实现进程软中断通信
    求:系统调fork() 创建两子进程系统调signal() 父进程捕捉键盘中断信号(DEL键)捕捉中断信号父进程系统调Kill() 两子进程发出信号子进程捕捉信号分输出列信息终止:
    Child Process 1 is killed by Parent
    Child Process 2 is killed by Parent
    父进程等两子进程终止输出信息终止:
    Parent Process is killed
    代码:
    #include
    #include
    #include
    #include
    #include
    #include

    int wf
    void waiting()
    {
    while(wf0)
    }
    void stop()
    {
    wf 0
    }
    int main(int argcchar* argv[])

    {

    pid_t pid1pid2

    pid1 fork()

    if(pid1<0){

    fprintf(stderrchildprocess1 failed)

    exit(1)

    }

    else if(pid1 0){
    wf 1
    signal(16stop)捕捉父进程传16信号继续执行
    waiting()执行
    lockf(110)

    printf(Child Process 1 is killed by Parent\n)

    lockf(100)

    exit(0)



    }

    else{

    pid2 fork()

    if(pid2<0){

    fprintf(stderrchildprocess1 failed)

    exit(1)

    }

    else if(pid2 0){



    wf 1

    signal(17stop)
    捕捉父进程传17信号继续执行
    waiting()执行
    lockf(110)

    printf(Child Process 2 is killed by Parent\n)

    lockf(100)

    exit(0)

    }

    else{

    wf 1
    wf1时执行直捕捉键盘传信号
    signal(SIGINTstop)
    捕捉键盘传信号执行stop函数
    waiting()

    kill(pid116)子进程p1发软中断信号16
    kill(pid217)
    子进程p2发软中断信号17
    wait(0)

    wait(0)

    printf(Parent Process is killed\n)

    exit(0)

    }

    }

    return 0

    ctrl+c运行结果:


    软中断般指指令int引起伪中断动作——CPU制造中断假象硬中断实实8259连线触发中断kill函数原型:int  kill(pidsig)pid 组进程标识符参数sig发送软中断信号signal函数原型:signal(sigfunction) 软中断信号序号作参数调函数说收软中断信号sig调函数function子进程1收软中断信号16时调函数stop()解waiting继续执行等印完child process 1 is killed by parent退出子进程2说父进程阶段直处waiting状态(执行wait(0))直两子进程退出父进程会退出
    ctrl+c信号会发传进程中进程受该信号会立刻终止子进程收ctrl+c信号时终止根会等父进程传软中断信号会印出child process1 is killedchild process2 is killed

    b) 面程序中增加语句signal(SIGINT SIGIGN) signal(SIGQUIT SIGIGN)观察执行结果分析原
    ctrl+c运行结果:




    signal(SIGINT SIGIGN)signal(SIGQUIT SIGIGN)作屏蔽键盘传中断信号子进程接收父进程传软中断信号进两句话印出

    (4)进程道通信
    编制段程序实现进程道通信
    系统调pipe() 建立条道线两子进程P1P2分道写句话:
    Child 1 is sending a message
    Child 2 is sending a message
    父进程道中读出两子进程信息显示屏幕
    求父进程先接收子进程P1发消息然接收子进程P2发消息
    源代码:
    #include
    #include
    #include
    #include
    #include

    int main(int argcchar* argv[])
    {
    pid_t pid1pid2
    int fd[2]
    char parbuf[50]childbuf[50]
    pipe(fd)建立道
    pid1 fork()
    if(pid1<0){
    fprintf(stderrchildprocess2 failed)
    exit(1)
    }
    else if(pid1 0){
    lockf(fd[1]10)
    sprintf(childbufChild 2 is sending a message\n)
    write(fd[1]childbuf50)道中写东西
    sleep(5)
    lockf(fd[1]00)
    exit(0)
    }
    else{
    pid2 fork()
    if(pid2<0){
    fprintf(stderrchildprocess1 failed)
    exit(1)
    }
    else if(pid2 0){
    lockf(fd[1]10)
    sprintf(childbufChild 1 is sending a message\n)
    write(fd[1]childbuf50)道中写东西
    sleep(5)
    lockf(fd[1]00)
    exit(0)
    }
    else{
    wait(0)等某子进程结束
    read(fd[0]parbuf50)道中读东西
    printf(sparbuf)
    wait(0)等某子进程结束read(fd[0]parbuf50)道中读东西printf(sparbuf)
    exit(0)
    }
    }

    return 0

    }
    运行结果:


    值注意pipe(fd)pid1 fork()两句位置调换否会出现面结果:



    说子进程1通道父进程发送信息程序直退出strace命令追查发现
    果先forkfork两独立进程两独立进程中分调pipe两独立fd数组子进程fd[1]写 入父进程fd[0]读取父进程会堵read根没进程写父进程fd[1]


    4.思考
    (1)系统样创建流程?
    系统通调fork函数创建进程进程调fork系统会创建子进程子进程父进程方进程ID父 进程ID样象符进程 克隆(clone)样时子进程父进程分道扬镳执行操作先执行子进程先执行父进程取决核调度算法 旦子进程创建父子进程相互竞争系统资源时候希子进程继续执行父进程阻塞直子进程完成务时候调wait者 waitpid系统调 
    (2)执行文件加载时进行处理?
    注册执行文件加载模块(包含信息:链表list属module加载执行文件加载享库)然遍历链表次module加载执行文件

    (3)首次调新创建进程时入口里?
    进程队列ready状态离父进程执行调度入口父进程处
    (4)进程通信什特点?
    (针道通信)
    支持单数流
    具亲缘关系进程间
    没名字
    道缓区 限(道制存存中道创建时缓区分配页面)
    道传送格式字节流求道读出方写入方 必须事先约定数格式少字节算作消息(命令记录)等等
    总结
    通次实验操作系统进程章容更深入理解次实验四部分组成第部分重点进程创建linx操作系统中进程创建需调fork函数函数调次返回两次第二部分重点进程互斥谓进程互斥指两两进程时进入关组享变量界区域通编程更加理解概念进程互斥通lockf()实现第三部分重点通kill()函数signal()函数深入理解进程间软中断前者发送软中断信号者接收软中断信号第四部分重点通pipe()函数理解进程间道通信
    次实验学调试方法中strace追查程序中函数调道通信中fork()pipe()函数序意调换调换引起问题(程序直退出)strace命令追查发现父进程blockread()面父进程知道里读取信息进通查阅资料知fork()pipe()函数序问题



    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    操作系统课外实践报告Linux进程管理

    操作系统课外实践报告项 目 名 称: Linux 进程管理 所 在 班 级: 软件工程(10.Ne...

    1年前   
    317    0

    进程调度算法的实现计算机操作系统课程设计

    题目2 进程调度算法的实现2.1 题目的主要研究内容及预期达到的目标(1)设计进程控制块; (2)设计多个进程队列; (3)设计多个进程(≥20); (4)动态生成时间片、执行时间和优先级,...

    3年前   
    582    0

    驱动程序实验报告操作系统课程设计报告

    操作系统课程设计报告班级: 计科 姓名: 学号: 老师: 时间:2012年X月X日一、设计目的操作...

    1年前   
    297    0

    操作系统实验报告C语言实现银行家算法

    实 验 报 告题 目名 称C语言实现银行家算法院 系信息科学与工程学院班 级完成时间指导老师本次实验成绩组长联系电话邮件地址组员(姓名,学号)主要任务程序算法的编写、实现、运行调...

    3年前   
    467    0

    计算机操作系统内存分配实验报告

    计算机操作系统内存分配实验报告一、实验目的熟悉主存的分配与回收。理解在不同的存储管理方式下,如何实现主存空间的分配与回收。掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方式及其实...

    3年前   
    603    0

    成本与进程管理中文-2.2

     本文档由香当网(https://...

    6年前   
    18317    0

    成本与进程管理中文-2.1

     本文档由香当网(https://...

    12年前   
    5395    0

    模拟进程创建、终止、阻塞、唤醒原语操作系统原理

    操作系统原理 题 目:模拟进程创建、终止、阻塞、唤醒原语院 (部): 管理工程学院专 业: 信息管理与信息系统班 级: 信管姓 名: 学 号: 实验题目一:模拟进...

    3年前   
    543    0

    精细化管理进程报告

    西安市住房保障和房屋管理局 城市精细化管理工作进展情况汇报 根据市考办发[2013]35号文件《关于印发西安市城市精细化管理工作考核办法的通知》精神,结合我局工作实际,开展了一系列的整治活...

    5年前   
    1017    0

    操作系统实验(进程调度+存储管理+磁盘调度++银行家算法+文件系统设计)

    操作系统实验(进程调度+存储管理+磁盘调度++银行家算法+文件系统设计)实验三 进程调度一、 实验目的多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处...

    3年前   
    642    0

    山东大学大二下学期操作系统实验报告

    操作系统实验报告计算机科学与技术学院 计算机科学与技术专业2012级X班 目录一、 进程控制实验 31.1 实验目的 31.2示例实验 31.2.1实验内容 31.3独立实验 41.3.1...

    3年前   
    685    0

    信息管理系统实验报告

    信息管理系统实验报告班级: 财务管理班 成员: 指导老师: 2012食堂信息系统调查大纲• 一、引言• 二、系统需求分析• 三、可行性分析• 四、概念结构设计• 五、逻辑结构设计• ...

    2年前   
    538    0

    管理软件实验报告

    管理软件实验报告  实验目的  主要填写对实验的目的和要求  实习时间:  2012年12月22日,8:40在6c504听老师讲解抄作详情,公司要求,工作流程,在当日早9:45分开始进行分组抄...

    12年前   
    419    0

    管理学实验报告

    1  引言 不真正进入社会,怎么能了解社会呢?在这次试验中,给我收获最大的就是自己能够理解“很多工作需要摸索和探索,要不怕吃苦,勇于激流勇进,有的工作虽然单调又重复,但这是磨练意志最有效的方...

    13年前   
    14784    0

    实验报告管理系统报告

    软件项目设计报告实验报告管理系统所在班级小组成员学院名称信电工程学院专业名称计算机科学与技术指导教师起止日期2014.12.16-2015.1.152015年1月15日目 录1 绪...

    2年前   
    317    0

    IT管理:提升IT预算进程的五种途径

    IT管理:提升IT预算进程的五种途径对IT行政者而言,预算进程经常是一种非常紧迫的任务,尤其是他们面临持续的费用压力并需要展示他们技术投资的商务价值的时候。专栏作家James Champy提出...

    11年前   
    550    0

    备战操作系统

    操作系统 操作系统概念:操作系统是控制其他程序运行,管理资源并为用户提供操作界面的系统软件的集合。 操作系统的功能有:处理机管理、存储管理、外围设备管理(又称I/0设备管理)、文件管理和操...

    9年前   
    7528    0

    测量实习进程记录

    测量实习进程记录  时间  组长  赵宗元  组别  第八组  组员  张雪、张震、周伟平、朱文超  7月11日  全体组员到实验室领取测量实习所需要的仪器。  在领取完仪器后,全体组员参与对...

    10年前   
    649    0

    毕业实习进程安排

    毕业实习进程安排  为进一步加强毕业实习管理工作,根据学院统一部署,现就管理系电子商务、公共事业管理专  业专科毕业实习计划安排如下:  一、XX-XX学年度第一学期   1、第4周前 完成提...

    9年前   
    670    0

    ccs总体进程

    2006年2月ccs总体进程工作项目12345678910111213141516171819202122232425262728大纲设计收集资料

    9年前   
    499    0

    文档贡献者

    文***享

    贡献于2022-10-24

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档