操作系统-进程与线程

0.摘要

本文主要介绍操作系统中进程和线程的概念,以及两者之间的关系和区别。

 

1.进程

什么是进程:

进程是对正在运行程序的一个抽象。进程是操作系统最核心的概念,因为操作系统的其他概念都是围绕着进程的概念展开的,是操作系统提供的最古老也是最重要的抽象概念之一。

进程并行性:

严格来说,同一时刻,一个CPU只能运行一个进程。我们常说的并行,是由于CPU可以快速由一个进程切换到另一个进程,使每个进程各运行几十或几百毫秒,给人们造成并行的错觉,这样的处理方式称为伪并行

真正的硬件并行,需要两个或者多个CPU共享同一个物理内存,从而构成了多处理器系统

 

2.线程

什么是线程

线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。

在传统的操作系统中,每个进程有一个地址空间和一个控制线程。但现在的操作系统的进程基本都是多线程的了,这主要是因为许多应用中同时发生着多种活动,其中某些活动随着时间的推移会被阻塞。通过将这些应用程序分解成可以并行运行的多个顺序线程,程序设计模型会变得简单。具体可以概括为以下三点:

多线程的原因

  1. 一个进程中的多个线程,具备共享同一个地址空间和所有可用数据的能力,这是多进程模型(具有不同的地址空间)所无法表达的;
  2. 线程比进程更轻量级,所以在创建和撤销时,比进程更容易,速度更快。在很多系统中,创建一个线程较创建一个进程,要快10-100倍;
  3. 多线程有助于提升性能。如果多个线程都是CPU密集型的,多线程并不会对性能有所增强。但是,如果是大量计算和大量I/O处理,那么利用多线程将允许这些活动重叠进行,从而提升了执行速度。

 

3.进程和线程的区别

  1. 包含关系上:线程包含在进程中。一个进程可以多个线程,但至少有一个线程。
  2. 独立性方面:进程拥有独立的堆栈空间和数据段,之间互不干扰,相互独立;统一进程中的线程只拥有独立的堆栈空间,数据段是共享的,它们彼此之间使用相同的地址空间,共享大部分数据。
  3. 速度方面:进程每次启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,系统开销大;线程共享数据段,开销小,切换速度也比进程快,效率高。
  4. 安全性方面:进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响;线程只是一个进程中的不同执行路径,有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉。
  5. 并行性方面:一个处理器在同一时刻只能处理一个程序,进程的并发性是伪并行,除非有多个处理器;线程的划分尺度小于进程,同一个进程中的多个线程之间可以并发执行。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值