OS基本概念相关

来源:互联网 发布:fullscreen软件 编辑:程序博客网 时间:2024/06/06 17:20

进程、线程、多线程

进程:进程是一个程序在数据集上的运行过程,它并不等同于程序,而是一个程序执行的动态过程,由进程控制块控制。在早期的单处理机多道程序设计计算机中,进程作为操作系统资源调度和分配的最小单元,同时也是程序执行的最小单元。进程的产生使得程序得以并发执行,然而由于进程的创建和撤销伴随着大量系统资源的创建和释放,同时进程调度的开销也很大,这对单处理机的计算机并发性能有很大的制约,为了提升并发效率,线程应运而生。

线程:线程是为了提升并发效率而产生的。线程代替进程作为程序执行的最小单元,以进程为容器,共享进程的系统资源,而线程本身只拥有一点在运行中必不可少的资源。因此,调度创建、释放以及调度线程的开销远比进程小,这样CPU的时间得以充分利用,提升了并发效率。

多线程:一个进程拥有多个线程就称为多线程。各个线程之间共享进程的系统资源,同时线程之间可以创建新进程或者撤销已有进程。

并发与并行

假设当前所论述的计算机OS都实现了线程调度机制。

并发:对于单核处理机的计算机而言,并发就是指CPU按照一定的规律轮流调度内存中的程序执行,这些程序在宏观上是同时执行的,微观上一个时刻只有一个程序在执行。

并行:在多核处理机计算机中,程序不再局限于由单个CPU核心并发执行,而是可以由不同的CPU核心同时执行,这是真正意义上的同时(宏观和微观上都是同时的),也就是并行。

需要注意的是,在多核处理机环境下,由于CPU核数有限,并不是所有线程都是并行执行的。操作系统会合理调度线程的执行环境,各个CPU核心并行执行,同时对于一个CPU核心,其所负责的线程又是并发执行的。事实上现在的多核环境中,并发和并行也没有明确的界定,通常所说的”并发”其实是”并发”和”并行”的结合。

同步与互斥

同步:描述的是各个线程之间直接制约的现象,这种制约源自线程之间的合作。通常的表现形式是:一个由于业务上的需要,一个线程必须等待另一个线程执行完毕才能继续执行,在另一个线程执行完毕之后,该线程只能阻塞等待。

互斥:描述的是不同线程之间间接制约的现象,这种制约源自线程之间对临界资源的争用。这种在同一时刻不能被多个线程访问资源的称为临界资源,程序中对访问临界资源的代码块称为临界区。当一个进程进入临界区使用临界资源,另一个线程要想使用临界资源必须阻塞等待,等前一个线程退出临界区并释放临界资源之后才能继续执行。

两者的区别是:互斥的制约点在于对资源的争用,只要确保临界资源的单一访问即可,无关线程访问的先后;同步的制约点在于任务对线程调度顺序的制约,如果涉及资源,对资源的访问也有严格的访问顺序。

同步与异步

同步和异步的概念不局限于操作系统,它关注的是消息通信机制。

同步:在调用者发出调用之后,调用者必须等到被调用者返回后,其自身才能返回。
异步:调用者发出调用后无需等待被调用者返回,其自身即可返回,被调用者返回的结果通常通过回调来告知调用者。

阻塞与非阻塞

阻塞描述的是线程的一种状态。当线程因某种原因(可能由于同步等待、也可能因为互斥)而无法继续执行,被CPU调入阻塞等待队列中,等待执行条件允许再继续执行。

阻塞和非阻塞通常用来描述同步和异步的执行状态。对于同步而言,调用者发起调用之后必须等待被调用者返回,这期间调用者所在线程阻塞;对于异步,调用者发起调用之后无需等待被调用者返回,调用者线程不阻塞,即非阻塞。

0 0