进程和线程

进程和线程

进程

进程是计算机科学中最重要和最成功的概念之一。
进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程, 而每个进程都好像在独占地使用硬件。而并发运行,则是说一个进程的指令和另一个进程的指令 是交错执行的。在大多数系统中,需要运行的进程数是多于可以运行它们的 CPU 个数的。传统 系统在一个时刻只能执行一个程序,而先进的多核处理器同时能够执行多个程序。无论是在单核 还是多核系统中,一个 CPU 看上去都像是在并发地执行多个进程,这是通过处理器在进程间切 换来实现的。操作系统实现这种交错执行的机制称为上下文切换。为了简化讨论,我们只考虑包 含一个 CPU 的单处理器系统的情况。
操作系统保持跟踪进程运行所需的所有状态信息。这种状态,也就是上下文,它包括许多信 息,例如 PC 和寄存器文件的当前值,以及主存的内容。在任何一个时刻,单处理器系统都只能 执行一个进程的代码。当操作系统决定要把控制权从当前进程转移到某个新进程时,就会进行上 下文切换,即保存当前进程的上下文、恢复新进程的上下文,然后将控制权传递到新进程。新进 程就会从上次停止的地方开始。

线程

尽管通常我们认为一个进程只有单一的控制流,但是在现代系统中,一个进程实际上可以由 多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数 据。由于网络服务器对并行处理的需求,线程成为越来越重要的编程模型,因为多线程之间比多 进程之间更容易共享数据,也因为线程一般来说都比进程更高效。当有多处理器可用的时候,多 线程也是一种使程序可以更快运行的方法。
线程级并发
构建进程这个抽象,我们能够设计出同时执行多个程序的系统,这就导致了并发。使用线 程,我们甚至能够在一个进程中执行多个控制流。从 20 世纪 60 年代初期出现时间共享以来,计 算机系统中就开始有了对并发执行的支持。传统意义上,这种并发执行只是模拟出来的,是通 过使一台计算机在它正在执行的进程间快速切换的方式实现的,就好像一个杂技演员保持多个球 在空中飞舞。这种并发形式允许多个用户同时与系统交互,例如,当许多人想要从一个 Web 服 务器获取页面时。它还允许一个用户同时从事多个任务,例如,在一个窗口中开启 Web 浏览器, 在另一窗口中运行字处理器,同时又播放音乐。在以前,即使处理器必须在多个任务间切换,大 多数实际的计算也都是由一个处理器来完成的。这种配置称为单处理器系统。 当构建一个由单操作系统内核控制的多处理器 组成的系统时,我们就得到了一个多处理器系统。 其实从 20 世纪 80 年代开始,在大规模的计算中就 采用了这种系统,但是直到最近,随着多核处理器 和超线程(hyperthreading)的出现,这种系统才变 得常见。 多核处理器是将多个 CPU(称为“核”)集 成到一个集成电路芯片上。工业界的专家预言他们能够将几十个、 最终会是上百个核做到一个芯片上。
超线程,有时称为同时多线程(simultaneous multi-threading),是一项允许一个 CPU 执行多 个控制流的技术。它涉及 CPU 某些硬件有多个备份,比如程序计数器和寄存器文件 ;而其他的 硬件部分只有一份,比如执行浮点算术运算的单元。常规的处理器需要大约 20000 个时钟周期 做不同线程间的转换,而超线程的处理器可以在单个周期的基础上决定要执行哪一个线程。这使 得 CPU 能够更好地利用它的处理资源。例如,假设一个线程必须等到某些数据被装载到高速缓 存中,那 CPU 就可以继续去执行另一个线程。举例来说,Intel Core i7 处理器可以让一个核执行 两个线程,所以一个 4 核的系统实际上可以并行地执行 8 个线程。
多处理器的使用可以从两个方面提高系统性能。首先,它减少了在执行多个任务时模拟并发 的需要。正如前面提到的,即使是只有一个用户使用的个人计算机也需要并发地执行多个活动。 其次,它可以使应用程序运行得更快。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值