(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),使子进程和父进程并发执行,实现了进程同步。
(3)wait( )和exit&#x
第二次作业
最新推荐文章于 2022-07-15 10:17:39 发布
这篇博客探讨了操作系统如何创建进程,包括申请PCB、分配资源、初始化及插入就绪队列。还讨论了进程的入口点,如fork()函数的调用和返回值差异。文章进一步解释了程序多次运行结果不同的原因——进程并发执行的随机性,并介绍了通过同步操作如wait()来控制进程执行顺序。最后,阐述了进程同步的概念,wait()在进程同步中的作用,以及wait()和exit()如何影响实验结果的随机性。
摘要由CSDN通过智能技术生成