概念
为了使进程并发执行,必须为每一个程序分配一个独立的数据结构PCB(进程控制块),程序段,数据段,PCB构成了进程实体,创建与撤销进程实质上是创建和撤销实体中的PCB,PCB是进程存在的唯一标识
进程在不同角度的定义
- 进程是程序的一次执行过程。
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
- 进程是具有独立功能的程序在一个数据集合上或者说进程实体上运行的过程,它是系统进行资源分配和调度的一个独立单位。
进程的特性
1.动态性
2.独立性
3.异步性
4.并发性
5.结构性
进程的五种状态
1.创建
2.就绪
3.运行
4.阻塞
5.终止
注:进程的管理控制信息是在创建进程时写入PCB信息中的
进程的创建过程如下
1.分配进程id以及pcb
2.为程序、数据、用户栈分配空间,也就是创建实体
3.初始化PCB 包括初始化标志、处理机状态、处理机控制、优先级
4.进程队列满足条件,则将进程插入队列,等待调用
进程的结束分为正常结束与异常结束(非法,负极,特权指令,存储或者I/O故障、操作系统干预等)
进程结束过程如下
- 根据进程pid检索PCB并从中读出该进程的状态。
- 若处于执行状态,则立即终止进程的执行并释放处理机资源。
- 终止子进程。
- 将该进程所拥有的全部资源归还给其父进程或操作系统。
- 删除PCB。
进程的唤醒与阻塞都是通过pid找到PCB,然后对PCB进行进出队列的控制
进程的切换过程为先保存当前进程的数据信息(上下文,数据结构,PCB),然后切换到下一个进程的数据信息(PCB,数据结构,上下文)
PCB包含信息如下
进程描述 | 进程控制和管理 | 资源分配 | 处理机 |
---|---|---|---|
进程标识 | 进程状态 | 代码段指针 | 通用寄存器 |
用户标识 | 进程优先级 | 数据段指针 | 地址寄存器 |
代码入口 | 堆栈段指针 | 控制寄存器 | |
程序外存地址 | 文件描述符 | 标志寄存器 | |
处理机占用 | 键盘 | 状态字 | |
信号量使用 | 鼠标 | ||
进入内存时间 |
各PCB按照进程状态通过链接方式或者索引方式将他们组织起来
进程的通信方式
1.共享存储 操作系统提供共享空间以及互斥工具,数据交换由用户完成
2.消息传递 通过收发消息的原语进行数据交换,信箱发送或者直接发送的方式
3.管道通信
线程的概念
目标:提高进程的并发时所付出的时空开销
概念:线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,它可与同属一个进程的其他线程共享进程所拥有的全部资源
组成:线程id,寄存器集合,程序计数器,堆栈
状态:运行,阻塞,就绪
线程与进程可以从以下维度进行比较
1)调度
2)系统资源
3)并发
4)系统开销
5)地址空间和其他资源
6)通信方式
线程有如下属性
1)轻实体
2)并发执行相同程序
3)共享进程资源
4) 并行性
5)周期性
线程分为用户线程以及内核线程 他们的对应模型有三种
1)1对1 优点在于并发 缺点在于开销
2)多对一 优点在于效率 缺点在于阻塞
3)复合型 综合了前两种的优缺点
进程的同步:进程间的直接制约
进程的互斥:进程间的间接制约
临界资源:只能被一个进程使用的资源
实现临界互斥的方法有
软件方法 设置标志位检查
硬件方法 中断和设置lock&key验证
使用信号量来解决同步与互斥问题
信号量使用两个原语操作p(申请wait) v(释放signal)来访问
管程就相当于一个只能被串行调用的私有函数 ,函数里有初始值,注释说明,以及执行代码
产生死锁的情况
1)不可剥夺资源的竞争
2)互相引用资源
3)互相等待信号量消息
死锁产生时也就意味着申请资源时自己保持得有资源、被申请的资源不可剥夺且具有互斥性,此时也必然会有循环等待,也就是有多个进程参与其中
死锁预防是破坏死锁产生的必要条件
死锁避免是通过算法获取安全分配序列
死锁的解除可以通过剥夺资源、撤销进程、回退进程等方法实现
进程同步问题
1、读写文件且读或者写具有优先权
2、父母儿女放水果吃水果
3、生产者与消费者
4、圆桌哲学家吃饭问题
5、抽烟者问题