进程![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6c3eadf33a4439bb4b46794464744de4.png#pic_center)
- 进程:一个正在执行的程序,与之相关的有进程的地址空间和进程表(记录了某个进程的地址,便于再次调用需要的信息)
进程模型
(1)进程模型
- 一个进程就是一个正在执行程序的实例,包括程序计数器、寄存器和变量的当前值。就好比他们有自己的CPU,当然真正的CPU只是在进程之前来回切换,这种切换称作多道程序设计
- 每个进程都有自己的逻辑计数器,但都装载在真正的物理计数器中,一段时间后,所有进程都运行了,但给定瞬间只有一个进程在运行,如下图
进程比喻
(2)创建进程
- 进程创建的步骤
系统初始化、执行了正在运行的进程苏鸥调用的进程创建系统调用、用户请求创建一个新进程、一个批处理作业的初始化 - 守护进程:停留在后台(等待请求,获得请求才被调用)处理注入电子邮件、web页面、等活动的进程
- 一个进程创建另一个进程,但是新进程对原进程没有相互作用时,效果最佳
- Windows和Uinx创建进程时的区别:
Unix 一个进程通过调用fork(一个系统调用)创建一个新进程,此时的进程和父进程的地址映像相同,子进程(新的)再执行一个execve或者类似,修改该自己的存储存储映像来运行一个新的程序,两步走的原因就是,获得时间间隔来处理信息(文件描述符等)
Windows则是一个win32函数本身调用CreateProcess,处理进程的创建,其中的参数包括要执行的程序,输入,安全属性等
地址空间:windows父子的地址空间不同,而Unix有段不可写空间是共享的
(3)进程终止、 - 正常退出(exit(U)、ExitProcess)、错误退出、严重错误(中断))、被其他进程杀死
(4)进程层次
Unix:有父子进程,类似多叉树,每个进程只有一个父进程
Windows:没有层次概念,每个进程的地位都相同,但是父进程在创建子进程的时候会获得一个句柄,可以用来控制子进程,也可以把它交给其他进程
(5)进程的状态 - 进程在逻辑上不能运行的时候会发生阻塞
①等待进程所需的数据(等待输入)
②操作系统的系统调度 - 有三种状态:运行态、就绪态、阻塞态
(6)进程的实现
-
进程表
-
中断向量:当磁盘发生中断,计算机执行下面的1号操作,然后跳到中断地址,执行下面![