进程
一、程序
程序是指令的有序集合,它是静态的。
程序顺序执行 时的特征有:
①顺序性
一个程序会严格按照规定次序执行
②封闭性
程序执行时会独占系统的所有资源,资源的状态只有本程序能改变。程序开始执行之后,其执行结果不会受到外界影响。
③可再现性
程序执行时的环境与初始条件相同,当程序重复执行,都将会获得相同的结果。
程序并发执行 时的特征有:
①间断性
由于并发执行,多个程序轮流占用时间片,就会出现程序暂停的情况
②失去封闭性
由于是并发执行,所以多个程序会共享计算机的资源,从而失去了封闭性。
③不可再现性
由于是并发执行,多个程序由于彼此执行的速度不同,还存在着交替执行的情况,所以就算初始条件和运行环境不变,也不能再现条件。
二、进程
为了使程序能够并发执行,并且在程序并发执行的时候能够进行控制和描述,从而引进了进程的概念,进程是 一个程序在数据集上运行 的过程 ,它是动态的。它是系统进行资源分配和调度的基本单位(在引进线程之前,进程是调度的基本单位)。
进程的特征:
动态性:
进程的实质是进程实体的一次执行过程,故动态性是进程最基本的特征。动态性还表现在:"它由创建而产生,由调度而执行,由撤销而消亡"。可见,进程实体有一定的生命期,而程序则只是一组有序指令的集合, 其本身并不具有运动的含义,因而是静态的。
并发性:
并发性是指多个进程能够同时存在内存中,并且在同一时间间隔运行。引入进程就是为了程序能够并发执行。程序没有PCB控制块,所以无法并发执行。
异步性:
异步性是指进程是以不可预知的,各自独立的速度运行。
独立性:
独立性是指进程是一个能够独立运行,独立接收资源分配,独立进行调度的基本单位。
PCB进程控制块:
进程实体由程序段、相关数据段、PCB三部分构成。
三、线程
操作系统引入进程是为了程序能够并发执行,并且便于描述和控制并发程序,以提高资源利用率和系统吞吐量。而**引入线程是为了减小进程切换带来的开销。**引入线程之后,进程只是资源分配的基本单位,不再是任务调度的基本单位。线程才是任务执行和调度的基本单位。
线程的特征有:
轻型实体 :
线程除了必要的资源外,不拥有系统的资源
任务执行和调度的基本单位
可并发执行
同一个进程中的多个线程或不同进程中的多个线程都可以并发执行
共享进程资源
同一个进程中的多个线程共享该进程占用的全部系统资源。
四、进程的三种状态

五、进程管理
进程控制
进程控制是进程管理中最基本的功能,它用于创建一个新的进程,终止一个完成的进程,中止一个因为某种原因阻塞的进程。它还可以负责进程的状态转换。
想要控制进程,就需要使用原语 ,原语是一系列机器机器指令的集合,原语的操作是原子性的,集合中的所有指令要么都执行,要么一条也不执行。 原子操作在核心态(管态)下执行。
用于进程控制的原语有创建原语、撤销原于、阻塞原语、唤醒原语,其中创建原语只会执行一次。
创建原语 的执行过程:
进程通信
进程通信其实就是指进程间的信息交换。进程之间的互斥、同步其实就是在进行通信,只不过互斥和同步传递的信息都很少。随着计算机发展,进程需要更高级的通信方式,这些方式可以分为三大类:
①共享存储器通信、②消息传递、③管道通信
共享存储器系统
1.共享数据结构通信
在这种通信方式中,要求进程共享一个数据结构以实现信息的交换,这种信息交换方式能够传递的数据较少。效率较低。
2.共享存储区通信
为了传输大量的数据、在存储器中划出一块分区,用于进程共享,进程可以对共享区的数据进行独写来实现进程通信。
消息传递
消息传递是现在使用较广泛的一种方式,在微内核计算机与服务器通信时常用消息传递,消息传递根据实现方式不同可以分为直接通信 和间接通信。
1.直接通信
操作系统通过通信原语直接向目标进程发起通信,目标进程也可以使用原语直接接收消息。这两个原语是send 和receive
2.间接通信
间接通信方式指进程之间的通信需要通过作为共享数据结构的实体。该实体用来暂存发送进程发送给目标进程的消息;接收进程则从该实体中取出对方发送给自己的消息。通常把这种中间实体称为信箱。消息在信箱中可以安全地保存,只允许核准的目标用户随时读取。信箱可由操作系统创建,也可由用户进程创建,创建者是信箱的拥有者。
信箱可以由操作系统创建,也可以由用户创建,创建者是信箱的拥有者,可以把信箱分为三类:
①私用信箱
信箱的拥有者只能从信箱中读取消息,其它用户只能向信箱写消息,该信箱作为创建进程的一部分,创建者进程结束,该信箱就结束。
②公用信箱
公用信箱由操作系统创建,核准进程可以向公用信箱写消息,也可以从公用信箱读消息。公用信箱可以在系统运行期间始终存在。
③共享信箱
共享信箱由进程创建,进程可以指定谁能使用该共享信箱
管道通信
"管道",是指用于连接一 个读进程和一一个写进程以实现它们之间通信的一一个共享文件,又称pipe文件。管道是单向的,写进程视管道文件为输出文件,以字符流的形式把大量数据送入管道;读进程视管道文件为输入文件,从管道中接收数据。这种方式首创于Unix系统。
Windows中的通信方式:
六、进程同步
进程同步的主要任务是对多个进程进行执行次序上的协调,使并发的进程能够更好的共享资源,合作完成任务。
临界资源、临界区
临界资源
在一段时间内只允许一个进程访问的资源叫做临界资源,临界资源是互斥使用的,比如计算机中的打印机,同时只能给一个进程使用,打印机就是临界资源。
临界区
每个进程访问临界资源的那段代码叫做临界区。在访问临界资源时,代码会先检查临界资源是否空闲,这段检查代码叫做进入区;代码执行完成之后也会告诉其它进程,临界资源已经使用完毕了,这段代码叫做退出去。
同步机制应该遵循的规则
记住这16字真言!
空闲让进
忙则等待
有限等待
让权等待
信号量
信号量机制是一种进程同步工具,它用信号量及P、v操作来实现进程的同步和互斥。信号量的数值与相应资源的使用情况有关
当数值>0时,表示当前可用资源数量;
当数值<0时,其绝对值表示等待使用该资源的进程个数。
该值仅能由P操作、V操作改变(p、v操作是低级通信方式)
P就是申请资源、V是释放资源