人工做流量的网站,北京网页制作电话,沪尚茗居官网上海,wordpress 更改服务器目录
进程与cpu#xff08;中央处理器#xff09;
源代码、程序、cpu与进程的关系
cpu超线程
CPU的简易架构与处理数据过程
进程与MMU#xff08;内存管理单元#xff09;
mmu作用
cpu和mmu的关系
进程与PCB#xff08;进程控制块#xff09;
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的关系
CPUCentral Processing Unit中央处理器作为计算机系统的核心负责执行各种计算任务和控制操作。它是信息处理和程序运行的最终执行单元。 MMUMemory 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的内存访问请求的计算机硬件。PCBProcess Control Block进程控制块不是硬件PCB是操作系统中用于管理进程的数据结构也被称为进程描述符或任务控制块。它通常由操作系统的内核Kernel进行管理。PCB和MMU在操作系统中各自承担不同的角色PCB负责进程信息的存储和管理而MMU负责内存访问的控制和转换。虽然它们在功能上是分开的但在实现进程内存管理时存在间接的关联。PCB中的内存分配情况等信息可能用于指导MMU进行虚拟地址到物理地址的转换以确保进程能够正确地访问其虚拟地址空间中的数据。 pcb中的文件描述符表
在linux中当用C程序打开一个文件时便会产生一个文件描述符文件描述符是一个整数对应文件描述符表的下标该下标对应的值是一个文件指针指向一个文件结构体结构体记录了该文件当前的一些状态。本质上来说文件描述符是指这个指针只是通常操作时传递下标给其它函数因此粗略把这个下标整数值当做了文件描述符。 文件描述符表的大小通常是固定的例如常见的实现中大小为1024。其中前三个文件描述符0、1、2通常用于标准输入、标准输出和标准错误输出。因此默认情况下用户进程可以打开的文件数量是1021个1024 - 3。文件描述符表的大小是可以更改的。 进程的四种状态
进程基本的状态有4种就绪态运行态挂起态与终止态。 end