进程
1:定义
进程:具有独立功能的程序在一个数据集合上运行的过程
进程的作用:实现了操作系统的并发性和共享性
2:构成
使用进程控制块(PCB)控制进程
程序段+数据段+PCB构成
1)进程控制块
PCB是实体进程的一部分,进程存在的唯一标识。系统通过操纵PCB表来控制和管理进程。
https://blog.csdn.net/DFF1993/article/details/79845445

3:特征
1)动态性:作为程序的一次执行,具有创建、活动、暂停、终止等过程。
2)并发性:多个进程实体同时存在内存中,在一段时间内同时运行。
3)独立性:进程实体独立运行,独立获得资源与接受调度的基本单位。
4)异步性:进程各自独立的、不可预知的速度执行。
5)结构性:配置独立的PCB进行描述。其结构由三部分构成
4:进程状态
1、基本状态:
1)运行态:进程正在处理机上运行。
2)就绪态:进程已获得除处理器之外的所有资源。一般等待进程较多,存在于就绪队列。
3)阻塞态:进程正在等待某一事件而停止运行,此时处理机空闲也不能运行。
2、其他状态:
4)创建态:进程正在被创建,尚未分配足够的资源到达就绪态。
5)结束态:进程正从系统中消失,包括进程正常结束或其他原因中断。等待系统收回资源

5:进程控制(一般在内核支持下完成)
1、进程创建
允许一个进程创建另一个进程
创建过程:
1)为新进程申请基础资源:包括进程号,PCB块
2)为进程分配运行资源,包括内存空间,数据空间等,若资源不足,进入阻塞态
3)初始化PCB,包括标志信息,处理器状态,处理器控制信息,进程优先级
2、进程终止
引发进程终止原因:正常结束,异常结束,外界干预
终止过程:
1)根据终止进程标识符,检索PCB,获得进程状态
2)若被终止进程处于执行状态,立即停止进程执行,释放处理器资源。如果该进程还有子孙进程,则先终止子孙进程
3)释放进程所占有的所有资源,归还给父进程/操作系统。
3、进程阻塞和唤醒
使用阻塞原语实现进程的阻塞(仅有运行态的进程才可以主动阻塞)
阻塞过程:(原语)
1)根据进程标识号找到阻塞线程的PCB
2)如果进程为运行态则保护数据,将状态变化为阻塞态,停止运行
3)将PCB插入就绪队列,等待调度程序进行调度
唤醒过程:(原语)
1)在事件的等待队列中找到对应的进程PCB
2)将其从等待队列移动到就绪队列,并设置状态为就绪态。
4:进程切换
处理器从一个进程的运行转到另一个程序的运行。
进程切换过程:
1)保存处理器上下文,包括程序计数器和其他寄存器
2)更新PCB信息
3)把进程的PCB一如相应的队列,例如某事件的阻塞队列、就绪队列
4)选择运行的进程,更新PCB相应内容
5)更新内存管理的数据结构
6)回复处理器上下文
5:进程通信
1、共享存储
通信的进程中存在可直接访问的共享空间,通过对这个空间进行读写操作实现信息的交换。使用同步互斥操作(P,V操作)进行 读写操作的限制。必须使用系统调用实现共享空间
共享存储分为:1:共享的数据结构 2:共享的存储区。

2、消息传递
进程间的数据交换以格式化的消息为单位。通过系统原语:发送消息,接受消息实现数据交换。
1)直接通信方式:进程之间直接发送消息给对方。并将收到的消息放到消息缓冲队列上。
2)间接通信方式:使用中间实体(信箱)转发消息。
3、管道通信(半双工-单向数据传输)
管道:连接读进程与写进程的一个共享文件(又称pip文件),实现通信。管道机制必须提供三方面的能力:互斥,同步以及确定对方存在。

特点:从管道读取数据是一次性操作,数据一旦被读取,就从管道中被抛弃。管道只能采用半双工通信,某一时刻只能单向传输,要实现父子进程互动通信,需要定义两个管道。
线程
1:线程概念
轻量级进程,程序执行流的最小单位,也是基本的CPU执行单元,由线程ID,程序计数器,寄存器集合和堆栈组成。是进程中的实体,被系统独立调度和分配的基本单元,不具有自己的系统资源。同一个进程中的线程共享进程的全部资源。线程之间可以相互创建。
2:进程和线程的比较

暂时写到这里吧