进程、CPU、MMU与PCB之间的关系
目录
进程与cpu(中央处理器)
源代码、程序、cpu与进程的关系
cpu超线程
CPU的简易架构与处理数据过程
进程与MMU(内存管理单元)
mmu作用
cpu和mmu的关系
进程与PCB(进程控制块)
PCB介绍与内部成员
PCB和mmu的关系
pcb中的文件描述符表
进程的四种状态
进程与cpu(中央处理器)
源代码、程序、cpu与进程的关系
程序和进程的关系
- 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源,比如cpu、内存等
- 进程,是一个抽象的概念,与操作系统原理联系紧密。进程是活跃的程序,占用系统资源。在内存中执行。程序运行起来,cpu执行二进制文件中的二进制指令,执行n多指令的过程就是一个进程,所以运行程序会产生一个进程(当然也可以产生多个进程)。
程序编译和运行过程
- 编译过程:
- 代码(如C语言代码)首先通过编译器(如GCC)被转换成二进制文件。这个过程称为编译,它将高级语言代码转化为机器语言代码,也就是CPU能直接执行的二进制指令。
- 编译后的二进制文件通常包含程序的机器码、数据以及其他信息,这些信息都是按照CPU的指令集架构(ISA)来组织的。
- 加载与执行:
- 在程序执行之前,编译后的二进制文件(如.exe或.elf文件)需要被加载到主存储器(RAM)中。这是因为CPU无法直接从硬盘等存储设备中读取和执行程序,它只能访问RAM中的数据。
- 当用户运行一个程序时,操作系统的程序加载器(如Windows的PEB或Linux的ELF加载器)会将程序加载到RAM中,并为其分配内存空间。
- CPU通过执行指令来从RAM中读取数据并执行操作。这些指令包括加载数据到寄存器、执行算术或逻辑运算、将数据存储回内存等。
- CPU与二进制指令:
- CPU按照存储在RAM中的二进制指令的顺序逐条执行。每一条指令都告诉CPU要执行什么操作,以及操作的数据在哪里(通常在寄存器或内存中)。
- CPU内部有多个寄存器,用于存储数据和指令的地址。其中,程序计数器(PC寄存器)用于存储下一条要执行的指令的地址。
- 当CPU执行完一条指令后,它会从PC寄存器中取出下一条指令的地址,并加载该指令到指令寄存器中进行分析和执行。这个过程不断重复,直到程序结束。
cpu超线程
"超线程"是英特尔提出的的一种方式,使得逻辑核数翻倍,其实也是一种榨干硬件的方式。一个核心能上一个线程,但是这个线程有时候也会"休息",导致这时候核心也是一个空闲的状态,导致不能完全利用到核心算力,因此英特尔提出的这个方案其实就是一个核心管两个线程,一个线程空出核心的时候,另一个线程就上核心,就类似于进程切换,将CPU利用起来。
CPU的简易架构与处理数据过程
中央处理器(CPU)与进程处理数据的交互逻辑:
- 首先进程产生数据存入内存或者cpu缓存中:当进程运行时,它会产生和访问各种数据。这些数据通常首先存储在RAM(随机访问存储器)中。其次是在cpu缓存中,cpu缓存中可能有这些数据的副本。
- 然后cpu从cpu缓存或者内存中读取和处理数据:
- cpu预取指令从缓存或者内存中取出数据。当CPU需要执行一个程序或访问某个数据时,它首先会检查缓存中是否有该数据。如果没有,CPU会向内存发出请求,内存会响应这个请求并将数据发送到CPU。这个过程涉及到内存管理单元(MMU)和CPU的协作,以确保数据能够正确地传输到CPU。
- 然后cpu中的译码器的作用就是判断指令需要哪些寄存器,比如需要加法器,就从寄存器堆里取出相应的寄存器数据
- 然后进入到算术逻辑单元执行,执行后又将数据回写到寄存器堆里的一些寄存器
- 处理数据完毕后,如果需要将数据写入内存的话,数据可以直接从寄存器写入到内存中,也可以先经过CPU缓存,再到内存。也可以数据被直接写入内存,并且同时更新缓存。现代CPU通常会根据复杂的缓存策略和算法来决定是否将数据写入缓存。

进程与MMU(内存管理单元)
mmu作用
MMU(内存管理单元)是计算机硬件的一部分,通常与CPU紧密集成,负责处理所有进程的内存访问请求,并进行地址转换、内存保护等任务。
一个进程产生一块虚拟内存,在操作系统中,每个进程都有自己的虚拟地址空间。当进程访问内存时,它使用虚拟地址来引用数据。这些虚拟地址通过MMU转换为物理地址,以便CPU能够实际访问内存中的数据。
- 虚拟地址: 可用的地址空间 有 4G,最大4G的虚拟地址空间。比如0x804a4000 int a = 10;,这个地址是一个虚拟地址。
- 物理地址:1000。物理地址的大小就是我们内存条的大小。
- MMU做的事就是将虚拟地址上的数据写到物理地址上。

cpu和mmu的关系
CPU(Central Processing Unit,中央处理器):作为计算机系统的核心,负责执行各种计算任务和控制操作。它是信息处理和程序运行的最终执行单元。
MMU(Memory Management Unit,内存管理单元):是一种硬件设备,位于CPU和内存之间。它负责处理CPU发出的内存访问请求,并进行地址转换、虚拟内存管理、内存保护等功能。
进程与PCB(进程控制块)
PCB介绍与内部成员
每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。
/usr/src/linux-headers-3.16.0-30/include/linux/sched.h文件中可以查看struct task_struct 结构体定义。其内部成员有很多,我们重点掌握以下部分即可:
* 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。
* 进程的状态,有就绪、运行、挂起、停止等状态。
* 进程切换时需要保存和恢复的一些CPU寄存器。
* 描述虚拟地址空间的信息。
* 描述控制终端的信息。
* 当前工作目录(Current Working Directory)。
* umask掩码。
* 文件描述符表,包含很多指向file结构体的指针。
* 和信号相关的信息。
* 用户id和组id。
* 会话(Session)和进程组。
* 进程可以使用的资源上限(Resource Limit)。用 "ulimit -a"可以查看当前linux环境一下的相关资源限制,比如栈溢出对应的上限限制
PCB和mmu的关系
- MMU是负责处理中央处理器(CPU)的内存访问请求的计算机硬件。
- PCB(Process Control Block,进程控制块)不是硬件,PCB是操作系统中用于管理进程的数据结构,也被称为进程描述符或任务控制块。它通常由操作系统的内核(Kernel)进行管理。
- PCB和MMU在操作系统中各自承担不同的角色:PCB负责进程信息的存储和管理,而MMU负责内存访问的控制和转换。
- 虽然它们在功能上是分开的,但在实现进程内存管理时存在间接的关联。PCB中的内存分配情况等信息可能用于指导MMU进行虚拟地址到物理地址的转换,以确保进程能够正确地访问其虚拟地址空间中的数据。
pcb中的文件描述符表
在linux中,当用C程序打开一个文件时便会产生一个文件描述符,文件描述符是一个整数,对应文件描述符表的下标,该下标对应的值是一个文件指针,指向一个文件结构体,结构体记录了该文件当前的一些状态。本质上来说文件描述符是指这个指针,只是通常操作时传递下标给其它函数,因此粗略把这个下标整数值当做了文件描述符。

文件描述符表的大小通常是固定的,例如常见的实现中大小为1024。其中,前三个文件描述符(0、1、2)通常用于标准输入、标准输出和标准错误输出。因此,默认情况下用户进程可以打开的文件数量是1021个(1024 - 3)。文件描述符表的大小是可以更改的。
进程的四种状态
进程基本的状态有4种:就绪态,运行态,挂起态与终止态。

end
相关文章:
进程、CPU、MMU与PCB之间的关系
目录 进程与cpu(中央处理器) 源代码、程序、cpu与进程的关系 cpu超线程 CPU的简易架构与处理数据过程 进程与MMU(内存管理单元) mmu作用 cpu和mmu的关系 进程与PCB(进程控制块) PCB介绍与内部成员…...
代码随想录算法训练营Day50|1143.最长公共子序列、1035.不相交的线、53.最大子序和、392.判断子序列
最长公共子序列 1143. 最长公共子序列 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 最长公共子序列 - 动态规划 Longest Common Subsequence - Dynamic Programming_哔哩哔哩_bilibili 本题和上一题718.最长重复子数组在很多方面相似…...
国家自然科学基金标书大全(2002-2024)
数据来源:在20世纪80年代初,为了促进中国的科技体制革新并改革科研资金分配机制,中国科学院的89位院士联名向党和国家领导人提出建议,设立了国家自然科学基金的设立。国自然基金自创立以来,根据国家发展科学技术方针、…...
Python代码打包成exe应用
目录 一、前期准备 二、Pyinstaller打包步骤 Pyinstaller参数详解 三、测试 Spec 文件相关命令 一、前期准备 (1)首先,我们需要确保你的代码可以在本地电脑上的pycharm正常运行成功。 (2)我们要先安装Pyinstalle…...
CesiumJS【Basic】- #016 多边形面渲染“花了”的问题
文章目录 多边形面渲染“花了”的问题1 目标2 问题代码3 修正后代码4 总结多边形面渲染“花了”的问题 1 目标 解决多边形的面“花了”的问题 2 问题代码 使用Cesium.PerInstanceColorAppearance渲染后出现色斑 import * as Cesium from "cesium";const viewer …...
qt 开发对信号槽进行二次封装,实现信号槽管理接口。
最近做的一个项目,由于工程需要模块之间能够互相通信,但又不想模块之间耦合度太高 使用信号槽的话,需要两个类的对象或者指针在其中一个类都要体现,这样达不到效果, 想要一个管理类对这些互相通信的类之间进行管理,只需要在各自的类注册发送者和接收者即可,双方通过一…...
本地项目上传到gitee
本地项目通过webstorm上传到gitee 1.登录gitee选择新建仓库 2.输入新建仓库的名字(名字与本地项目名一致) 3.复制链接 4.找到本地项目,选中地址输入cmd打开命令提示框 5.输入git init初始化git,生成.git文件 6.webstorm中打开项目…...
ONLYOFFICE 8.1版本桌面编辑器测评:超越想象的办公体验!
在当今数字化办公时代,一个功能强大、操作便捷的办公套件对于提高工作效率至关重要。ONLYOFFICE 8.1作为一款备受瞩目的办公软件,凭借其全面的功能、优异的性能和出色的用户体验,为用户带来了超越想象的办公体验。下面,我们将对ON…...
中介子方程三十四
XXFXXuXXWXXuXXdXXrXXαXXuXpXXKXηXiXXαXXiXηXKXXpXuXXαXXrXXdXXuXWXπXXWXeXyXeXbXπXpXXNXXqXeXXrXXαXXuXpXXKXηXiXXαXXiXηXKXXpXuXXαXXrXXeXqXXNXXpXπXbXeXyXeXWXXπXWXuXXdXXrXXαXXuXpXXKXηXiXXαXXiXηXKXXpXuXXαXXrXXdXXuXXWXXuXXFXXEXXyXXEXXrXXαXXuXpXXK…...
最新Sublime Text软件安装包分享(汉化版本)
Sublime Text 是一款广受欢迎的跨平台文本编辑器,专为代码、标记和散文编辑而设计。它以其简洁的用户界面、强大的功能和高性能而著称,深受开发者和写作者的喜爱。 一、下载地址 链接:https://pan.baidu.com/s/1kErSkvc7WnML7fljQZlcOg?pwdk…...
AI-智能体基础设施
个性化记忆需要世界模型来协助构建 业界有一个精简的Agent表达公示,即:Agent大模型(LLM)记忆(Memory)主动规划(Planning)工具使用(Tool Use)。基于该公式&am…...
【docker】docker启动neo4j,并配置内存
注意下:--volume宿主机目录:/data 和 --publish宿主机port:7474 --publish宿主机port:7687 docker run -d \ --publish9801:7474 --publish9802:7687 \ --env NEO4J_AUTHneo4j/passwd \ --volume/opt/docker/data/vol-data/neo4j4.2:/data \ --restart always \ --…...
面试准备记录
6月26日 今日学习 MySQL的1-7题(中期报告,加上玩了游戏,就没有认真背题) 6月25日 今日复习 JVM的内存管理部分(1-31题) 6月24日 今日学习 类的生命周期?类加载过程?类加载器有…...
文件管理—linux(基础IO)
目录 编辑 一、C语言文件接口(库函数) hello.c写文件 hello.c读文件 输出信息到显示器 stdin & stdout & stderr 二、系统文件I/O(系统调用) hello.c 写文件: hello.c读文件 接口介绍 open open…...
【华为OD机试|01】最远足迹(Java/C/Py/JS)
目录 一、题目介绍 1.1 题目描述 1.2 备注: 1.3 输入描述 1.4 输出描述 1.5 用例 二、Java代码实现 2.1 实现思路 2.2 详细代码 2.3 代码讲解: 三、C语言实现 3.1实现步骤 3.2 实现代码 3.3 代码详解 四、Python实现 4.1 实现步骤 4.2 …...
conda安装管理配置
原文链接:conda管理配置 导言 安装卸载 卸载 卸载 docker sudo rm -r /opt/anaconda3 #conda安装位置安装 从镜像archive中下载sh脚本安装 bash ./software/Anaconda3-2024.02-1-Linux-x86_64.sh -b -p /opt/anaconda3 #conda安装位置管理 查看 conda --ver…...
鸿蒙开发HarmonyOS NEXT(一)
最近总听见大家讨论鸿蒙,前端转型的好方向?先入门学习下 目前官方版本和文档持续更新中 一、开发环境 提示:要占用的空间比较多,建议安装在剩余空间多的盘 1、下载:官网最新工具 - 下载中心 - 华为开发者联盟 (huaw…...
新能源革命风起云涌:创新科技引领可持续发展新篇章
随着全球气候变化和环境问题日益严峻,新能源革命正以其不可阻挡的势头,席卷着世界的每一个角落。 创新科技在这场革命中发挥着至关重要的作用,它不仅是新能源开发利用的引擎,更是推动可持续发展的关键力量。 新能源革命的核心在于…...
Java之TimeUnit类
1.TimeUnit类介绍 TimeUnit(时间单元)是一个描述时间单元的枚举类,在该枚举类中定义有以下的几个时间单元实例:天(DAYS)、时(HOURS)、分(MINUTES)、秒&#…...
【大数据】大数据时代的黎明
目录 前言 深入解读大数据的本质 大数据的起源与演进轨迹 大数据对社会经济的深远影响 经济领域的革新 社会治理与公共服务的智能化 创新体系的重构 面临的挑战与应对 前言 步入21世纪以来,人类文明正站在一个历史性的转折点上,迎来了大数据时代的…...
异数OS 10万人同服同屏技术的豆包造谣纠偏专用
异数OS 10万人同服同屏技术的豆包造谣纠偏专用 文章目录异数OS 10万人同服同屏技术的豆包造谣纠偏专用看看字节豆包造的谣只有空连接空逻辑只测静态,极低交互带宽要求及其离谱硬件天价没有分布式弹性不能扩容容错总结看看字节豆包造的谣 只有空连接空逻辑 这一般是…...
2026年,市面上正规SSL证书品牌众多,哪家才是真正专业之选?
在当今数字化时代,网络安全至关重要,SSL证书作为保障网站安全的关键工具,其重要性不言而喻。2026年,市面上正规的SSL证书品牌众多,企业在选择时往往会感到困惑。本文将为大家分析如何选择专业的SSL证书品牌,…...
陶哲轩:AI让数学进入「工业化」时代,数学家也可以是「包工头」
来源:机器之心编辑:张倩、陈陈很多人提到数学研究,脑子里浮现的还是那个画面:一个人,一块白板,来回踱步,等灵感突然降临。但当今世界最伟大的数学家之一、菲尔兹奖得主陶哲轩却告诉我们…...
ngx_http_join_exact_locations
1 定义 ngx_http_join_exact_locations 函数 定义在 ./nginx-1.24.0/src/http/ngx_http.cstatic ngx_int_t ngx_http_join_exact_locations(ngx_conf_t *cf, ngx_queue_t *locations) {ngx_queue_t *q, *x;ngx_http_location_queue_t *lq, *lx;q ngx_queue_he…...
虚拟内存 pagefile.sys 安全迁移教程|释放 3~8GB
摘要Windows 系统默认将虚拟内存(pagefile.sys)存放在 C 盘,长期占用 3~8GB 系统盘空间,不仅会加剧 C 盘爆满问题,还会增加磁盘读写压力,影响系统运行性能。本文整理 官方原生、安全无毒、无需第三方工具 的…...
Gurobi优化求解器状态码全解析:从model.status到对偶变量获取
Gurobi优化求解器状态码深度实战指南 当你在深夜调试一个复杂的供应链优化模型时,控制台突然弹出"STATUS: 3"的提示——这意味着什么?该如何快速定位问题?又该如何提取关键诊断信息?作为数学优化领域的工业级求解器&…...
Qwen3.5-35B-AWQ-4bit企业应用指南:教育题图解析、医疗影像初筛、办公文档理解
Qwen3.5-35B-AWQ-4bit企业应用指南:教育题图解析、医疗影像初筛、办公文档理解 1. 引言:当AI学会“看图说话”,企业效率能提升多少? 想象一下这样的场景:一位老师需要快速从几十张试卷中找出典型错题,一位…...
ArcGIS Pro像素编辑器实战:5种高效影像处理技巧(附真实案例)
ArcGIS Pro像素编辑器实战:5种高效影像处理技巧(附真实案例) 遥感影像处理是GIS工程师日常工作中的重要环节,而ArcGIS Pro的像素编辑器就像一把精准的手术刀,能帮助我们对影像数据进行精细化处理。不同于传统的批量处理…...
别再只用DoDragDrop了!手把手教你用WPF实现一个能拖拽合并数据的自定义控件(附完整源码)
WPF高级拖拽交互实战:从原生API局限到自定义控件设计 在构建现代桌面应用时,流畅自然的拖拽交互往往能极大提升用户体验。WPF虽然提供了基础的DoDragDrop API,但当我们需要实现复杂场景如卡片合并、动态数据交换时,原生方案就显得…...
Nuka Carousel与TypeScript完美集成:类型安全和开发体验提升
Nuka Carousel与TypeScript完美集成:类型安全和开发体验提升 【免费下载链接】nuka-carousel Small, fast, and accessibility-first React carousel library with an easily customizable UI and behavior to fit your brand and site. 项目地址: https://gitcod…...
