彻底搞清楚进程和线程的十条区别

进程和线程的十条区别

我们先来说说引入线程这个概念的好处

我们说为什么有了进程,还要有线程呢???

进程可以使多个程序并发执行,以提高资源的利用率和系统的吞吐量。 但是:进程在同一时间只能做一件事。
进程在执行的过程中如果阻塞,整个进程就会挂起,即使进程中有些工作不依赖于等待的资源,仍然不会执行。
因此,操作系统引入了比进程粒度更小的线程,作为并发执行的基本单位,从而减少并发执行时所付出的时空开销,提高并发性。

从以下几个方面,阐述线程的优势:

从占用资源上讲
线程是一种非常节俭的多任务操作方式。在linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它 的代码段,堆栈段和数据段,这是一种非常昂贵的多任务工作方式。

从通信机制上来看
线程间有方便的通信机制。对不同进程来说,它们具有独立的数据空间。
要进行数据的传递只能通过进程间通信的方式进行,这种方式不仅费时间还不方便。线程则不然,由于同一进程下的线程之间共享相同空间,所以一个线程的数据可以直接被其他线程所用。不仅速度快还便捷。

从切换效率上来讲
线程之间彼此切换所需时间远远小于进程间所需要的时间,一个进程的开销大约是一个线程的30倍左右。

除了以上三方面,多线程作为一种多任务,并发的工作方式,还有如下优点:

1 使用CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时候,不同的线程运行于不同的CPU上。
2 改善程序结构,一个既长又复杂的进程可以考虑为多个线程,成为几个独立或半独立的 运行部分,这样的程序才会利于理解和修改。

这里我们可以具体的讲一讲进程和线程的区别了

进程

1 进程是CPU资源分配的最小单位。

2 进程有独立的系统资源。拥有独立的内存单元。

3 一个进程崩溃,不会影响其他进程。

4 进程在创建,切换和销毁时候开销比较大。进程创建的时候需要分配系统资源( 内存空间,I/O设备 )。而销毁的时候需要释放系统资源。

5 进程切换 涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置。
需要两步:第一步:切换页目录,刷新TLB以使用新的地址空间。第二步:切换内核栈和硬件上下文(寄存器)。

6 进程间通信比较复杂。进程间通信IPC

7 一个进程可以有无数个线程。

8 进程编程调试简单可靠性高,但是创建销毁开销大。
9 进程间不会相互影响。
10 进程适用于多核,多机分布。

线程:

1 线程是CPU调度的最小单位。

2 同一进程内的 线程 共享进程的大部分系统资源,包括堆,代码段,数据段。每个线程只独立拥有一些在运行中必不可少的私有属性,比如tcb,
线程id,栈,寄存器, 每个线程拥有还自己的栈段,栈段又叫运行时段,用来存放所有局部变量临时变量

3 一个线程崩溃,会让同一进程内的线程也死掉。

4 进程在创建,切换和销毁时候开销比较小。线程切换只保存和设置少量寄存器的内容,不涉及存储器管理。

5 同一进程间的线程间逻辑地址空间是一样的,不需要切换页目录,刷新TLB。

6 因为线程间通信比较容易,因为它们具有相同的地址空间,共享代码段和数据段。它们之间的同步和通信变得比较容易。线程间可以直接读写进程数据段(如全局变量)来进行通信———需要进程同步和互斥手段的辅助,以保证数据的一致性。在有的系统中,线程的切换,同步和通信都无需操作系统内核的干预。

7 一个线程只属于一个进程。
8 线程创建开销小,切换速度快,但是编程调试相对复杂。
9 一个线程挂掉,导致整个进程挂掉。
10 线程适于多核。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
进程线程操作系统中的两个重要概念,它们在并发执行任务和资源管理方面起着关键作用。下面是进程线程区别和联系: 区别: 1. 定义:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;线程进程中的一个执行单元,是CPU调度和执行的基本单位。 2. 资源占用:进程拥有独立的地址空间和系统资源,如文件描述符、内存等;线程共享所属进程的资源,包括代码段、数据段和打开的文件等。 3. 切换开销:进程切换需要保存和恢复整个进程的上下文,开销较大;线程切换只需要保存和恢复线程的上下文,开销较小。 4. 通信方式:进程间通信需要使用操作系统提供的机制,如管道、消息队列、共享内存等;线程间通信可以直接读写同一进程的共享变量。 联系: 1. 关系:一个进程可以包含多个线程线程进程的执行单元。 2. 共享资源:线程共享所属进程的资源,可以方便地共享数据和通信。 3. 并发执行:多个线程可以在同一进程中并发执行,提高了程序的执行效率。 总结: 进程线程操作系统中扮演不同的角色,进程是资源分配和调度的基本单位,线程是执行和调度的基本单位。进程拥有独立的资源,线程共享所属进程的资源。进程切换开销较大,线程切换开销较小。进程间通信需要使用操作系统提供的机制,线程间通信可以直接读写共享变量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值