news 2026/6/12 21:30:25

进程的描述与控制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
进程的描述与控制

目录

进程的概念、组成、特征

进程的状态与转换

进程控制

进程通信(IPC)

共享存储

消息传递

管道通信

线程的概念与特点

线程的实现方式与多线程模型

线程的实现方式

多线程模型

线程的状态与转换


进程的概念、组成、特征

程序是静态的指令集合,无生命周期(存储在磁盘上,永久存在),不占用资源(仅占用磁盘空间),一个进程只能对应一个程序。

进程是程序动态执行的实例,有创建、就绪、运行、阻塞、终止的动态过程,占用 CPU、内存、文件等系统资源,一个程序可对应多个进程。

进程的核心组成是进程实体(操作系统调度和管理的最小单位)。进程实体4 个核心部分构成,且各部分在内存中占据独立的虚拟地址空间。

从进程是动态执行实例的底层逻辑出发,完整的进程组成应还包含堆栈段

进程的动态性,本质是进程实体的状态(通过 PCB 更新)在不断变化。

PCB是进程的存在标志是操作系统识别进程的唯一标识,进程的创建、调度、终止本质上都是对 PCB 的操作,其存储位置通常位于操作系统的内核空间,用户进程无法直接访问。

程序段是纯指令,只读不允许修改(若修改会触发内存保护异常),防止进程意外篡改指令导致崩溃。多个进程可共享同一个程序段,节省内存空间(代码共享核心逻辑)。

数据段可读可写、私有(进程隔离),堆栈段则动态变化、私有,是进程运行的核心临时区。

进程的状态与转换

进程状态间的转化

进程控制

进程控制就是要实现进程状态的转换,进程控制用原语实现。

在操作系统中,原语是一组不可中断的原子操作集合,是操作系统内核中的最小执行单元,要么完整执行完毕,要么完全不执行,中间不允许被任何中断打断。

进程控制原语导致进程的状态转化,要做的无非三类事情:

进程通信(IPC)

进程间通信是指两个进程之间产生数据交互。进程是分配系统资源的单位,因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。

共享存储

为避免出错,各个进程对共享空间的访问应该是互斥的。各个进程可使用操作系统内核提供的同步互斥操作(如 P、V 操作)。

通过增加页表项 / 段表项即可将同一片共享内存映射到各个进程的地址空间中。

Linux中实现内存共享:

消息传递

管道通信

线程的概念与特点

线程的实现方式与多线程模型

线程的实现方式

多线程模型

线程的状态与转换

🫨🫨🫨.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 18:24:19

不想被封号?试试用LobeChat自建安全可控的AI对话平台

不想被封号?试试用LobeChat自建安全可控的AI对话平台 在智能助手日益渗透工作与生活的今天,你有没有经历过这样的瞬间:正在撰写一份关键报告,AI突然中断响应;或是输入一段内部项目描述后,系统提示“内容受限…

作者头像 李华
网站建设 2026/6/10 13:40:58

【Java毕设全套源码+文档】基于Java的中医药店管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/12 18:13:30

nginx路由重定向

# n8n 路径重定向:将 /n8n 重定向到 /n8n/location /n8n {return 301 /n8n/;}# n8n 前端项目 (history 模式)location /n8n/ {alias /temp/n8n/; # 注意:使用 alias 而不是 root,并且路径末尾要加 /index index.html index.htm;try_file…

作者头像 李华
网站建设 2026/6/10 14:58:33

丽江工业无缝管,耐腐蚀抗高压,寿命提升3倍!

在新乡地区,不锈钢光亮退火管市场近年来呈现出价格信息逐步透明化的趋势。据行业监测数据显示,目前区域内约有68%的经营主体已实现明码标价,其中42%的企业在官网或销售平台公示了详细的产品规格与对应价格区间,整体价格公示完善度…

作者头像 李华
网站建设 2026/6/8 3:57:08

如何使用PyTorch-CUDA镜像快速搭建深度学习开发环境?

如何使用PyTorch-CUDA镜像快速搭建深度学习开发环境? 在现代AI研发中,一个常见的尴尬场景是:你在本地训练好的模型,换到服务器上却“跑不起来”——报错“CUDA not available”,或是精度下降、速度变慢。这种“在我机器…

作者头像 李华
网站建设 2026/6/12 21:25:05

掌握这些测试开发技能,从容应对工作难题!

各位小伙伴, 大家好, 本期为大家分享一些测试开发工程师在企业中通过哪些测试开发技能解决难题。 一.如何定位缺陷 在企业中, 小伙伴们在发现bug后, 需要定位到具体产生bug的原因, 在这种情况下, 我们可以通过以下几种方案: 1.通过代理抓包来分析 常用的抓包工具有: Charle…

作者头像 李华