1、进程的概念、组成以及特征
(1)概念:进程是动态的,是程序的一次执行过程,是CPU分配资源的基本单位。
(2)组成:进程控制块(PCB):操作系统对进程进行管理工作所需的信息都存在PCB中。PCB中主要包括:进程描述信息、进程控制和管理信息、资源分配清单、处理机相关信息。
程序段:程序代码(指令序列)。数据段:运行过程中产生的各种数据。
(3)特征:动态性(进程最基本的特征)、并发性、独立性、异步性、结构性
2、进程的状态
(1)三种基本状态:运行态、就绪态、阻塞态
运行态:占有CPU,并且在CPU上运行
就绪态:已经具备运行条件,但是由于没有空闲CPU,暂时不能运行
阻塞态:因等待某一事件而暂时不能运行
(2)创建态和结束态
创建态:进程正在被创建,操作系统为进程分配资源,初始化PCB的相关信息
结束态:进程正在从系统中撤销,操作系统会回收进程拥有的资源,撤销PCB
(3)进程状态之间的转换
3、进程控制
(1)进程控制主要是用来实现进程的状态转换。
(2)通过原语实现进程控制。其中“原语”是一种具有原子性(运行一气呵成,不可中断)的特殊程序。具体的原语实现进程控制的过程都可分为三点:
①、更新PCB中的信息(修改进程状态、保存/恢复运行环境)
②、将PCB插入合适的队列
③、分配/回收资源
4、进程通信
(1)什么是进程通信?
进程通信即进程之间的信息交换,因为各进程之间的内存地址空间相互独立,一个进程不能直接访问另一个进程的地址空间,所以通过进程通信来实现进程之间的信息交换,其中操作系统提供了三种进程通信的方法:
共享存储(要互斥地访问共享空间)、消息传递(消息头、消息体)、管道通信(半双工通信)
5、线程
(1)为什么要引入线程?
可以增加并发度,在传统的进程间进行的并发,需要切换进程的运行环境,引入线程之后,是在同一进程之间进行线程的切换,可以减少并发带来的开销。
(2)线程与进程的区别:
线程是处理机调度的基本单位(更准确的来说是内核级线程是处理机调度的基本单位),进程是资源分配的基本单位;
做个简单的比喻:进程=火车,线程=车厢
线程在进程下行进(只有一节车厢,自己是无法运行的)
一个进程可以包含多个线程(一辆火车可以有多节车厢)
不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车)
同一进程下不同线程间数据很易共享(1号车厢换到2号车厢很容易)
进程要比线程消耗更多的计算机资源(采用多列火车相比多节车厢更耗资源)
进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢)
进程可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上)
进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。(比如火车上的洗手间)-“互斥锁”
进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)-“信号量