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

进程、CPU、MMU与PCB之间的关系

目录

进程与cpu(中央处理器)

源代码、程序、cpu与进程的关系

cpu超线程

CPU的简易架构与处理数据过程

进程与MMU(内存管理单元)

mmu作用

cpu和mmu的关系

进程与PCB(进程控制块)

PCB介绍与内部成员

PCB和mmu的关系

pcb中的文件描述符表

进程的四种状态


进程与cpu(中央处理器)

源代码、程序、cpu与进程的关系

程序和进程的关系

  • 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源,比如cpu、内存等
  • 进程,是一个抽象的概念,与操作系统原理联系紧密。进程是活跃的程序,占用系统资源。在内存中执行。程序运行起来,cpu执行二进制文件中的二进制指令,执行n多指令的过程就是一个进程,所以运行程序会产生一个进程(当然也可以产生多个进程)。

程序编译和运行过程

  1. 编译过程
    1. 代码(如C语言代码)首先通过编译器(如GCC)被转换成二进制文件。这个过程称为编译,它将高级语言代码转化为机器语言代码,也就是CPU能直接执行的二进制指令。
    2. 编译后的二进制文件通常包含程序的机器码、数据以及其他信息,这些信息都是按照CPU的指令集架构(ISA)来组织的。
  2. 加载与执行
    1. 在程序执行之前,编译后的二进制文件(如.exe或.elf文件)需要被加载到主存储器(RAM)中。这是因为CPU无法直接从硬盘等存储设备中读取和执行程序,它只能访问RAM中的数据。
    2. 当用户运行一个程序时,操作系统的程序加载器(如Windows的PEB或Linux的ELF加载器)会将程序加载到RAM中,并为其分配内存空间。
    3. CPU通过执行指令来从RAM中读取数据并执行操作。这些指令包括加载数据到寄存器、执行算术或逻辑运算、将数据存储回内存等。
  3. CPU与二进制指令
    1. CPU按照存储在RAM中的二进制指令的顺序逐条执行。每一条指令都告诉CPU要执行什么操作,以及操作的数据在哪里(通常在寄存器或内存中)。
    2. CPU内部有多个寄存器,用于存储数据和指令的地址。其中,程序计数器(PC寄存器)用于存储下一条要执行的指令的地址。
    3. 当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.最长重复子数组在很多方面相似&#xf…...

国家自然科学基金标书大全(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世纪以来,人类文明正站在一个历史性的转折点上,迎来了大数据时代的…...

龙虎榜——20250610

上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...