进程的描述与控制
一:进程的描述
1、进程的定义
引入进程实体的概念后,可以把进程定义为:
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
注:严格来说,进程实体和进程并不一样,进程实体是静态的,进程则是动态的。不过,除非题目专门考察二者区别,否则可以认为进程实体就是进程。因此我们也可以说"进程由程序段、数据段、PCB三部分组成"
2、进程控制块PCB
系统为了管理进程设置的一个专门的数据结构,存放了用于描述该进程情况和控制进程运行所需的全部信息。
进程控制块PCB ( Process Control Block)是进程组成中最关键的部分,是系统对进程进行控制和管理的依据,是进程存在的唯一标志。当系统创建一个新进程就要为它创建一个PCB;当进程终止后,系统收回其PCB,该进程在系统中就不存在了。
进程与PCB是一一对应的。
3、进程的状态
二:进程控制
进程控制的主要任务是对进程生命周期进程控制,即要负责进程的创建、撤消以及实现进程的状态转换和进程通信等功能。这是系统的基本功能,由内核中相应的原语完成。
原语的特点:原子性、中断屏蔽性
三:进程同步
进程同步机制的主要任务,是对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间能按照一定的规则(或时序)共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性。
同步和互斥的区别
1、互斥:亦称间接制约关系。是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
2、同步:亦称直接制约关系。是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。
1、信号量机制
信号量其实就是一个变量 (可以是一个整数,也可以是更复杂的记录型变量) ,可以用一个信号量来表示系统中某种资源的剩余数量(信号量的值如果小于0,说明此时有进程在等待这种资源),比如:系统中只有一台打印机,就可以设置一个初值为 1 的信号量。
2、信号量机制的应用
1、利用信号量实现进程互斥
假如两个进程 A 和 B 都需要某种临界资源,如何实现进程的互斥呢?
为使多个进程能互斥地访问某临界资源,只需为该资源设置一互斥信号量 mutex,并设其初值为1,然后将各进程访问该资源的临界区 CS 置于 wait(mutex) 和 signal(mutex) 操作之间即可。
2、利用信号量实现进程同步(前趋关系)
假如有两个并发执行的进程 P1 和 P2 。P1 中有语句 S1 ;P2中有语句S2。我们希望在S1执行后再执行S2。为实现这种前趋关系,只需使进程 P1 和 P2 共享一个公用信号量S,并赋予其初值为0,将 signal(S)操作放在语句 S1 后面,而在S2语句前面插入wait(S)操作,即
在进程P1中,用S1;signal(S);
在进程P2中,用wait(S);S2;
四:经典进程的同步问题
1、生产者-消费者问题
生产者、消费者共享一个初始为空、大小为n的缓冲区。
● 只有缓冲区没满时,生产者才能把产品放入缓冲区,缓冲区满时,生产者必须等待。
● 只有缓冲区不空时,消费者才能从中取出产品,缓冲区为空时,消费者必须等待。
操作系统总结–进程同步,互斥,信号量机制,生产者消费者:
https://blog.csdn.net/qq_42147969/article/details/117037918
五:进程通信
1、共享存储
2、管道通信
3、消息传递
六:线程的概念和多线程模型
可以把线程理解为"轻量级进程"。
线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)
引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。
进程和线程的关系:
(1) 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2) 资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3) CPU分给线程,即真正在CPU上运行的是线程。