简述计算机控制系统调试和运行的过程,简述计算机原理与系统启动过程

一、哈佛结构与冯·诺依曼结构

524b780bfe5fbe1cf43b1c8a360800af.png

1、冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点:

(1)、使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;

(2)、使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。

改进的哈佛结构,其结构特点为:

(1)、使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理;

(2)、具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输;

2、冯.诺曼结构处理器具有以下几个特点:

必须有一个存储器;

必须有一个控制器;

必须有一个运算器,用于完成算术运算和逻辑运算;

必须有输入和输出设备,用于进行人机通信。

二、cup结构

d3db175a73c5b441290bb1ecd739b30c.png

控制单元:控制单元是整个CPU的指挥控制中心,由程序计数器PC(Program Counter), 指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)等,对协调整个电脑有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。

运算单元:是运算器的核心。可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。

存储单元:包括CPU片内缓存和寄存器组,是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序员规定其用途,通用寄存器的数目因微处理器而异。这个是我们以后要介绍这个重点,这里先提一下。

三、指令

1、指令的分类:

(1)数据传输指令:

(2)算术运算指令:

(3)逻辑运算指令:

(4)串指令:

(5)程序转移指令:

(6)伪指令

(7)处理机控制指令:标志处理指令

(8)浮点运算指令集

2、指令码格式:

IA-32指令码格式由四个主要部分构成:

c7235c7d3976989d4628575a8134097a.png

可选的指令前缀;

指令前缀可以包含1个到4个修改操作码行为的 1 字节前缀。安装前缀的功能,这些前缀被分为 4个组。修改操作码时,每个组的前缀一次只能使用一个(因此最多有4 个前缀字节)。

b) 操作码(opcode)

IA-32指令码格式中唯一必须的不是就是操作码。每个指令码都必须包含操作码,它定义了处理器执行的基本功能或任务。 操作码的长度在 1 到3 字节之间,它唯一地定义要执行的功能。

c) 可选的修饰符

一些操作码需要另外的修饰符来定义执行的功能中涉及到什么寄存器和内存位置。

d) 可选的数据元素

指令码的最后一部分是该功能使用的数据元素。

一些指令码从内存位置或者处理器寄存器读取数据,而一些指令码在其本身之内包含数据。这个值经常被用于表示静态数字值(比如要加的数字)或者内存位置。根据数据长度,这个值可以包含1,2,或者 4 字节的信息。

四、程序的运行过程

7658fe3db3f3ce5648789e255efc9b22.png

控制单元在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后CPU将这个地址里的指令读到指令寄存器进行译码。对于执行指令过程中所需要用到的数据,会将数据地址也送到地址总线,然后CPU把数据读到CPU的内部存储单元(就是内部寄存器)暂存起来,最后命令运算单元对数据进行处理加工。周而复始,一直这样执行下去,天荒地老,海枯石烂,直到停电。

14476aba65bf063753a769213e15f2d1.png

1、取指令:CPU的控制器从内存读取一条指令并放入指令寄存器。

2、指令译码:指令寄存器中的指令经过译码,决定该指令应进行何种操作(就是指令里的操作码)、操作数在哪里(操作数的地址)。

3、 执行指令,分两个阶段“取操作数”和“进行运算”。

4、 修改指令计数器,决定下一条指令的地址。

五、Linux操作系统

37239c89f5072d245118584caf7311c0.png

1、启动过程

.BIOS上电检测

.引导装载程序(GRUB2)

.内核初始化

.启动systemd,其实就是所有进程之父。

4c35a7e2390d74428ece4c70efb9d56b.png

2、虚拟地址空间分布

1)、虚拟地址

在linux的内存管理中,用户使用0~3GB的地址空间。而内核仅仅是用了3GB~4GB区间的地址空间。共1GB。非连

续空间的物理映射就位于3GB~4GB之间。

479e604d5136a7849c44ae75e2985656.png

2)内核地址分布

3f6ea9d969906c5a196dc443fb2cddce.png

直接映射区:线性空间中从3G开始最大896M的区间,为直接内存映射区,该区域的线性地址和物理地址存在线性转换关系:线性地址=3G+物理地址。

动态内存映射区:该区域由内核函数vmalloc来分配,特点是:线性空间连续,但是对应的物理空间不一定连续。vmalloc分配的线性地址所对应的物理页可能处于低端内存,也可能处于高端内存。

永久内存映射区:该区域可访问高端内存。访问方法是使用alloc_page(_GFP_HIGHMEM)分配高端内存页或者使用kmap函数将分配到的高端内存映射到该区域。

固定映射区:该区域和4G的顶端只有4k的隔离带,其每个地址项都服务于特定的用途,如ACPI_BASE等。

3)、进程地址分布

linux采用虚拟内存管理技术,每一个进程都有一个3G大小的独立的进程地址空间,这个地址空间就是用户空间。每个进程的用户空间都是完全独立、互补相干的。进程访问内核空间的方式:系统调用和中断。

创建进程等进程相关操作都需要分配内存给进程。这时进程申请和获得的不是物理地址,仅仅是虚拟地址。

5ed73ad87c4e662f5982250c5021380a.png

3、用户态与内核态

(1).操作系统需要两种CPU状态

内核态(Kernel Mode):运行操作系统程序,操作硬件

用户态(User Mode):运行用户程序

(2).指令划分

特权指令:只能由操作系统使用、用户程序不能使用的指令。 举例:启动I/O 内存清零 修改程序状态字 设置时钟 允许/禁止终端 停机

非特权指令:用户程序可以使用的指令。 举例:控制转移 算数运算 取数指令 访管指令(使用户程序从用户态陷入内核态)

(3).特权级别

特权环:R0、R1、R2和R3

R0相当于内核态,R3相当于用户态;

不同级别能够运行不同的指令集合;

(4).CPU状态之间的转换

用户态--->内核态:唯一途径是通过中断、异常、陷入机制(访管指令)

内核态--->用户态:设置程序状态字PSW

(5).内核态与用户态的区别

内核态与用户态是操作系统的两种运行级别,当程序运行在3级特权级上时,就可以称之为运行在用户态。因为这是最低特权级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态;

当程序运行在0级特权级上时,就可以称之为运行在内核态。

运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。当我们在系统中执行一个程序时,大部分时间是运行在用户态下的,在其需要操作系统帮助完成某些它没有权力和能力完成的工作时就会切换到内核态(比如操作硬件)。

举报/反馈

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值