5.进程的状态与转换:
(1)进程的三种基本状态:
运行态
就绪态
阻塞态/等待态
(2)进程的另外两种状态:
创建态
终止态
(3)进程状态的转换:
- 创建态->就绪态->运行态->结束态
就绪态->运行态:进程被调度。
运行态->就绪态:时间片到,或CPU被其他高优先级的进程抢占。
- 创建态->就绪态->运行态->阻塞态->就绪态
运行态->阻塞态:等待系统资源分配,或等待某事件发生(进程自身做出的主动行为)。
阻塞态->就绪态:资源分配到位,等待的事件发生(被动行为)。(4)七态:上面五种 + 挂起就绪态、挂起阻塞态。
挂起:将进程从内存挂起到外存,暂不参与进程调度。
6.进程控制:
(1)什么是进程控制?
实现进程状态转换。
(2)如何实现进程控制?
用原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成。这种不可被中断的操作就是原子操作。
原语采用“关中断指令”和“开中断指令”实现。
只允许在核心态下执行的特权指令。
(3)进程控制相关原语的作用:
①更新PCB中的信息。
②将PCB插入合适的队列。
③分配/回收资源。
(4)相关原语
进程的创建(创建原语)
进程的终止(撤销原语)
进程的阻塞(阻塞原语)
阻塞和唤醒要成对出现。
进程的唤醒(唤醒原语)
进程的切换(切换原语)
7.进程通信:
(1)进程通信:进程之间的信息交换。
(2)进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不允许直接访问另一个进程的地址空间。
(3)进程通信方式:
共享存储:通过操作系统提过的共享空间来完成通信。两个进程对共享空间的访问必须是互斥的。
基于数据结构的共享:速度慢、限制多,低级通信方式。
基于存储区的共享:速度更快,高级通信方式。
管道通信:在内存中开辟一个大小固定的缓冲区。
管道只能采用半双工通信,某一时间段内只能实现单向的传输。若要实现双向同时通信,则需要两个管道。
各进程要互斥地访问管道。
数据以字符流的形式写入管道。
如果没写满,就不允许读。如果没读空,就不允许写。写满时,不允许再写。读空时,不允许再读。
数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读出数据的情况。
消息传递:进程间的数据交换以格式化的消息为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。
一个格式化的消息可以分为两部分:消息头和消息体。
消息传递方式:
直接通信方式:消息直接挂到接收进程的消息缓冲队列上。
间接通信方式/信箱通信方式:消息要先发送到中间实体(信箱中)。如:计网中的电子邮件系统。