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

进程及相关概念

进程是动态的,暂时存在于内存中,进程是程序的一次执行,而进程总是对应至少一个特定的程序。程序是静态的,永久的存在于磁盘中

我们自己下载的应用程序或者自己编写的代码程序,都是储存在硬盘中的,是静态的,当我们打开某一个应用软件或者运行自己的代码程序时,实际上硬盘中的内容会加载到内存上进行执行,此时就是一个动态的,所谓进程就是在内存中执行的程序。

如上图,打开任务管理器我们可以看到正在执行的程序,就是进程。如果我们多次打开一个应用软件呢?是不是就是一个进程,答案是否定的,就像我们可以多次大开浏览器页面一样,每次打开时,都是各种独立的进程,那么操作系统又是怎么区分这些进程呢?这里我们就详细的解释一下进程的知识点。

 

首先操作系统是C语言写的,C语言中描述一个物体的很多属性,都是通过结构体struct概括起来的。而描述进程的这个结构体的全部叫做:PCB。PCB就是进程控制块,我们可以在这里看到进程的所有信息,就像身份证一样,通过身份证可以了解一个人的主要信息,姓名,年龄,性别等。但是具体的比如个人喜好,个人理想等就需要深入了解,这里的PCB就是了解进程的主要信息,其中进程号就像身份证号一样,每个进程都有自己独一无二的进程号,是唯一确认一个进程的。

 

记住下面这段话,进程=代码段+数据段+PCB。 

 下图就是一个程序执行时实际的过程,会把硬盘中的数据加载到内存中,图中的堆和栈我们很熟悉。

 

BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。

数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。

代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)

栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进后出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。

它是由操作系统分配的,内存的申请与回收都由OS管理。

进程的状态。

参考文章

程序运行时对应的内存分布(BSS段、数据段、代码段、堆、栈)关系_代码内存分布-CSDN博客 

进程的概念_进程与磁盘中程序的关系-CSDN博客 

再谈应用程序分段:代码段、数据段、bss以及堆和栈-阿里云开发者社区

 

 

相关文章:

  • 【Linux网络编程】socket套接字的基础API接口
  • 《深度剖析:人工智能与元宇宙构建的底层技术框架》
  • C++——list模拟实现
  • 【Linux】命名管道------Linux进程间通信的桥梁
  • Dockerfile中volume功能作用
  • Cursor提示词模板,开发GD32,C语言开发GD32 ARM单片机编程规范提示词 大厂风格代码规范
  • Python常见面试题的详解17
  • Mybatis常用动态 SQL 相关标签
  • <692> 前K个高频单词
  • Windows、Mac、Linux,到底该怎么选?
  • 20250220-代码笔记01-class CVRPEnv
  • 画册封面设计有哪些要点呢?
  • 计算机单位之详解——存储单位Byte 网络传输单位bps 视频码率单位bps
  • 关于ES中text类型时间字段范围查询的结构化解决方案
  • 基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知
  • IC版图设计之DXF文件格式详解
  • 使用ezuikit-js封装一个对接摄像头的组件
  • node和vue的主流版本组合版本介绍
  • DeepSeek与AI幻觉
  • [寻找密码]
  • 两部上戏学生作品亮相俄罗斯“国际大学生戏剧节”
  • 化学家、台湾地区“中研院”原学术副院长陈长谦逝世
  • 印巴冲突升级,巴防长称已击落5架印度战机
  • 董卓的前半生:边荒之地的工具人
  • 国羽3比0横扫日本晋级苏迪曼杯决赛,将战韩国与印尼胜者
  • 准80后遵义市自然资源局局长陈清松任仁怀市委副书记、代市长