操作系统中多个易混淆的概念

线程和进程

进程 线程
根本区别 进程是操作系统资源分配的基本单位 线程是任务调度和执行的基本单位
开销方面 每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销 线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小
内存分配方面 系统在运行的时候会为每个进程分配不同的内存空间 除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源
所处环境 操作系统中能同时运行多个进程(程序) 在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
包含关系 没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的 线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程

线程之间在数据空间、代码和内存空间方面都是共享的。

中断与异常

程序的执行往往不只是按顺序执行那么简单,一些异常和中断则会打断顺序执行的程序流,转而进入一条完全不同的执行路径。

中断 异常
来源 由外部设备产生 异常由CPU内部产生,与指令有关
原因 有设备要为CPU提供服务 异常根据产生的原因和严重性可以分为如下三类,错误(Fault):由某种错误情况引起,一般可以被错误处理程序纠正。 陷阱(Trap):指在执行了一条特殊指令后引起的异常。陷阱是有意的异常,陷阱最重要的用途是在用户和内核之间提供一个像过程一样的接口(即系统调用)。 终止(Abort):指严重的不可恢复的错误,将导致程序终止。
特点 会保留现场

在这里插入图片描述

同步和异步

同步和异步是描述网络中通信模式的概念。

同步:进行交互的双方步调必须一致,即发送方发送数据A给接收方后,必须收到来自接收方对数据A的确认之后,才会再发送数据B。
异步:进行交互的双方步调不是必须-致,即发送方发送数据A给接收方后,不必收到接收方对数据A的确认即可发送数据B。

可见异步通信的效率要高于同步通信,因为异步通信的发送方端不需要等待确认之后再发送后续数据。

阻塞和非阻塞

阻塞和非阻塞用来描述进程处理调用的方式,在网络通信中主要指网络套接字Socket的阻塞和非阻塞方式,而Socket的实质也就是I/O操作。

阻塞:就是线程在执行IO操作获取数据时,这个IO可能会需要一定的时间才能等到数据返回,然后才能接着执行下面的命令。那么,此时,这个线程的等待状态我们就把它称为阻塞。没有充分利用起cpu的资源。
什么是非塞:还是这个线程在进行IO操作时,无需等待数据的返回,可以接着往下执行代码命令。cpu资源充分利用。

Socket阻塞调用方式:调用结果返回之前,当前线程从运行状态被挂起(挂起,这个线程就没法用了),一直到调用结果返回之后,才进入就绪状态,获取CPU后进入执行态执行。
Socket非阻塞调用方式:如果调用结果不能马上返回,当前线程也不会挂起,而是立即返回执行下一个调用。

并发和并行

并发指的是程序的结构,“并行指的是程序运行时的状态。

并行(aralle):指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。单线程永远无法达到并行状态。要达到并行状态,最简单的就是利用多线程和多进程。
在这里插入图片描述
并发(concurrency):指在同一时刻只能有一指令执行, 多个进程指令被快速的轮换执行,使
得在宏观具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
当我们说这个程序是并发(concurrency) 的,实际上,这句话应当表述成“这个程序采用了支持并发的设计。正确的并发设计的标准是:使多个操作可以在重香的时间段内进行。比如两个函数(例如一个是处理行情的函数,一个是处理交易的函数)从始至终,在任何一个时间点上都只有一段代码在执行,但是,由于taskl和task2在重叠的时间段内执行,所以这是一个支持并发的设计。与并行不同,单核单线程能支持并发。

在这里插入图片描述

其他概念

多核(Multi-Core):是指在一片处理器中包含两个或两个以上的独立的内核,可以在单位时间内同时处理多个线程。

超线程:每个单位时间内,CPU只能处理一个线程(Thread)。除非有两个核心处理单元,否则要想在单位时间内处理超过一个的线程是不可能的。
超线程HT(Hyper-Threading)技术是在单个核心处理单元中集成两个逻辑处理单元,也就是一个实体内核(共享的运算单元),两个逻辑内核(有各自独立的处理器状态),从而可以在单位时间内处理两个分别进行整数和浮点运算的线程,模拟双内核运作。

通信:是指进程之间的信息交换。 程间通信的方式 :信号(signal)通信机制、管道(pipeline)通信机制、消息传递(message passing)通信机制、信号量(semaphore)通信机制、共享主存(shared memory)通信机制

死锁:在一组进程中,每个进程都等待被该组进程中其他进程所占有的资源,从而无限期陷入僵持的局面,这种现象称为死锁。(ps:产生死锁的必要条件,处理死锁的基本方法)。

猜你喜欢

转载自blog.csdn.net/qq_40741808/article/details/106503546
今日推荐