操作系统-进程和线程

进程

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

** 进程的特点:**

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

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

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

线程

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

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

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

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

并发指在操作系统中,一个时间段中有几个程序都已处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上面,但任意时刻点上只有一个程序在处理机上运行。