前言
第一次写博客,第一次学操作系统,如果有错误,麻烦大家评论纠正,万分感谢!但是我知道,肯定没人看,还是自己留着看吧。(网课b站-王道论坛)一、进程的定义、组成、组织方式和特征
1.进程的定义和组成
程序是一个指令序列。
早期的计算机,只支持单道程序处理。简而言之就是CPU、内存、I/O设备只为一个程序进行相关的服务。一个内存中存放着程序段和数据段,程序段存储的是代码,数据段存储的是运行的结果、数据、变量等等。
在后来的计算机发展到多道批处理技术,内存中就有了PCB(Process Control Board)的出现,它用于存储程序代码存放的位置,包含操作系统对其进行管理所需要的各种信息。创建进程可以说是创建PCB,撤销进程可以说是撤销PCB,由此得知PCB是进程存在的唯一标志。
进程实体/进程映像 |
---|
PCB |
程序段 |
数据段 |
所以进程的定义如下几点:
进程重在过程,这里强调它的动态性,可以总结为进程是进程实体的运行过程。
2.进程的组织方式和特征
由于进程实体的PCB数以千计,所以需要我们对进程进行管理,对PCB进行组织。
进程的组织主要分为两种方式,链接方式和索引方式。它们通过对进程不同的状态对PCB进行分类,不同的点在于链接方式是通过指针指向PCB序列,而索引方式是通过指针指向索引表,索引表的各个表项再指向进程的PCB。
进程的特征分为以下五点:
- 动态性(进程是进程实体的运行过程)
- 独立性(进程是系统进行资源分配、调度的独立单位)
- 并发性
- 异步性
- 结构性
二、进程的状态与转化
进程是程序的运行过程,运行时有的占用了CPU,有的则在等待CPU的运行,我们将进程的状态分为以下五种:
- 创建态(进程被创建,操作系统为它分配资源,初始化PCB)
- 就绪态(“万事俱备,只欠CPU)
- 运行态(占用CPU)
- 阻塞态(等待一件事的发生而暂时不能运行)
- 终止态(进程从系统种撤销,操作系统回收相应的资源,撤销PCB)
三、进程控制
什么是进程控制?
进程控制是对系统中的进程进行管理,各种进程状态的相互转换。
进程控制如何实现?
通过原语进行进程控制。(原语是一气呵成,不可中断的;通过关中断和开中断指令,在核心态下使用。)
无论是哪一种进程转换,原语无非有以下三种操作:
- 更新PCB的信息。
- 将PCB插入合适的序列。
- 分配/回收资源。
四、进程通信
进程通信就是进程之间的信息交换。
各种进程拥有的内存地址空间相互独立,一个进程不能直接访问另一个进程的地址空间,而为了实现信息交换,确保进程之间的安全性,操作系统提供了如下几个方法:
- 共享存储
-共享空间的访问是互斥的,不能进行同时进行访问 - 管道通信
-开辟了固定大小的缓冲区,管道空间同样是互斥的,其中如果信息为空或信息未写满,则不能读,信息未读则不能写。
-管道采用的是半双工通信方式,某一段时间内只能实现单向的传输。
-数据一旦被读出,就会被管道抛弃,意味着读进程只能有一个。 - 信息传递
-格式化消息(消息头|消息尾)👈和报文类似
五、线程概念和多线程模型
首先我们简单地阐述一下程序、进程和线程,举个栗子:
早期计算机的程序只能一个一个执行,比如QQ音乐和QQ分开运行;后来计算机的进程则有并发性,多个程序可以同时进行;而QQ又可以进行聊天、视频和传输文件,这里我们就引用了线程。
线程是基本的CPU执行单元,是程序执行流的最小单位,是调度的基本单位。
对比进程带来的变化有以下几点:
- 资源分配调度(进程是资源分配的单位,线程是调度的单位)
- 增加了并发性
- 系统开销变小
线程的实现方式分为两种:用户级线程(用用户的视角看到的进程)和内核级线程(操作系统内核来管理完成的,是处理机分配的单位)。
多线程模型:
- 多对一:开销小,效率高;但是并发性低,在多个用户级线程在多核计算机上不能用。
- 一对一:并发性高;成本大,开销大。
- 多对多:对以上两种方式的优点进行了中和。
总结
本小节学习了什么是进程,进程的特征以及进程的操作、控制、通信和扩展(多对多线程模型)。
这知识可真难进脑啊,救命了,博客也难写,书也难读,难以想象别人跨专业是怎么考研的。