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

进程 Vs 线程

理解进程,线程以及两者之前的区别,对于学习并发编程,异步编程具有很大的帮助。

1. 应用程序

在理解进程,线程之前,需要搞明白一件事情,什么是程序?对于大家来说,一个应用程序就是一个"*.exe"文件。从技术上讲,应用程序是一个可执行文件,包含一组告诉CPU如何运行它的指令。

当启动一个应用程序时,可执行文件中的代码指导CPU执行什么操作

2. 进程

2.1 什么是进程

往简单的讲,进程就是一个正在运行的应用程序。一个应用程序是由一系列指令组成,这些指令由CPU按顺序执行。

这种持续的执行被称为进程,即CPU处于执行该程序指令的过程

当启动一个应用程序的时候,操作系统会执行一些动作,让应用程序转换为进程:

  • 将执行文件加载到内存中,操作系统会为该应用程序分配内存空间,这个内存空间是应用程序独立操作的地方。
  • 操作系统通过进程控制块(PCB),保存进程运行过程中的所有内容(称为进程状态)

2.2 操作系统中进程相关的信息

操作系统为应用程序分配的内存空间,由如下几个区域组成:

  • Text区域:存放应用程序的指令
  • Data区域:存放固定数据,如全局变量和常量
  • Heap区域:存放运行时创建的动态数据
  • Stack区域:跟踪函数调用和临时执行数据

进程状态:不仅包括内存限制,还包括进程打开了哪些文件,正在与哪些硬件设备通信,调度优先级,对派生线程的引用等信息。进程状态帮助操作系统管理整个进程。

http://www.xdnf.cn/news/16846.html

相关文章:

  • 【OpenGL】LearnOpenGL学习笔记01 - 环境配置、窗口创建
  • Flask + YARA-Python*实现文件扫描功能
  • 开源列式分布式数据库clickhouse
  • 深入 Go 底层原理(十三):interface 的内部表示与动态派发
  • Redisson高并发实战:Netty IO线程免遭阻塞的守护指南
  • 算法提升之数学(快速幂+逆元求法)
  • 【20min 急速入门】使用Demucs进行音轨分离
  • Redis7 String类型数据
  • 【iOS】KVO
  • MyBatisPlus之CRUD接口(IService与BaseMapper)
  • 28Rsync免密传输与定时备份
  • 关于Web前端安全防御XSS攻防的几点考虑
  • Spring Boot 全 YAML 配置 Liquibase 教程
  • C++之vector类的代码及其逻辑详解 (中)
  • DockerFile文件执行docker bulid自动构建镜像
  • CMake指令:mark_as_advanced
  • Python序列去重高级指南:保持顺序的高效去重技术
  • 错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException
  • 云原生三剑客:Kubernetes + Docker + Spring Cloud 实战指南与深度整合
  • 分类任务当中常见指标 F1分数、recall、准确率分别是什么含义
  • 类似 Pixso 但更侧重「网页 / 软件界面设计」「前后端可视化开发」的工具
  • 【贪心】P11112 [ROI 2024] 机器人物流 (Day 1)|普及+
  • 基于python多光谱遥感数据处理、图像分类、定量评估及机器学习方法应用
  • Java函数式编程之【Stream终止操作】【下】【二】【收集器toMap()】【叁参数收集操作collect()】
  • Maven项目和Spring项目的异同
  • 企业资产|企业资产管理系统|基于springboot企业资产管理系统设计与实现(源码+数据库+文档)
  • Docker容器中文PDF生成解决方案
  • 计算机网络:为什么IPv6没有选择使用点分十进制
  • Pytorch-02数据集和数据加载器的基本原理和基本操作
  • Matplotlib - Python图表可视化利器