进程管理:
进程
CPU调度
进程同步
死锁
进程
基本概念
进程实体:又称进程映像,由数据段、程序段和PCB组成。(静态)
进程:是进程实体的运行过程==(动态
性)==
进程是资源分配的基本单位,在无线程引入之前还是CPU调度的基本单位。
进程VS程序:
进程是程序及其数据在计算机上的一次执行过程,是动态的概念,而程序是有序指令的集合,是静态的概念。
进程是程序的一次执行过程,是动态的创建和消亡的,具有一定的生命周期,是暂时存在的;而程序是指令的集合,可长期保存在计算机之中。
一个进程可以执行一个或几个程序,一个程序也可以构成多个进程。
进程可以创建进程,而程序不可以形成新的程序。
从静态来看,进程实体不仅包括程序段,还包括数据段和PCB。
PCB是进程存在的唯一标志。创建进程实质就是创建进程的PCB,而撤销进程实际上就是撤销进程的PCB。
七状态模型
进程控制
进程创建:(创建原语)分配PID,申请并填写PCB;若资源不足则转为阻塞态而非创建失败。
进程终止:(撤销原语)终止执行该进程及其子进程,回收系统资源,在所在队列删除对应PCB。
进程阻塞:(Block/阻塞原语)因进程主动申请某种资源而由运行态主动转为阻塞态。
进程唤醒:(wakeup/唤醒原语)当PCB期待的事件发生后用唤醒原语唤醒进程。
阻塞原语和唤醒原语需成对使用;阻塞原语是由于所执行进程主动申请,而唤醒进程则是由一个与被唤醒进程合作或其他相关的进程实现的。
进程切换:(切换原语)保留当前运行环境以及程序计数器、其他寄存器;恢复待执行进程运行环境;更新PCB信息。
进程通信
管道通信
消息传递
共享存储
共享存储
通过共享存储区实现进程通信,但对共享资源的访问操作需要使用同步互斥工具(PV操作)来进行控制。
其中又分为基于数据结构的低级共享和基于存储区的高级共享。
消息传递
以格式化的消息为单位进行直接或间接通信。直接通信即指把消息挂至对应进程消息缓冲队列中;间接通信通过中间实体(通常称为邮箱)进行通信。
管道通信
管道也是一种文件。实行半双工通信。即同一时间只能单向传输;且未写满不可读,未读空不可写;只支持读一次。
线程
线程是“轻量级进程”。是CPU执行单元,也是程序执行流的基本单元。CPU的调度以线程为基本单位。而线程几乎不占据资源,其共享所在线程的资源,而线程内部的数据非共享。
线程VS进程:
线程是系统资源调度的单位,而进程是系统资源分配的基本单位。
线程基本不拥有资源,共享所在进程的资源,而进程是资源分配的基本单位,拥有资源。
线程的提出更好的实现了并发性。
同一进程之间的线程进行切换所用的开销较小,而不同进程之间的线程进行切换所用开销开销加大。
同一进程之间的线程共享资源,通过读/写进程数据段便可实现线程之间的通信;而进程之间的通信需要使用通信互斥工具PV操作来实现。
线程无独立的地址空间,但包含CPU线程,可以独立执行程序,但不可脱离进程。
进程的实现分为用户级线程和内核级线程。
用户级线程由应用程序实行线程之间的切换,而内核意识不到用户级线程。对于OS内核来说,实质上只有单线程在工作。因此系统开销小,但多用户级线程之间容易形成阻塞,一个阻塞就会导致全部线程阻塞。
内核级线程由OS内核进行线程管理工作,系统开销大,但各线程之间相互独立。