操作系统-进程和线程

文章目录

进程

PCB是进程存在的唯一标识。用于控制进程中的资源。
进程是程序的一次性执行过程,具有“动态性”。
进程实体是由程序段,数据段,PCB三部分组成。进程的管理者(操作系统)所需的数据都在PCB中,程序本身运行所需的数据放在程序段和数据段中。

进程的特点:

动态性:进程是程序的一次性执行过程,是动态的产生,变化和消亡的;
并发性:内存中有多个进程实体,各个进程可以并发执行。(并发:进程轮流的被CPU所执行,CPU切换速度很快,所以在用户看来好像是一起执行了多个进程,称为并发)
独立性:进程是能够独立运行,独立获得资源,接受调度的基本单位。
异步性:各进程按各自独立的,不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题。
结构性:每个进程都会配置一个PCB。结构上看,进程由程序段,数据段,PCB组成。

进程的状态–三种基本状态
运行态:占有CPU,并在CPU上运行;(单核处理机环境下,每一时刻最多只有一个进程处于运行状态)
就绪态:已经具备运行条件,但是由于没有空闲CPU,而暂时不能运行。(完事具备,只欠CPU)
阻塞态:因等待某一事件而暂时不能被运行,比如说需要等待其他进程运行的结果,所以自己主动转换到阻塞态。
在这里插入图片描述
进程同步
进程具有异步性。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。(并发必然导致异步性)
同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调他们的工作次序而产生的制约关系。进程间的制约关系就是源于他们之间的相互合作。比如说进程之间的管道通信,读进程和写进程并发的进行,由于并发必然导致异步性,因此“写数据”和“读数据”两个操作执行的先后顺序是不确定的。而实际应用中,又必须按照“写数据–读数据”这种顺序来执行的,因而引入同步的概念。

进程互斥
我们把一个时间段只允许一个进程使用的资源称为临界资源,许多物理设备(比如打印机/摄像头)都属于临界资源。此外还有许多变量/数据/内存缓冲区都属于临界资源。
对于临界资源的访问,必须互斥的进行。进程互斥指当某一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源后,另一个进程才能去访问临界资源。
–进入区,可理解为上锁;
–临界区:访问临界资源的那段代码;
–退出区:负责解除正在访问临界资源的标志,可以理解为“解锁”
–剩余区:做其他处理

进程调度算法
1.先来先服务
2.短进程优先
3.时间片轮转调度算法
4.高响应比优先调度算法
其中先来先服务,短进程优先算法都会导致进程饥饿现象发生;高响应比优先调度算法是综合考虑等待时间和执行时间的一种进程调度算法。

线程

传统的进程是程序执行流的最小单位,在引入了线程之后,线程成为了程序执行流的最小单位,可以把线程理解成为轻量级的进程。
线程是一个基本的CPU执行单元,也是程序执行流的最小单位。
引入线程之后,不仅是进程之间可以并发,线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内可以并发处理各种任务(如QQ视频,文字聊天,传文件)
引入线程后,进程只能作为除CPU之外的系统资源的分配单元(如打印机,内存地址空间等都是分配给进程的)。

在这里插入图片描述
在这里插入图片描述
线程互斥:
互斥:指在某一时刻指允许一个进程运行其中的程序片,具有排他性和唯一性。
对于线程A和线程B来讲,在同一时刻,只允许一个线程对临界资源进行操作,即当A进入临界区对资源操作时,B就必须等待;当A执行完,退出临界区后,B才能对临界资源进行操作。
线程同步:
同步:指的是在互斥的基础上,实现进程之间的有序访问。假设现有线程A和线程B,线程A需要往缓冲区写数据,线程B需要从缓冲区读数据,但他们之间存在一种制约关系,即当线程A写的时候,B不能来拿数据;B在拿数据的时候A不能往缓冲区写,也就是说,只有当A写完数据(或B取走数据),B才能来读数据(或A才能往里写数据)。这种关系就是一种线程的同步关系。

应用常见:多线程编程中,难免会遇到多个线程同时访问临界资源的问题,如果不对其加以保护,那么结果肯定是不如预期的,因此需要线程同步与互斥。

多线程
多线程就是指一个进程中同时有多个执行路径正在执行

并发是指cpu通过时间片轮转调度方式,在进程/线程之间不停的切换服务于不同的线程/进程,在宏观上(用户层面)看起来好像是多个进程在同时执行一样,在微观上其实每一个时刻只有一个进程被执行。

并行是指多个操作指令由多个cpu来完成,它是一种实际意义上的同时执行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章