操作系统第二次作业

这篇博客主要探讨了操作系统创建进程的步骤,包括申请PCB、分配资源、初始化和插入就绪队列。还讨论了进程的入口点在fork()函数调用后如何返回,并解释了程序多次运行结果不同的原因及如何通过进程同步控制实验结果的随机性。具体涉及了进程同步的概念、wait()函数的作用,以及wait()和exit()如何影响实验结果。
摘要由CSDN通过智能技术生成

1.系统是怎样创建进程的?
   (1)申请空白PCB(进程控制块);
   (2)为新进程分配资源;
   (3)初始化PCB;
   (4)就新进程插入就绪队列;
2.当首次调用新创建进程时,其入口在哪里?
fork()函数被调用一次,但返回两次;两次返回区别在于:子程序返回值是0,而父进程返回值是子进程的ID。子进程和父进程运行相同的代码,但是有自己的数据空间。
3.程序的多次运行结果为什么不同?如何控制实验结果的随机性?
多个进程的并发执行,每个进程都有先获取cpu的可能性,故而哪一个进程先执行是随机的。可以通过等待,睡眠的等操作来实现多个进程的同步。

(1)可执行文件加载时进行了哪些处理?
进程用exec( )装入命令ls ,exec( )后,子进程的代码被ls的代码取代,这时子进程的PC指向ls的第1条语句,开始执行ls的命令代码
(2)什么是进程同步?wait( )是如何实现进程同步的?
进程同步是指多个相关进程在执行次序上进行协调,以使并发执行的主进程之间有效的共享资源和相互合作,从而使程序的执行具有可再现性。
首先程序在调用fork()创建了一个子进程后,马上调用wait(),使父进程在子进程调用之前一直处于睡眠状态,这样使子进程先运行,子进程运行exec()装入命令后,然后调用wait(0),使子进程和父进程并发执行,实现了进程同

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值