请教老师关于进程状态这部分的几个问题
来源:3-3 进程的五状态模型

Osuribaba
2020-11-30
1. 老师在课程中说,比如 播放ppt,创建 pcb 之后
会去“准备”其他资源。对于“准备”这个词我觉得有点抽象,能否请老师具体说一下从硬件层面上讲系统是怎么“准备”资源的?
2. 操作系统提供 fork 函数用来创建进程,比如一个 c++ 或者 python 之类的语言,假设随便跑个 hello world 我理解在跑的时候应该也是个进程,但是在用这些语言写代码的时候并没有手动去写 fork,请问是语言的编译器去调用的么?还是说有一些其他机制?
3. 然后对于操作系统会给 进程“分配”资源,对于“分配”这个词我感觉也有点抽象,老师能不能说一下从硬件层面讲是怎么分配资源的?
谢谢老师~
1回答
-
都是挺好的问题,看得出同学的思考还是很细致的。
1. “准备”工作硬件会做非常多的事情,我举个例子:从磁盘加载程序、数据的过程,需要先调度磁盘,找到磁道、分区,读取相应数据,同时也需要进行物理内存空间的分配,把相关数据加载到物理内存,这其中有DMA、总线、信号处理,等等的各种机制。
2. 用户程序运行都是有fork的过程的,每个程序都有一个父进程,当在Linux通过命令行启动一个程序的时候,命令行shell本身就是一个进程,通过命令行启动的程序的父进程就是shell进程本身,在启动的时候就是Linux通过fork去创建的,这是操作系统的过程,不是编译器和语言层面的过程。
3. 分配资源这个过程比较复杂,因为和协程关系不大,所以课程上只是概念性的讲解,并没有深入展开,这里可以简单提一下,分配资源,以内存资源为例,需要找到内存的空闲空间,如果空间不足,还会把部分物理内存数据刷到磁盘以空出内存空间,然后将程序数据加载到对应的空闲空间,并把位置记录下来。这些在我的另外一门课《编程必备基础知识》会有比较深入的介绍。
希望对你有所帮助哦。112020-11-30
相似问题