进程拥有两个基本的属性:

资源的拥有者和独立调度单位。

进程是资源分配和独立运行的基本单位,每一个进程都完成一个特定的任务。

线程的引入进一步提高了程序并发执行的程度,从而进一步提高了资源的利用率和系统的吞吐量。引入线程目的是减少并发执行时的时空开销。因为进程的创建、撤销、切换较费时空,它既是调度单位,又是资源拥有者。线程是系统独立调度和分派的基本单位,基本上不拥有系统资源,只需要少量的资源(指令指针IP,寄存器,栈),但可以共享其所属进程所拥有的全部资源。

一个进程可以创建一个或多个线程;一个线程可以创建一个或多个线程;一个进程可以创建一个或多个进程;但是线程不可以创建进程。

进程与线程的比较:

(1)引入线程后,线程是处理机调度的基本单位,进程是资源分配的基本单位,而不再是一个可执行的实体。在同一进程中线程的切换不会引起进程的切换,但从一个进程中的线程切换到另一个进程中的线程时。将会引起进程的切换。

(2)引入线程后,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间也可以并发执行。多个线程会争夺处理机,在不同的状态之间进行转换。线程也是一个动态的概念,也有一个从创建到消亡的生命过程,具有动态性。

(3)进程是资源分配的单位,一般线程自己不拥有系统资源,但可以访问其隶属进程的资源。同一进程中的所有线程都具有相同的地址空间(进程的地址空间)。

(4)同进程的不同线程间的独立性要比不同进程间的独立性低得多。多个线程共享进程的内存地址空间和资源。

(5)创建、撤销一个新线程系统开销小。两个线程间的切换系统开销小。

(6)同进程的不同线程可以分配到多个处理机上执行,加快了进程的完成。

线程共享的资源包括:

(1) 进程代码段

(2) 进程的公有数据(利用这些数据,线程很容易实现相互之间的通讯)

(3) 进程的所拥有资源。

线程独立的资源包括:

(1)线程ID:每个线程都有自己唯一的ID,用于区分不同的线程。

(2)寄存器组的值:当线程切换时,必须将原有的线程的寄存器集合的状态保存,以便重新切换时得以恢复。

(3)线程的堆栈:堆栈是保证线程独立运行所必须的。

(4)错误返回码:由于同一个进程中有很多个线程同时运行,可能某个线程进行系统调用后设置了error值,而在该线程还没有处理这个错误,另外一个线程就在此时被调度器投入运行,这样错误值就有可能被修改。所以,不同的线程应该拥有自己的错误返回码变量。

(5)线程优先级:线程调度的次序(并不是优先级大的一定会先执行,优先级大只是最先执行的机会大)。

线程的共享资源与独立资源相关推荐

  1. 线程间到底共享了哪些进程资源

    进程和线程这两个话题是程序员绕不开的,操作系统提供的这两个抽象概念实在是太重要了. 关于进程和线程有一个极其经典的问题,那就是进程和线程的区别是什么?相信很多同学对答案似懂非懂. 记住了不一定真懂 有 ...

  2. 线程间到底共享了哪些进程资源?

    进程和线程这两个话题是程序员绕不开的,操作系统提供的这两个抽象概念实在是太重要了. 关于进程和线程有一个极其经典的问题,那就是进程和线程的区别是什么?相信很多同学对答案似懂非懂. 记住了不一定真懂 关 ...

  3. Python多任务(3.线程--多线程共享全局变量,利用同步解决资源竞争,利用互斥锁)

    1. 线程之间是共享全局变量的 验证代码: import threading import time# 定义一个全局变量 g_num = 100def test1(): # 修改g_num的值glob ...

  4. Go进程/线程/协程:单元 空间资源 切换 共享

    https://www.imooc.com/article/31751 进程process 线程 thread   协程goroutine 操作系统分为操作与资源两部分,操作就是方法,资源就是硬盘资源 ...

  5. 如何在线程之间共享资源?

    点击"蓝字"关注Java高级部落! 介绍 当涉及IO读/写时,多线程可以提高应用程序性能.不幸的是,共享资源(共享变量)在每个CPU缓存中可以有不同的版本.结果是应用程序的行为无法 ...

  6. 同一进程中线程的共享资源以及独占资源

    线程之间的共享资源以及独占资源 共享资源 独占资源 共享资源 1.进程申请的堆内存 2.进程打开的文件描述符 3.进程的全局数据(可用于线程之间通信) 4.进程ID.进程组ID 5.进程目录 6.信号 ...

  7. 同一进程中的线程究竟共享哪些资源

    线程共享的环境包括:进程代码段.进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯).进程打开的文件描述符.信号的处理器.进程的当前目录和进程用户ID与进程组ID.       进程拥 ...

  8. 同一进程中的线程究竟共享那些资源

    线程共享的环境包括:进程代码段.进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯).进程打开的文件描述符.信号的处理器.进程的当前目录和进程用户ID与进程组ID. 进程拥有这许多共性 ...

  9. 操作系统4小时速成:进程管理占考试40%,进程状态,组织,通信,线程拥有调度,进程拥有资源,进程和线程的区别

    操作系统4小时速成:进程管理占考试40%,进程状态,组织,通信,线程拥有调度,进程拥有资源,进程和线程的区别 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去 ...

最新文章

  1. 自律到极致-人生才精致:第11期
  2. 【偶尔一道ctf】xctf adword mobile easy-apk
  3. 搭建流媒体服务器(1)
  4. leetcode 151. 翻转字符串里的单词 c代码 三种方案
  5. windows和linux共同分区格式,Linux和Windows共存的模式下分区要小心
  6. java源代码加密+使用proguard混淆java web项目代码+自定义Classloader
  7. arm中断保护和恢复_ARM中断处理过程
  8. 如何对接VOLVO EDI系统?
  9. linux7.4邮件服务器,Centos7.4搭建邮件收发服务器(部署篇)
  10. ANC降噪耳机量产测试方案
  11. Help Hanzo(素数筛)
  12. VC++中使用使用winnet类获取网页内容
  13. [Python] 小明又迟到了……一个故事讲清楚 Python 循环嵌套
  14. 论文阅读-VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION
  15. Dropwizard 直接run 运行配置【IDEA】
  16. 在线图书销售系统顺序图_myON电子图书馆最全介绍
  17. WebSocket入门介绍及编程实战
  18. 【案例回顾】春节一次较波折的MySQL调优
  19. 鸿蒙渊更新公告,《天下3》更新公告(版本2.0.706)
  20. windows2003服务之网络负载平衡(NLB)

热门文章

  1. 【玩转ubu n tu】安装完ubuntu后需要做的事情(持续更新)
  2. SpringBoot集成阿里云OSS上传文件
  3. 一机难求的折叠手机:是未来趋势还是小众需求?
  4. 2019全球医疗影像巨头排名(根据2018年全球收入)
  5. 有什么图片翻译软件?快把这些软件收好
  6. vue3.0项目 npm run build 编译
  7. 语音识别(语音转文字) 语音合成(文字转语音)
  8. 鳄鱼笔记(三) --> bug小屋<--[c# 报错The type initializer for ‘Gdip‘ threw an exception]
  9. HTML(3):IE浏览器编程 - vcmute的专栏 - CSDNBlog
  10. 170604 逆向-CrackMe之013