操作系统——进程、线程、并发、并行等

进程和线程

进程:资源分配的最小单位进程可以看作是一个程序,同一时刻进行的进程数小于核心数。

但是!!单核CPU也是可以进行多进程的(amazing~)它的实现原理是这样的:

同一时刻只能有一个进程进行,但是它可以在多个线程之间快速的进行切换,当从一个线程切换到另一个线程时,需要保护现场(有点像断点)所以进程拥有自己的地址变量、全局变量等硬件资源,一边切换回去能继续工作。

线程:线程就理解为进程的单元,一个程序是不是由多个内部任务组成的呢?每个内部任务就是一个线程,因为它称为微进程,是程序的最小组成单位。

线程可以共享进程的大部分资源,参与进程的资源调度,它是在进程中来回切换的 举个栗子~

我们看视频时,输出的声音和呈现的画面可以看成是两个线程,当我们拖动进度条的时候,如果没有线程的参与,那么会出现声音和画面不同步的效果。

所以应该是多个线程参与,分别执行不同的任务,加快程序的处理~~~

区别:

1、进程是资源分配的最小单位,线程是独立运行和独立调度的基本单位(CPU 上真正运行的是线程)

2、进程拥有自己的资源空间,一个进程包含多个线程;线程与CPU资源分配无关,多个线程共享一个进程的资源

3、线程的切换和调度远大于进程的切换和调度

并发和并行

并发

在操作系统中,某一时间段,几个程序在在同一个 CPU 上运行,但在任意一个时间点,只有一个程序在 CPU 上运行

如果多个线程,只有一个CPU时,不可能真正实现多个线程同时运行,CPU的运行时间就会被划分成多个时间段,这些时间段就会分配给各个线程,当一个线程运行,其他线程挂起时,这种情况就是并发;

并行:

当操作系统有多个 CPU 时,一个 CPU 处理 A 线程,另一个 CPU 处理 B 线程,两个线程互相不抢占 CPU 资源,这种方式成为并行

区别:

并发:宏观上感觉是在同时执行多个程序,微观上,每一时刻只有一个线程在运行,这些线程是分时交替运行的

并行:在多CPU系统中,每个CPU执行一个程序,是真正的多个程序同时运行

阻塞和非阻塞

阻塞:调用进程或线程时被操作系统挂起

非阻塞:指调用线程或者进程不会被操作系统挂起  

同步和异步

  • 同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,知道收到返回信息才继续执行下去

  • 异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率

猜你喜欢

转载自blog.csdn.net/lucky_ferry/article/details/120616254