当前位置:网站首页>【多线程】线程与进程、以及线程进程的调度
【多线程】线程与进程、以及线程进程的调度
2022-08-02 23:20:00 【SPMAX】
在了解多线程之前,首先要区分线程和进程的概念与区别,我目前只了解到Java的JVM中与操作系统联系中的线程和进程,在了解线程与进程之前,首先要初步了解电脑中的操作系统的地位和作用。
冯诺依曼体系
计算机最开始是包含这四个部分:CPU、存储器、输入设备、输出设备。这是四大件是起初计算机的组成成分,随着后来发展,便出现了屏幕、键盘等设备,然后便出现了我们几乎人手一台的笔记本电脑。
当我们买电脑的时候,电脑总会装上所谓的Windows、iOS、系统,这些系统就叫做操作系统。
操作系统
操作系统其实是一个很复杂的软件,它不是像CPU、显卡那种的硬件。一部电脑一开始买来都会安装一个操作系统,这些操作系统的地位是起到类似中间人的作用,向上联系着各种桌面应用软件,向下联系着CPU等硬件。
通俗的来说就是如下图所示(当然在操作系统和桌面软件直接存在一些操作系统提供的API、以及在硬件和操作系统之间存在驱动系统等等):
进程
在说完操作系统的基本地位和作用,就来说说进程和操作系统的联系:
在操作系统的内核中有协调多任务运行各个进程(程序任务)之间的调用,这里提到了我们想要说的进程,我们平常运行的客户端、游戏平台等等,都算作一个程序、程序的运行有时候有多个进程,然后我们平常一般运行多个程序,也就是我们可以边用微信聊天边玩游戏,此时就打开了多个程序,调用了多个进程,例如我们可以打开任务管理器看到:
这里可以看到在操作系统的角度上的进程,在这里可以关闭我们所运行的程序,通过关闭进程来关闭。
进程的调度
在运行一个程序时,通常是这样一个过程:
点击桌面上的可执行程序(文件名.exe)然后操作系统会将程序的代码打开在cpu、内存上运行,接着一个进程便开始执行,但进程是如何运作的呢?在操作系统上通过分配资源和地址给某个进程,进程里面包含一个或者多个PCB(进程控制块,是操作系统调度的最小单位,本质是一个数据结构,是进程存在的标志),进程的调度是通过PCB来进行调度,调度是进行随机调度的,即根据操作系统对资源的开销进行调度,如果该进程需要暂时中止运行,则通过PCB将信息从 CPU寄存器存储到内存,并且将PCB设置为阻塞状态,在需要重新运行的时候再通过PCB将信息从内存调用回CPU执行,并将PCB设置为就绪状态。
所以总的来说,操作系统上进程的调度是随机调度的,具体调用方式是根据操作系统内核进行,我们修改不了。
进程和线程
进程内部可以拥有子进程,即存在父进程和子进程,而线程不存在父线程和子线程。
进程内部拥有一个或者多个线程,即进程大于等于线程。
进程拥有虚拟地址,地址的作用是在进行进程的中断再运行时,可以将信息存储到内存的某个位置上,便于将进程重新恢复运行后将信息重新取出继续执行,而将地址设立为虚拟地址,即给每一个进程都分配一个虚拟地址,通过一个硬件后映射为一个真实的在内存上的地址,避免了因为多个进程中断的时候将信息存储在内存上的地址发生重复。
一个进程里面的多个线程公用进程里面由操作系统分配给该进程的资源,即当分配一个虚拟地址给进程的时候,里面的线程公用该虚拟地址。
一个线程就包含一个 PCB(进程控制块),操作系统进行调度的时候是通过一个个线程进行调度。
一个进程里面的线程是同级关系,不分父线程和子线程。
边栏推荐
- 【代码扫描修复】MD5加密弱HASH漏洞
- 即席查询—— Kylin使用
- airflow db init 报错
- KubeSphere监控失效为NAN的问题
- Strict feedback nonlinear systems based on event trigger preset since the immunity of finite time tracking control
- 别再到处乱放配置文件了!我司使用 7 年的这套解决方案,稳的一秕
- 用了这么多年的LinkedList,作者说自己从来不用它?为什么?
- 精心整理16条MySQL使用规范,减少80%问题,推荐分享给团队
- 3、Xendesktop更改发布桌面的显示名称(MCS静态桌面)
- VMware workstation program starts slowly
猜你喜欢
js基础知识整理之 —— 获取元素和命名规范
NLP常用Backbone模型小抄(1)
WAF WebShell Trojan free to kill
为了面试阿里,熬夜肝完这份软件测试笔记后,Offer终于到手了
C语言函数详解(2)【函数参数——实际参数(实参)&形式参数(形参)】
Cholesterol-PEG-Acid,胆固醇-聚乙二醇-羧基保持在干燥、低温环境下
Database auditing - an essential part of network security
IDEA多线程调试
脂溶性胆固醇-聚乙二醇-叠氮,Cholesterol-PEG-Azide,CLS-PEG-N3
CIO修炼手册:成功晋升CIO的七个秘诀
随机推荐
数据库审计 - 网络安全的重要组成部分
十年架构五年生活-03作为技术组长的困扰
threejs 动态调整相机位置,使相机正好能看到对象
嵌入式分享合集26
Introduction to resubmit Progressive Anti-Duplicate Submission Framework
D experimental new anomaly
MySQL最大建议行数2000w, 靠谱吗?
21天学习挑战赛(1)设备树的由来
2022 China Eye Expo, Shandong Eye Health Exhibition, Vision Correction Instrument Exhibition, Eye Care Products Exhibition
js基础知识整理之 —— Date和定时器
Day117.尚医通:生成挂号订单模块
HVV红队 | 渗透测试思路整理
谷歌 Chrome 浏览器 104 正式版发布:加快网页加载,蓝牙 API 改进
【斯坦福计网CS144项目】Lab5: NetworkInterface
UE5 官方案例Lyra 全特性详解 8.如何用配置表初始化角色数据
js基础知识整理之 —— 全局作用域
分库分表索引设计:二级索引、全局索引的最佳设计实践
漫画:怎么证明sleep不释放锁,而wait释放锁?
用了这么多年的LinkedList,作者说自己从来不用它?为什么?
买母婴产品先来京东“券民空间站”抢券!大牌好物低至5折