1.进程概念:
【1】定义:进程是程序关于某一个数据集合上的一次运行活动。是系统进行资源分配和调度的独立单位。进程是正在运行的程序的抽象,将一个cpu虚拟为多个cpu。
【2】进程和程序:
(1)进程在内存,是在内存中运行着的一个程序的实例,是程序的一次执行,是活动实体,有生有消,又短暂的生命周期;进程可以创建进程。
(2)程序在外存:是进程的代码部分,是静止实体,是相对长久的。
【3】内存中的进程:两个可以和同一程序相关联,但是当做两个单独的执行序列。
/*每个都是单独进程,虽然文本段相同,但是数据,堆和堆栈段却不同*/
/*进程本身可以作为环境*/
【4】进程实体:由程序段、相关的数据段(用户相关)和进程控制块PCB(process control block)(寄存器和内核相关)三部分构成进程实体,也成为“进程映像”,PCB是进程存在的唯一标志。
!内核 !
(1)批处理os:作业
(2)分时os:用户程序或用户
【5】进程的基本状态:
(1)new:分配新的pid和pcb的新进程因为因为内存资源有限等原因,还未加载到内存中
(2)就绪(ready):已具备运行条件,等待分配处理器
(3)运行(running):进程正在执行。
(4)阻塞(waiting/blocked):因等待一件事情而暂时不能运行的状态
(5)terminated(中止):回收资源但保留一段时间pcb
【6】上下文切换:进程运行时,其硬件状态保存在cpu的寄存器中,所以当处理器进行进程切换时将新进程的pcb调入送到相对应寄存器中,这称为上下文切换
【6】进程的特点:
(1)并发性(统一时间间隔内,有同时推进多个的效果,实质上每一个时刻都只有一个在执行但却有同时执行多个的体验)
(2)动态性:进程是正在执行程序的实例,动态产生,动态消亡,在生命周期内,三种状态之间切换
(3)独立性:进程是资源分配和调度的一个独立单位
(4)交互性:进程在执行过程中可能产生直接或间接的关系
(5)异步性(不可预知,走走停停,相对独立):每个进程都以其相对独立、不可预知到速度向前推进。
2.进程调度:
【1】不同os的不同进程调度设计目的
(1)多道化程序os:无论何时都有进程运行
(2)分时os:在进程之间快速切换cpu
【2】进程调度队列(对应进程的三种状态的积蓄而分的存储空间):
【3】三级调度:
(1)长程/作业/高级调度:将ready状态中的作业/任务按某种算法选择一个或一批,为其建立进程,然后进入内存,并且在作业/任务完成时,还负责回收系统资源。用来控制多道程序的度(内存中进程的数量)
(2)中程/交换/中级调度:为提高系统吞吐量和内存利用率而引入的内外存对换swap的功能
(3)短程/进程/低级调度:进程调度使用最频繁,要求高效率。主要任务是按某种算法将处理及分配给一个处于就绪状态的进程。
<1>短程调度的三个机制:排队器,分派器,上下文切换(进程的硬件状体保存在cpu中,切换进程也会被更新为新进程的硬件状态,也就是上下文切换)
<2>引起短程调度的事件:
3.进程运行:
【1】进程控制
(1)原语primitive:完成某种特定功能的一段程序,具有不可分割性和不可中断性。即原语的执行必须是连续的,在执行过程中不允许被中断。也即原子操作。
【2】进程创建的过程:
(1)给新进程分配一个唯一标识以及进程控制块(PCB,PID)
(2)为进程分配地址空间(分派器)
(3)初始化进程控制块,设置默认值(PCB初始化)
(4)设置相应的队列指针(排队器)
/*分别对应三个短程调度机制*/
【3】进程创建:
(1)父进程和子进程并发执行
(2)父进等待,知道子进程终止
4.进程间通信:
【1】基本通信方式:
(1)消息传递:信息传递则是由操作系统提供机制,让协作进程能通过消息
· 传递来进行通信。
①通过系统调用实现,因此需要更多的内核介入时间消耗;
②用于交换少量数据很有用,不需要避免冲突
(2)共享内存:共享内存的通信方法要求进程共享一个内存区域,并且需要
程序员自己明确编写访问和操作共享内存的代码。
①快速方便的通信,可以达到内存的速度;
②仅在建立内存区时需要系统调用,此后的访问都被处理为
常规的内存访问,不需要内核的帮助。
(3)管道:利用一种传输介质——内存或文件连接两个相互通信的进程
【2】协同进程:
独立进程:不会影响到另一个进程的执行会被另一个进程执行影响
协同进程:与独立进程相反。