进程实体由三部分组成:
PCB(进程控制块):
进程描述信息
进程控制和管理信息
资源分配信息
处理机相关信息
(以.exe的文件存储在硬盘中,在程序运行之前需把他从硬盘读入内存中,操作系统会为他建立一个相对应的进程,【PCB 指令序列 数据段】cpu从内存中读入指令)
程序段:
程序的代码
数据段:
运行过程中产生的各种数据 例如:用户定义的变量
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。PCB是进程存在的唯一标志。
进程的特征:动态性 并发性 独立性 异步性 结构性
进程状态的转换
进程的状态:新建态 就绪态 运行态 阻塞态 终止态
新建态创建一个进程所其他需要的东西,准备就绪后进入就绪态此时还没有CPU,运行态使用CPU运行进程,若是有其他资源不满足就会进入阻塞态此时不占用CPU,CPU给其他进程使用,就绪状态的进程等待系统资源的分配,资源分配到位的话就回复运行态
,执行完毕进入终止态,还会有其他的情况(遇到不可修复的错误)也会进入终止态,终止态下CPU会收回所有的资源,最后删除PCB,进程消失。
另外也会有进程直接从运营态直接到就绪态的情况,例如:时间片用完了,或者CPU被其他优先级更高的进程抢占了。
进程控制
什么是进程控制?
进程控制的主要功能就是对系统中所有的进程实施有效的管理,它具有创建新进程、撤销已有进程,实现进程的切换的功能。
如何实现进程的控制?
用原语(原语一种简单的程序,具有原子性,就是一旦开始就必须执行完。)原子性是通关两种特权指令来实现的“关中断指令”、“开中断指令”。
控制进程的相关原语
进程的创建
创建原语
申请一个空白的PCB
为进程分配所需的资源
初始化PCB
将PCB放入就绪队列
引起进程创建的事件
用户登录
作业调度
应用请求
提供服务
进程的终止
终止言语
从PCB集找出进程终止的PCB
剥夺CPU,将CPU交给其他进程使用
终止它的所有子进程
撤销进程所有的资源还给系统或者父亲进程
删除PCB
引起终止的事件
正常结束
异常终止
外界干预
进程的阻塞
阻塞原语
在PCB集里找到阻塞的PCB
保护进程运行现场,将PCB设置成为阻塞态,暂停进程运行。
将PCB插入相应事件的等待队列
引起阻塞的事件
等待系统分配某种资源(主动)
需要等待与其他相互合作的进程
进程的唤醒
唤醒原语
在等待的PCB集中找到要唤醒的PCB
从等待队列中移除,设置状态为就绪态。
将PCB插入就绪队列中,等待被调度
引起唤醒的事件
等待事件发生
进程的切换
切换原语
将运行环境信息存入PCB
PCB移到相应队列
选择另一进程,并更新PCB
根据PCB恢复新进程所需要的运行环境信息
引起进程切换的事件
当前进程的时间片到了
遇到具有更高优先级的进程
应用程序主动请求阻塞
当前进程的终止
进程通信
共享存储
基于数据结构的共享
基于存储区的共享
···首先两个进程共享是互斥的,操作系统只提供共享空间和同步互斥工具。
信息传递
消息由消息头和消息体构成,消息头有表明该谁接收消息,进程通过发送/接受两个原语来收发消息。
直接通信方式
消息直接挂在进程接受消息的缓冲队列上
间接通信方式
间接通信方式是把消息直接发送到信箱(中国实体)里。
管道通信
什么是管道通信?就是在内存中开辟大小固定一个缓冲区。
在管道通信中一个管道只能实现半双工的通信(一个管道在一段时间内只能实现单向的传输),如果实现双向同时通信则需要两个管道。
各进程应是互斥的访问管道
当管道进程一没写满的时候是不允许读的,当进程二没读完的时候也是不允许写的。如果进程一写满的话,进程一就会阻塞,当管道数据被读完时,进程又会被阻塞。