在这个内容中,我们讲述的是进程的基本的功能介绍。当然这里并没有把进程同步添加上去,在后续的文章中会继续介绍进程同步。以下内容多为总结,结合自己手敲和参考部分内容学习。接下来就介绍后续的知识点吧。
1、进程控制 1.1 进程控制的概念进程控制就是进程管理中最基本的功能,它包括创建新进程、终止已经完成的进程、将因发生的异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换等功能。
简单来说,就是实现各种进程之间的状态转换。
1.2 实现进程控制一般而言,我们使用原语来实现进程控制。原语的特点在于执行期间不允许中断,只能一气呵成。这种不可中断的操作叫做原子操作。
原语一般采用”关中断指令“和”开中断指令“实现。
- 关中断不会受到外部中断信号的干扰;
- 开中断会受到外部中断信号的影响,并执行下一步中断处理程序。
一般而言,原语都是运行在核心态中。因为关/开中断指令权限大,所以必然是只允许在核心态下执行的特权指令。
大多数内核都包括以下两大功能:
1.4 进程控制相关的原语
- 时钟管理:实现计时功能
- 中断处理:负责中断机制的实现
- 原语:一个特殊的程序,它处于操作系统最底层,是最接近硬件的部分。具有原子性,运行时间短,调用频繁。
进程控制就是进程状态的转换,无论哪个原语都是做以下三件事情:
- 更新PCB的信息
- 将PCB插入合适的队列
- 分配/回收资源
1.4.4 进程的切换
2、进程通信进程通信指的是进程之间的信息交换。进程是负分配系统资源的单位,因此各个进程拥有的内存地址空间相互独立。这就说明一般而言针对安全性,一个进程不能够直接访问其他进程的地址空间;而出现进程通信在于能够保证在此基础上保证进程间的安全通信。
由于进程的互斥与同步,这需要在进程之间交换一定的信息,但是这只能称之为低级进程通信。
在进程之间要传送大量数据时,应当利用OS提供的高级通信工具,包括以下:
- 使用方便
- 高效地传递大量数据
首先这两个进程对共享空间访问是互斥的。
互斥的访问功能是通过操作系统提供的工具实现。操作系统只负责提供共享空间和同步互斥工具。
其中,共享存储又分为基于数据结构的共享、基于存储区的共享。
- 基于数据结构的共享:它在于比如只能放一个10长度的数组,这势必会造成共享方式速度慢、限制多。
- 基于存储区的共享:在内存中画出一个共享存储区,数据的形式、存放的位置都是由进程控制决定而非操作系统。
如上图所示,这就是管道通信。管道简单来说就是在内存开辟一个大小相对固定的缓冲区。管道的特性还有如下;
1、管道只能采用半双工通信方式,即只能一个时间段内实现单向传输。
2、各进程要互斥的访问管道
3、数据以字符流形式写入数据,当管道写满时,系统调用写进程于阻塞状态;等待后续读进程数据取走完后,管道变空,此时系统调用读进程于阻塞状态。
4、如果没有写满就不允许读;同理可知没有读完就不允许写。
5、数据一旦读出就从缓存中被抛弃,这意味着读进程最多只有一个否则就有可能读错数据——意思在于管道只负责读数据前后的数据存储
可能事实上更加广泛使用如下图的管道通信:
2.3 消息传递进程间的数据交换以格式化的消息为单位,其结构如下:
消息传递包括直接通信方式和间接通信方式(信箱通信方式)。
直接通信和间接通信之间直观上最本质的区别在于是否有中间体。
总结以上就是进程的基本管理,后续会讲述线程的概念—谢谢大家的阅读。
消息传递包括直接通信方式和间接通信方式(信箱通信方式)。
直接通信和间接通信之间直观上最本质的区别在于是否有中间体。
总结以上就是进程的基本管理,后续会讲述线程的概念—谢谢大家的阅读。



