操作系统(一)
《计算机操作系统》
进程
为了能使程序并发运行,并且可以对并发执行的程序加以描述和控制,人们引入了进程这一概念
什么是进程?
进程是程序并发运行的独立单位
进程是具有独立功能的程序在数据集合上的一次运行,是系统进行资源分配和调度的独立单位
在多道程序环境下,并发执行程序使得程序失去其封闭性、具有了间断性、以及不可复现性(难以控制)。–>有了并发运行的单位–进程;因此进程的特性有:
- 动态性 – 进程是程序的部分执行,是动态产生与销毁的
- 并发性 – 作为并发的单位,当然可以并发执行
- 独立性 – 作为并发的单位,需要独立的执行
- 异步性
伴随着进程生命周期有多个状态的转换,进程状态有: 创建、就绪、执行、阻塞、终止
进程是由 PCB 及资源构成。在创建进程时,则是先申请一个空白 PCB,并向 PCB 中填写用于管理和控制进程的信息,然后为进程分配运行时所必须的资源;之后在进程调度中进行就绪、执行、阻塞的转换。
之前我们说到了 PCB,也就是进程控制块。这个数据结构就是支持进程能够并发运行。主要特性有:
- 能实现间段运行方式 – 通过保留 CPU 现场信息
- 提供进程管理所需要的信息
- 实现与其他进程的同步与通信
PCB 的具体结构有:
- 进程标识符
用来唯一标识进程,有内部标识符与外部标识符 - 处理机状态
也称为处理机上下文,主要就是 寄存器信息、指令计数器洗脑洗、程序状态字信息、用户栈指针 - 进程调度信息
进程状态、进程优先级、。。。 - 进程控制信息
程序和数据的地址、资源清单
PCB 也就是一个进程具体的数据结构,可以用线性连接的方式或者链表连接的方式将他们组织起来。
进程同步与进程通信
进程同步–多道程序并发执行提高了系统的吞吐量,但是也使系统变的复杂,为了使多个进程间有条不紊的运行,进程之间需要协调同步,保证程序执行的可再现性
进程同步机制有:硬件同步机制、信号量同步机制、管程机制
而进程通信则是进程同步需要进程通信以达到进程有序执行的协调。因此二者并非同意概念。
- 什么是进程同步?
进程同步的主要目的是对多个相关进程在执行次序上进行协调,是并发执行的诸进程之间按照一定的规则或者次序共享系统资源,并能够很好的相互何做,从而使程序的执行具有可再现性。
- 为什么要进程同步?
因为进程对系统资源的无序争斗会给系统造成混乱,致使程序处理结果存在不确定性
进程之间的运行存在者制约关系使得他们会趋向于同步:间接制约与直接制约
对于临界资源进程间只能互斥的访问(即同一时刻只有一个进程才可以访问。比如打印机等)
对于同步机制应当遵循以下规则:
- 空闲让进
- 忙则等待
- 有限等待
- 让权等待
进程同步中经典案例则是:生产者消费者问题
- 什么是进程通信
进程通信是指进程之间的信息交换。由于进程的互斥与同步,需要在进程之间交换一定的信息,这种进程通信是低级通信;而相对的,进程间传送大量的数据,则为高级通信
具体的进程通信方式有以下几种:
- 共享存储器系统
- 管道通信系统
- 消息传递系统
- 客户机-服务机系统
- 套接字
- 远程过程调用(RPC)
线程
20 世纪 60 年代,人们引入了进程的概念解决了多道程序并发的问题,知道 80 年代,进程都是作为能拥有资源和独立调度(运行的基本单位);在 80 年待中期,人们引入了比进程更小的单位–线程,将进程中资源与调度剥离,线程在进程内部负责调度,大大提供高了系统吞吐量
回顾进程,进程是一个可拥有资源的独立单位,并且可以独立调度与分派(运行),进程创建时,需要创建一个空白的 PCB,然后系统填充进程信息,接着申请进程所需要操作的资源;在进程销毁时,有必须先对其所占资源执行回收操作,再撤销 PCB;在整个流程中时消耗过大的。每次进程的切换,都伴随着 CPU 状态的保存以及进程进行切换,但是进程内部存储信息过多,包含着资源,所以切换代价也是昂贵的。
因此,将进程中资源与调度分离,调度由更小的单位线程负责
线程的实现分为内核级线程与用户级线程。内核级线程有系统支持实现,用户级线程在软件层面实现
进程与线程异同
- 定位、概念不同
进程是资源和调度的独立单位
线程是调度的基本单位 - 并发性
线程并发行更加高 - 拥有资源
进程拥有系统资源,而线程有一点点 LTS - 独立性
进程间独立,线程间共享进程资源 - 系统开销
进程切换以及创建销毁非常耗费资源
本文作者 : 对六
原文链接 : http://duiliuliu.github.io/2019/04/19/操作系统一/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
你我共勉!