进程与线程(1):基本问题、进程控制、进程通信
为了使参与并发执行的每个程序(及其数据)都能并发执行,在操作系统中必须为之配置一个专门的数据结构,称为进程控制块(Process Control Block, PCB)。系统利用PCB来描述进程的基本情况和活动过程,进而控制和管理进程。由程序段、相关数据段、PCB就构成了进程实体。
典型的进程的定义
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
进程状态及转换
就绪(Ready)
进程已经处于好运行的状态
执行(Running)
进程已经获得CPU,程序正在执行
阻塞(Block)
正在执行的进程由于发生事件(如IO请求,申请缓冲区失败)暂时无法继续执行时的状态,进程执行受到阻塞。
状态转换
为了满足PCB对数据及操作的完整性要求以及增强灵活性,通常在系统中又引入了两种常见状态:创建和终止
进程管理的数据结构
控制表的一般结构
进程通信
进程之间要传送大量数据时,应当利用OS提供的高级通信工具,主要是OS隐藏了实现进程通信的具体细节,向用户提供了一组用于实现高级通信的命令,用户可以方便地直接利用它实现进程之间的通信。或者说通信过程是对用户透明的,这减少了通信程序编制的复杂性。利用高级通信命令可以高效地传送大量数据。
进程通信的类型
- 共享存储器系统
- 相互通信的进程共享某些数据结构或共享存储区,进程之间利用这些空间进行通信。
- 管道通信
- 向管道(共享文件)提供输入的发送进程(写进程)以字符流形式将大量的数据送入管道,接收管道输出的接收进程(读进程)从管道中读数据。为协调双方通信,管道必须能够:互斥、同步、确定对方是否存在。
- 消息传递系统
- 以格式化的消息为单位,将数据封装在消息中,并利用OS提供的一组通信命令(原语)在进程间消息传递。
- 客户机-服务器系统
- 网络环境上的主流通信方式,主要有套接字、远程过程调用和远程方法调用。