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

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

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

线程的引入进一步提高了程序并发执行的程度,从而进一步提高了资源的利用率和系统的吞吐量。引入线程目的是减少并发执行时的时空开销。因为进程的创建、撤销、切换较费时空,它既是调度单位,又是资源拥有者。线程是系统独立调度和分派的基本单位,基本上不拥有系统资源,只需要少量的资源(指令指针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. java timer cron_Java之旅--定时任务(Timer、Quartz、Spring、LinuxCron)
  2. ZooKeeper演示案例
  3. 数组与字符串三(Cocos2d-x 3.x _Array容器)
  4. AJAX(Asynchronous JavaScript And XML)
  5. uploadify使用
  6. Jetty:配置上下文
  7. hybris impex里的多语言处理语法
  8. SQLite编译问题
  9. CMFCShellTreeCtrl和CMFCShellListCtrl快速构建资源管理器
  10. ubuntu 时间戳不对
  11. Box(-and-Whisker) Plot SPSS and Excel 箱图学习
  12. Android网速实时显示
  13. 图像处理中的白化处理
  14. c语言驻波,C版:基于声学驻波的液位检测方法C2-1(备份存档)
  15. Aras Innovator-学-习-之-旅-
  16. web学习笔记-html-html新增
  17. 微信自媒体账号涉违规大规模被封
  18. 如何活让自己活得充实:其实很简单,把脑子里想的东西,变成行动,就能立刻充实起
  19. 计算机硬盘分区和盘符,盘符
  20. mysql删除表中数据

热门文章

  1. Android中的MVVM架构设计-实用篇(五)实现RecyclerView列表展示
  2. 小谈应该如何对抗网络小说
  3. 使用thinkphp做商城,如何调用物流API接口
  4. Shotcut软件中如何剪辑视频文件(截取其中一段)
  5. DB2的日期时间类型以及转换问题
  6. zabbix系列:解决zabbix模板不能重复链接到其它模板, 即使透过其它模板
  7. ims sip不发起注册问题实操
  8. File类(Java)
  9. 手机进水开机android,手机进水?别怕,一个软件就能自救!
  10. 基于uniapp视频播放APP软件