当前位置: 首页 > news >正文

操作系统——程序、进程、线程

程序 (Program)

程序是存储在磁盘上的静态可执行文件,包含完成特定任务所需的指令和数据。它是被动的实体,只有被加载到内存中执行时才具有生命力。程序通常以二进制文件(如.exe、.dll等)或脚本文件(如.py、.js等)的形式存在。

特点

  • 静态的代码集合

  • 存储在硬盘等永久存储介质上

  • 不占用系统资源(除非被执行)

  • 可以多次启动,产生多个进程实例

示例:Windows系统中的记事本程序notepad.exe就是一个典型的程序文件。

进程 (Process)

进程是程序的一次动态执行实例,是操作系统进行资源分配和调度的基本单位。当程序被加载到内存并开始执行时,就变成了一个进程。

特点

  • 动态的执行实体

  • 拥有独立的地址空间和系统资源

  • 进程间通信(IPC)需要特殊机制

  • 操作系统为每个进程分配内存、文件句柄等资源

  • 进程是资源分配的最小单位

进程组成

  1. 代码段(程序的指令)

  2. 数据段(全局变量等)

  3. 堆栈段(局部变量、函数调用信息)

  4. 进程控制块(PCB):包含进程状态、寄存器值等上下文信息

示例:当用户双击notepad.exe图标时,操作系统会创建一个新的记事本进程。

线程 (Thread)

线程是进程内的执行单元,是CPU调度和执行的基本单位。一个进程可以包含多个线程,这些线程共享进程的资源。

特点

  • 轻量级的执行单元

  • 共享同一进程的地址空间和资源

  • 线程间通信更高效(通过共享内存)

  • 线程是CPU调度的最小单位

  • 创建和切换开销比进程小

线程组成

  1. 线程ID

  2. 程序计数器

  3. 寄存器集合

  4. 堆栈(用于局部变量和函数调用)

示例:现代Web浏览器通常为每个标签页创建一个线程,这些线程共享同一个浏览器进程的资源。

三者的关系

  1. 包含关系:一个程序可以启动多个进程,一个进程可以包含多个线程

  2. 资源分配:进程拥有独立的资源,线程共享进程资源

  3. 执行方式:线程是实际执行代码的单元,进程为线程提供执行环境

  4. 通信方式:进程间通信复杂(管道、消息队列等),线程间通信简单(共享内存)

应用场景对比

场景适用选择原因
需要隔离多进程进程间有独立地址空间,安全性高
需要高效通信多线程线程间共享内存,通信速度快
计算密集型多进程可充分利用多核CPU,避免GIL限制(如Python)
I/O密集型多线程线程切换开销小,适合等待I/O的场景

实际开发中的选择

  1. 多进程适用场景

    • 需要高稳定性的服务(一个进程崩溃不影响其他进程)

    • 需要利用多核CPU进行并行计算

    • 需要严格隔离的不同任务

  2. 多线程适用场景

    • 需要频繁通信的协作任务

    • GUI应用程序(保持界面响应)

    • 网络服务器处理并发请求

    • I/O密集型任务

现代操作系统和编程语言通常都提供了丰富的API来管理进程和线程,开发者可以根据具体需求选择最合适的并发模型。

http://www.jsqmd.com/news/519132/

相关文章:

  • php方案 Direct I/O(O_DIRECT)应用场景如何在 PHP 中通过 FFI 实现并处理扇区对齐限制?
  • 自动驾驶避坑指南:开放空间规划算法在自主泊车中的5大常见问题
  • 高危无认证XXE突袭!GeoServer CVE-2025-58360漏洞深度剖析与防御前瞻
  • 如何用Notepad++和UABE修改Unity游戏配置表?5分钟搞定json/excel数据编辑
  • RTOS工程实践:从裸机到可验证实时系统的三阶段跃迁
  • 遗传算法调参避坑指南:从51城TSP实验看种群大小与变异率的博弈
  • PC端Emby播放器新浪潮:Tsukimi领衔,femor、yamby等客户端功能深度解析与版本演进
  • 三电平整流与三电平逆变驱动异步电机的Matlab仿真探索
  • php方案 tmpfs 与共享内存速度对比: PHP 进程将高频读写的临时数据放在 /dev/shm(tmpfs)与使用 shmop 共享内存段
  • Kubectl连接K8s集群报错?教你三种方法解决x509证书无效问题(含--insecure-skip-tls-verify详解)
  • BM92S2021-A单线色彩传感器嵌入式集成与协议解析
  • Spring IOC 与 AOP 理解与使用
  • 医疗诊断提示系统的“未来趋势”:架构师分享Prompt Engineering的下一步方向
  • YOLO-World部署全攻略:从本地到云服务器的避坑指南(附权重文件下载)
  • 降AI+降重+格式修正一条龙教程:毕业论文终稿提交前必看 - 还在做实验的师兄
  • AI头像生成器企业应用:HR部门员工虚拟形象统一管理Prompt模板库建设
  • 【2025最新】基于SpringBoot+Vue的面向智慧教育实习实践系统管理系统源码+MyBatis+MySQL
  • 日式擦玻璃服务全解析:大理石结晶、宠物保洁、家电清洗、收纳整理、日式开荒保洁、日式擦玻璃、日式收纳、日式日常保洁选择指南 - 优质品牌商家
  • ABB选项功能开通指南:ROBWARE 6万能密钥授权文件操作教程
  • 学长亲荐!毕业论文全流程神器 —— 千笔·专业论文写作工具
  • 023.(实战)定制化Chromedriver编译——彻底规避Selenium指纹检测
  • 动态建模驱动的仓储空间认知能力构建与关键技术研究—— 基于镜像视界 Pixel-to-Space、多视角视频融合、三维重构与轨迹建模的空间计算框架
  • 基于深度学习的车辆识别收费管理系统
  • TCP计算器:C++网络编程入门
  • 东华复试OJ二刷复盘16
  • 基于RBP神经网络PID自适应控制模型的Matlab仿真解析与实践指导
  • 如何通过运动干预改善儿童多动症的注意力问题?
  • 基于Real-ESRGAN的文档图像增强微调:去除订书钉折痕及阴影
  • 2026下学期课前歌合集
  • 2026年心理学论文降AI率工具推荐:量表描述和数据分析部分怎么降 - 还在做实验的师兄