为什么说“进程是资源分配的单位、线程是调度的单位”?
书上和别人也总是说“进程是资源分配的单位、线程是系统调度的单位”,重复一遍一遍又一遍,听的耳朵都起茧了。但有没有想过为什么?
去年有个小伙伴分享了下进程栈和线程栈,我从中似乎找到了答案。
他讲到linux内核会检查该内存地址是否属于该进程,也就是进程地址空间相隔离,各有各的区域,而同进程内的线程之间可没有这个检查,所以线程之间有可能彼此踩到彼此的地址——突然灵光闪动,这也许就是说“进程是资源分配的单位”——因为地址空间的隔离单位是进程,进程间有地址隔离机制。
说线程是调度单位,这个好理解,linux内核不区分进程线程的反正它们都是struct task结构体。只不过进程是一组task,这个task链表的leader是主线程,其他是普通线程,该进程的所有线程共享地址空间,只是在主线程的task的时候分配这些资源,所以说线程是轻量级进程的原因也是在这。而linux内核调度器只认task,所以说线程是调度单位也好理解。
为什么说“进程是资源分配的单位、线程是调度的单位”?相关推荐
- linux 编程 调度,Linux的进程线程及调度
搜索热词 本文为宋宝华<Linux的进程.线程以及调度>学习笔记. 1 进程概念 1.1 进程与线程的定义 操作系统中的经典定义: 进程:资源分配单位. 线程:调度单位. 操作系统中用PC ...
- c语言中线程的调度,线程、进程及其调度简介
知识需要不断总结.验证.迭代,知其然,知其所以然. 1.进程和线程 进程和线程的区别与联系: 进程:资源申请的最小单位 线程:资源调度的最小单位,进程的一部分,描述指令流的执行状态. 内核中,描述进程 ...
- 转载_进程、轻量级进程(LWP)、线程
进程.轻量级进程(LWP).线程 进程.轻量级进程(LWP).线程 进程:程序执行体,有生命期,用来分配资源的实体 线程:分配CPU的实体. 用户空间实现,一个线程阻塞,所有都阻塞. 内核实现,不会所 ...
- potplayer 多个进程_操作系统进程与线程基本概念理解
主要内容 进程 为什么引入进程? 最开始的操作系统是单道批处理的(一个程序处理完,再处理下一个程序)而IO是低速的,就会出现cpu要等待IO的情况:从而降低了实际效率.后来就引入多道批处理:而程序在执 ...
- 进程和线程的区别?什么时候用进程?什么时候用线程?----看到好的复制到自己的园子里哈哈...
进程和线程的区别?什么时候用进程?什么时候用线程? 答:首先得知道什么是进程什么是线程? 我的理解是进程是指在系统中正在运行的一个应用程序:程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的 ...
- 进程和线程的区别?什么时候用进程?什么时候用线程?
首先得知道什么是进程什么是线程? 我的理解是进程是指在系统中正在运行的一个应用程序:程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例. 线程是进程的一个实体. 进程--资源分配的最 ...
- [Linux]线程概念_线程控制(线程与进程的区别与联系 | 线程创建 | 线程等待 | 线程终止 | 线程分离 | LWP)
文章目录 线程概念 进程和线程的关系 线程的优点 线程的缺点 线程控制 Linux线程和接口关系的认识 线程创建 线程ID及进程地址空间布局 线程等待 线程终止 线程终止状态 线程分离 LWP和pth ...
- 进程的句柄,PID及线程
进程(process) 进程是一个正在运行的程序 进程里可以包括多个模块(DLL,OCX,等) 进程是表示资源分配的的基本概念,又是调度运行的基本单位,是系统中的并发执行的单位. 一个任务就是一个进程 ...
- 操作系统之进程管理:4、线程与多线程
4.线程与多线程 思维导图 线程 进程的不足 什么是线程 为什么要引入线程 引入线程的好处 线程的特点 多线程 思维导图 用户级线程(ULT) 内核级线程 一对一模型 多对一模型 多对多模型 思维导图 ...
最新文章
- 在线作图|2分钟绘制一张箱线图
- 【 MATLAB 】DFT性质讨论(一)线性、循环反转、共轭与实序列的对称性
- 一篇文读懂分布式系统本质:高吞吐、高可用、可扩展
- [Android1.5]DigitalClock自定义日期输出格式
- linux下重启weblogic(关闭和启动)
- SAP Spartacus Set Active BaseSite action执行的时间点 - Route路由触发方式
- python去除图片上的文字_Python图像处理之识别图像中的文字(实例讲解)
- html表白照片墙,【原创】【申精】用python去告白 绘制照片墙(自定义格式)
- 如果可以,我们一起留在竹山。
- 内核网络输出帧的处理
- YouTube将关闭原创节目部门
- jQuery中兄弟元素、子元素和父元素的获取
- java实现支付宝第三方登录_Java 实现QQ第三方登录(附赠:完整代码)
- 软件发布!DOTA2统计学
- c语言快递信息系统有哪些信息,国内知名物流信息管理系统软件有哪些?分别是什么?...
- 编写的软件在运行时界面不能移动_常用软件开发工具介绍
- Centos7.0 中的中iptables、firewall和SELINUX
- matlab 打不开 slx,matlab2014a打不开仿真参数设置对话框怎么办
- ArcGIS计算河宽
- 感受Java的魅力——基于Java二维数组和if语句编制的税后工资计算方法
热门文章
- SQL Server群集共享存储迁移
- 通过脚本下派WsusAgent3.0.exe(续)
- python中_new_和_init_的区别_Python 中的__new__和__init__的区别
- sh脚本和bash脚本_我是如何开始使用bash脚本的
- linux挑战:历史命令_博客挑战:分享您关于社区运作方式的知识
- oxp开放型可变长协议_培养开放型领导者
- 分布式锁 动态代理 Java数据结构List,Set,Map,Spring执行流程,Spring MVC组件
- 提升开发效率的 Chrome 开发者工具快捷键参考
- css属性前浏览器厂商前缀
- Bootstrap媒体对象列表