计算机体系结构&程序虚拟地址空间&进程

1.计算机体系结构

.c文件经过计算机的编程和链接,转化成二进制/可执行文件 (.exe)

存储在磁盘中,通过客户双击文件打开进程,然后加载到内存中存储。

以32位为例,系统会分配4GB的内存空间。将指令和数据存储于虚拟内存中。

2.程序虚拟地址空间

先来了解一些概念和原理。

OS:负责虚拟内存和物理内存之间的转换

PC寄存器:存放程序执行的下一条指令。

程序运行的局部性原理
  1. 运行当前指令,会执行当前指令的下一条指令。
  2. 程序加载当前的数据,往往会加载相邻的数据。

CPU中的PC寄存器读取虚拟内存上的指令和数据,然后执行程序的下一条指令。

内存与CPU之间会存在三条总线:

  1. 控制总线:用于读取内存和写入内存
  2. 地址总线:用于存储指令和数据的内存地址。
  3. 数据总线:用于数据的传输

内存中的运行就是进程。用它去访问文件会比正常的读写磁盘更快(大约快上数百倍)。

Ok,现在我们来看一下4GB的内存中都会存储些什么(从低地址到高地址)。

预留空间:这里优化内存的使用,无法被访问,保留。3GB用户空间

.text代码段

.data数据段:初始化不为0的数据。

.bss 数据段:初始化为0和未初始化的数据。

开始时操作系统给.bss数据置0.

堆内存:手动申请,从低地址到高地址申请 malloc/new
栈内存:自动申请,从高地址到低地址申请
进程的内核1GB内核空间

区分指令和数据

在CPU的判断中

指令:PC指向的内存地址中的内容,CPU解码执行。

数据:被指令操作的对象。指令执行时,会从内存或寄存器中读取数据,进行运算后再写回。

3.进程

进程作为运行中的程序,是Linux执行的基本单元,资源分配和调度的基石。

看一下进程和程序的区别

进程:程序被加载到内存中执行的动态实例,包含了代码,数据和所有的运行状态。

程序:磁盘上的静态指令集合。

CPU作为执行者,单核CPU同一时刻运行一个进程,多核CPU同一时刻运行多个进程。

OK,继续看进程的内容:

包含了独立的内存空间和操作系统内核中进程控制块。

独立的内存空间中包含代码(.test),数据(.bss),堆(heap),栈(stack)。

进程的作用:实现并发执行,资源隔离,系统资源的有效管理。

资源分配:是操作系统的核心功能之一,指其将计算机的硬件资源(如 CPU、内存、硬盘、外设等),根据程序(进程)的需求和预设规则(公平性、高效性等),合理分配给各个运行中程序,以确保程序能正常执行且资源不被浪费的过程。

多任务管理:同样是操作系统的关键功能,指其通过 “时间分片” 等技术,将 CPU 运行时间切分为微小片段并轮流分配给多个程序,快速切换不同程序的运行状态,让用户主观感受上多个程序在同时执行的管理方式。

进程的五大特征:
  1. 动态性:进程是动态实例,是程序的动态执行。
  2. 并发性:多个进程同时进行。
  3. 独立性:进程是操作系统进行资源分配和调度的基本单位。(进程的内核空间可以共享)
  4. 异步性:进程以不可预知的速度向前推进
  5. 结构性:进程具有明确的结构,通常由进程控制块(PCB)、程序段、数据段三部分组成:
  • 进程控制块(PCB):是进程存在的唯一标志,存储进程的核心信息,操作系统通过 PCB 管理和控制进程
  • 程序段:存放进程执行的指令集合
  • 数据段:存放进程执行过程中使用和产生的数据
PCB(进程控制块)

是进程存在的唯一标志,存储进程的核心信息,操作系统管理和控制进程的专门数据结构。

包含进程的核心信息:

唯一的进程,ID,父ID

处理器的状态信息:切换时保存的计数器,CPU寄存器。

(PC/IP都有储存下一条要执行指令的内存地址)

进程调度信息

进程控制信息

在VMware中,用以下命令行进行查看

ls  /proc

cat /proc/1/status

进程的五大状态

创建态   就绪态    运行态   阻塞态   终止态  

创建态——>就绪态:加载完成

就绪态——>运行态:被CPU调用

运行态——>阻塞态:等待新事物的发生

运行态——>就绪态:时间片用完

阻塞态——>就绪态:事件发生

运行态——>终止态:程序正常结束或异常终止

终止态——>结束:父进程读取状态

以上便是我对于计算机体系结构&程序虚拟地址空间&进程的见解,欢迎大佬点评和修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值