Linux探秘坊-------8.进程详解
发布时间 - 2025-04-19 00:00:00 点击率:次让我们深入探讨linux中的进程概念,包括运行、阻塞、挂起状态,以及pcb内核链表和进程状态的详细解释。
1. 概念详解
运行、阻塞、挂起状态
内容基础:方框中的是调度队列,是一个双向队列,每一个元素是由PCB及其对应的代码数据组成的。
运行:只要进程在调度队列中,其状态就是运行(running)。
阻塞:阻塞状态是指进程在等待某种硬件资源就绪(例如网卡、键盘等)。
在操作系统中,除了调度队列(runqueue)外,还有设备队列(device queue)用于管理设备。设备队列中包含等待队列(wait queue)。如果某个进程在调度
队列中需要从键盘读取数据,但键盘没有响应,CPU会将该进程从调度队列中移除,并将其链接到对应硬件的等待队列中。这就是阻塞的过程。
- 挂起:挂起的本质是将数据交换到磁盘中的交换区(swap partition),通常在内存资源不足时发生。
当内存资源不足时,如果进程处于阻塞状态,系统会将进程的数据交换到硬盘的交换分区,保留PCB。当内存资源充足时,数据会从交换分区被唤出,并与PCB重新组合成进程,这就是阻塞挂起。运行挂起的情况类似。
2. PCB内核链表的理解
这是普通的双端队列,可以看到next指针指向下一个元素的头,prev指针指向上一个元素的头。
PCB中的next指针直接指向下一个元素的next,prev指针直接指向上一个元素的prev。
一个PCB可以隶属于多个数据结构,可以属于调度队列、等待队列,也可以属于设备队列。因此,PCB可能有多个next和prev指针。
2. 进程状态
- R(running):表示进程正在运行。
- S(浅睡眠):例如,输出一个字符只需1毫秒,但如果进程持续1秒(sleep(1)),剩余时间处于浅睡眠状态,可以被kill命令终止。
- D(深度睡眠):通常与硬盘数据交换有关,不可被kill命令终止。
- Z(僵尸状态):子进程在运行完后不会立即消失,而是先保留信息供父进程使用,信息保留在PCB中。
如果僵尸状态一直存在,子进程的PCB就不会消失,可能会导致内存泄漏。
3. 小知识
进程退出后,内存泄漏的问题就不存在了(例如malloc,进程结束后,申请的内存会被系统回收)。常驻内存的软件(例如Windows系统中的一些软件,开机后一直运行)可能会导致系统卡顿。
# linux
# windows
# 操作系统
# ai
# 指针
# 数据结构
# 挂起
# 多个
# 这就是
# 数据交换
# 的是
# 是一个
# 这是
# 链表
# 让我们
# 就不
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
手机网站制作与建设方案,手机网站如何建设?
php485函数参数是什么意思_php485各参数详细说明【介绍】
如何在腾讯云免费申请建站?
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
JavaScript模板引擎Template.js使用详解
七夕网站制作视频,七夕大促活动怎么报名?
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
如何在 Pandas 中基于一列条件计算另一列的分组均值
如何在IIS7上新建站点并设置安全权限?
如何在IIS中新建站点并配置端口与IP地址?
Python文本处理实践_日志清洗解析【指导】
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
如何用AI帮你把自己的生活经历写成一个有趣的故事?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
b2c电商网站制作流程,b2c水平综合的电商平台?
微信推文制作网站有哪些,怎么做微信推文,急?
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
英语简历制作免费网站推荐,如何将简历翻译成英文?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
高端智能建站公司优选:品牌定制与SEO优化一站式服务
个人网站制作流程图片大全,个人网站如何注销?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
微信h5制作网站有哪些,免费微信H5页面制作工具?
Laravel如何使用Gate和Policy进行授权?(权限控制)
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
Laravel怎么使用artisan命令缓存配置和视图
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
微信小程序 input输入框控件详解及实例(多种示例)
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
教你用AI润色文章,让你的文字表达更专业
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何在云服务器上快速搭建个人网站?
jQuery validate插件功能与用法详解
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
如何在Ubuntu系统下快速搭建WordPress个人网站?
使用C语言编写圣诞表白程序
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
郑州企业网站制作公司,郑州招聘网站有哪些?
如何在云主机快速搭建网站站点?

