1.进程的机械状态
我们通常说,进程就是运行的程序。进一步进程,我们要先了解进程的机械状态。
程序运行时,要执行指令。而指令在内存中,读取和更新的数据也在内存中,内存是进程的一个机械状态。
程序运行时,还需要读取更新一些寄存器,寄存器也是进程的一个机械状态。(包括一些特殊的寄存器,例如PC程序计数器)
2.进程的运行状况
进程有运行,就绪和阻塞状态。
运行:在运行状态下,进程正在CPU上运行,也就是正在执行指令。
就绪:在就绪状态下,进程已经准备开是运行,但是因为系统某种原因,不会在此时运行。
阻塞:在阻塞状态下,进程因为某种条件缺失暂停运行,进程要等待其条件满足后才可以变成就绪态,准备运行。
当进程从就绪变成运行时,叫做调度。当从运行状态变成就绪态,叫做取消调度。运行的程序因为某种情况,例如等待IO口数据,这时候进程就变成了阻塞态。这时他就会交出CPU控制权,这时其他就绪的进程就会开始运行。当阻塞的进程完成IO或者其他数据,就会从阻塞态变成就绪态。当运行的进程运行结束后,他就可以开始运行了。
3.程序如何启动
1. 程序启动第一件事情就是从把代码和静态数据加载到内存中,加载到进程的地址空间中。
2.然后系统会初始化一些堆栈和IO口,堆是一些未初始化的变量申请空间的地方,比如使用malloc()函数进行申请。栈是函数,函数参数,变量,返回地址存放的地方。
系统完成1,2步操作后,程序运行的舞台就搭建完成,找到程序入口,main()函数,就开始运行程序。
4.进程信息保存
系统中相应的数据结构会保存进程的重要信息,例如进程停止时,这些数据结构会保存进程的寄存器等,当把这些信息重新放回物理内存时,进程就又开始运行了。