进程的创建
进程的生存期都基于进程的创建和终止。
当一个新进程被添加到那些正在被管理的进程集合中去时,操作系统需要建立用于管理该进程的数据结构,并在内存中给它分贝地址空间。这是新进程的创建过程。
- 导致进程创建的4个事件
事件 | 描述 |
---|---|
1.新的批处理作业 | 位于磁盘中的批处理作业控制流被提供给操作系统,当其接纳新工作时,它将读取下一个作业控制命令 |
2.交互登录 | 终端用户登录到系统 |
3.操作系统因提供一项服务而创建 | 操作系统可以创建一个进程,代表用户程序执行一个功能,使用户无需等待 |
4.由现有的进程派生 | 基于模块化考虑,或为了开发并行性。用户程序可指示创建多个进程 |
进程终止
- 导致进程终止事件
事件 | 描述 |
---|---|
1.正常完成 | |
2.超过时限 | |
3.无可用内存 | |
4.越界 | 进程试图访问不允许访问的内存单元 |
5.保护错误 | 进程试图使用不允许使用的资源或文件,或以一种不正确的方式使用(如往只读文件中写) |
6.算数错误 | 进程试图进行被禁止的计算,除以零或存储大于硬件可接纳的数字 |
8.I/O失败 | 输入和输出期间发生错误,如找不到文件,超过最多次数仍读写失败,或无效操作(从打印机读、磁盘坏区) |
9.无效指令 | 进程试图执行一个不存在的指令 |
10.特权指令 | 进程试图使用为操作系统保留的指令 |
11.数据误用 | 错误类型或未初始化的一块数据 |
12.操作员或操作系统干涉 | 由于某些原因(存在死锁) |
13.父进程终止 | 终止时,操作西永可能终止该进程的所有后代进程 |
14.父进程请求 | 父进程通常有终止任何后代进程的权力 |
五状态进程模型
1. 新建态:刚创建的进程,操作系统还没有把它加入到可执行进程组中,通常是进程控制块已经创建但还没有加载到内存中的新进程
2. 就绪态:进程已经做好准备,只要有机会就开始执行。
3. 阻塞态:进程在某些事情发生前不能执行,如I/O操作完成。
4. 运行态:该进程正在执行,计算机只有一个处理器,那一次最多就只有一个进程处于此状态。
排队模型
阻塞队列处可有多个事件并发等待
有挂起状态的进程状态转换图
- 挂起态: 内存中所有进程都处于阻塞状态时,操作系统可以把其中一个进程置于挂起态,并将它转移到磁盘中,内存中释放的空间可被调入的另一个进程使用。
- 单个挂起:
- 两个挂起态:
- 阻塞/挂起态:进程在外存中,并等待一个事件
- 就绪/挂起态:进程在外存中,只要被载入内存就可执行