《深入理解计算机系统》之进程 并发 上下文 线程 超线程 程序 应用程序

568 浏览发布于 作者 zouyang (欢迎转载-请注明出处链接)留下评论分享按钮

1、进程
是计算机科学中最重要和最成功的概念之一。
像hello world这样的程序在计算机中运行时,操作系统会提供一种假象,就好像系统上只有这个程序在运行,看上去只有这个程序在使用处理器、主存和I/O设备。处理器看上去就像在不间断地一条接一条地执行程序中的指令,即该程序的代码和数据是系统存储器中唯一的对象。这些假象是通过进程的概念来实现的。进程是操作系统对一个正在运行的程序的一种抽象
在一个系统上可以同时运行多个进程。而每个进程都好像在独占地使用硬件。

2、而并发运行,则是说一个进程的指令和另一个进程的指令是交错执行的。在大多数系统中,需要运行的进程数是多于可以运行它们的CPU个数的。传统系统在一个时刻只能执行一个程序,任何时刻单核处理器系统都只能执行一个进程的代码,而先进的多核处理器同时能够执行多个程序。

3、上下文概念:无论是在单核还是多核系统中,一个cpu看上去都像是在并发的执行多个进程,这是通过处理器在进程间的切换来实现的。操作系统实现这种交错执行的机制称为上下文切换
操作系统保持跟踪进程运行所需的所有信息状态,这种状态就是上下文。上下文包括许多信息,例如PC和寄存器文件的当前值,以及主存的内容。

4、线程:一个进程可以由多个线程组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。多线程之间比多进程之间更容易共享数据。线程有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。

5、超线程:有时称为同时多线程。是一项允许一个CPU执行多个控制流的技术。它涉及到CPU某些硬件有多个备份,比如程序计数器和寄存器文件;而其他的硬件部分只有一份,比如执行浮点运算的单元。常规的处理器需要大约20000个时钟周期做不同线程间的转换,而超线程的处理器可以再单个周期的基础上决定要执行哪一个线程(我个人的理解是因为有些硬件设备不止一份,所以不要进行保存上下文和恢复上下文的操作,只是在一个未使用的硬件设备上来执行一个新的线程)。这样使得CPU可以更好地利用它的处理资源。例如,假设一个线程必须等到某些数据被装载到高速缓存张,那么CPU就可以继续去执行另外一个线程。举例来说,Intel Core i7处理器可以让一个核执行两个线程,所以一个4核的系统实际上可以并行的执行8个线程。

6、程序:一个进程就是一个程序。

7、应用程序:一个应用程序(application)通常由多个程序组成。

补充理解:《漫画算法》
进程:就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。
线程:从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。线程拥有自己的栈空间。
对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。
协程:英文 Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。协程的暂停完全由程序控制,线程的阻塞状态是由操作系统内核来进行切换。这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。有哪些编程语言应用到了协程呢?如:Lua、Python、Go、Java……

想要打赏,请点击这里

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注