计算机体系结构 您所在的位置:网站首页 x86处理器操作系统工作在 计算机体系结构

计算机体系结构

2023-09-21 06:50| 来源: 网络整理| 查看: 265

下文中部分图片摘自:https://chyyuu.gitbooks.io/ucore_os_docs/content/lab0/lab0_2_1_about_labs.html

本文将以开源操作系统Linux举例说明。

1. 操作系统概述

操作系统是用户程序和硬件之间的接口, 为用户提供各种服务和监控功能,其主要作用有处理基本的输入输出操作、分配内存和外存、为多个应用程序提供共享计算机资源的服务等。下图为操作系统在计算机系统的角色:

操作系统基本特征 并发共享虚拟化异步 一个典型的linux系统由以下部分组成 bootloader 加载操作系统的程序,常见的引导程序有Grub、redboot、Yaboot和uboot等。Linux内核映像 主要包括进程调度、内存管理、中断异常处理系统、网络系统、文件系统、外部设备驱动系统等。内核镜像的代码是可以根据需要进行裁减的。根文件系统映像 保存用户程序的根文件系统,同时该系统也可以存放一些与系统资源有关的文件。 Linux 5.4内核代码结构

下图为适配龙芯电脑的Linux的代码目录结构图(图片摘自“基于龙芯的linux内核探索解析”一书)

对linux系统来说,与体系结构相关的源代码全部放入./arch目录中(见上述代码结构图),并与其他代码相对独立在arch目录中有很多子目录,如arm、powerpc、x86、mips等目录,这些子目录分别与基于arm处理器、powerpc处理器、x86处理器、mips处理器的linux系统相对应linux内核的启动实际上是各个子系统的初始化过程,初始化完成后,内核的各项功能就进入了正常工作的可用状态。内核启动的大部分代码将会集中在arch和init两个目录中 操作系统中的相关概念 bootroom 硬件,芯片内的只读存储器或外部的rom或flash,也可以是EEPROM。它存放着处理器上电时执行的第一段代码,即BIOS代码。该代码可以对系统和外设进行初始化,加载bootloader到内存等(bootroom里的代码有一些BSP的味道) BIOS可以实现很多功能,但具体实现的功能会根据bootroom的大小确定。bootloader 软件,加载操作系统的程序,或实现操作系统及根分区或新版bootloader写入。通常和Linux代码存放在一块儿,将操作系统从存储器中分阶段加载到内存中。工作模式有:boot loading 方式和downloading方式firmware 软件,存放再ROM中的驱动程序,为特殊指令提供调用。实际上,鄙人认为firmware的作用和bootrom里的代码作用功能有些重叠,所以如果bootroom里包含了硬件信息代码、系统的初始化代码、设备驱动代码,firmware可以不使用。设备树文件 设备树是对一台机器上所有平台设备信息的描述,设备树文件通常可以和上电初始化代码链接在一起并保存到bootroom中,后同样以启动参数的方式传递给Linux内核;如果bootroom内的代码没有传递设备树信息,则Linux内核可以使用默认的设备树描述。 2. 操作系统和体系结构的联系

操作系统包括三大基本功能和三大其他功能,分别是异常和中断处理、内存管理和进程管理,以及文件系统、设备驱动和网络协议。三大基本功能主要涉及两部分内容,一部分是与体系结构相关的特定内容,另一部分是是与体系结构无关的通用框架;三大其他功能集基本均与体系结构无关。

1 OS与指令集相关的内容

(1)ISA中定义的工作态

(2)ISA中的异常处理

MIPS中的异常处理 硬件检测到异常发生,并将发生时的信息保存到CP0(特殊寄存器堆,是CPU和操作系统的交互窗口),然后跳转到操作系统的通用异常处理入口。同时禁止一切异常的检测,否则检测到的异常会使系统崩溃通用异常处理代码通过提取的异常信息识别出发生的异常,据此分发到相应的异常处理代码所发生的异常处理代码运行完毕后,CPU跳转到被异常打断的指令重新开始运行,同时使能异常检测。 2 OS与CPU硬件相关的内容

(1)硬件在异常处理时的任务

事务1和2一般由一个异常识别单元完成,且设计为组合逻辑电路,这样才能在异常发生时产生异常信息,并通知控制器进行异常处理

识别操作系统所需要了解的异常在异常发生时将异常信息保存到指定的位置能够随时将异常处理代码地址或返回地址写入PC,已完成异常处理的进入和返回能够对异常的检测进行使能

(2)虚实地址转换

3. 多种工作态和硬件保护机制

一般情况下,CPU有多种种运行模式,能够支持多个程序在各自独立的内存空间中并发执行,且有用户特权级和内核特权级的区分,让一般应用不能破坏操作系统内核和执行特权指令。

1 内存和工作态 内存

地址是访问内存空间的索引,一般内存空间有两种:一个是CPU通过总线访问物理内存空间用到的物理地址,另一个是程序员编写的应用程序用到的逻辑地址(虚拟地址)。

例如C语言中的指针存储的内容就是指针指向的变量的逻辑地址。

有关虚拟地址参见:https://blog.csdn.net/qq_39815222/article/details/107020684

工作态

利用 程序状态字的态(模式)来对特权指令、访存范围进行控制

一般分为用户态和核态

进入核态由中断/异常机制实现,按照中断/异常向量表进入到约定程序入口

2 以arm32处理器为例 七种运行模式

除用户模式外,其他六种模式为特权模式。低权模式进入高权模式要通过中断或异常

用户模式系统模式快中断模式中断模式管理模式种植模式未定义模式

线程/进程/虚拟机的现场:

大多与操作系统无关。

线程现场:寄存器的值

进程现场: 表示共享空间的内容,如页表基地址寄存器值。(进程可以看成模拟CPU)虚拟机现场: 特定的一些寄存器(虚拟机可以看成模拟计算机) 异常发生时,硬件的操作 异常模式的R14保存迁移工作模式的下一条即将执行的指令地址将CPSRd的值 3 以ARM64处理器为例 四种工作态 EL0(类似用户态) 运行应用程序EL1(雷同核心态) 运行操作系统EL2 运行虚拟机管理器EL3(secure 态:运行固定可靠程序客房为保留空间和设备) 运行只读的程序,例如一些固件,驱动程序等 如何进入特权级运行

运行SVC进入EL1,HVC进入EL2,SMC进入EL3

EL2优先级程序可以设置低优先级程序运行时的HCR_EL2寄存器

每个特权级都有自己的中断异常向量基址寄存器,保存每个特权级都有自己的向量表基地址

4 以80386处理器(x86架构)为例

对于80386处理器来说,他有四种运行模式。

四种工作模式 实模式 早期PC采用的简单运行模式,当时的DOS操作系统即运行在该模式下。 80386加电启动后处于实模式运行状态,该模式下软件可访问的物理内存空间不超过1MB,且无法发挥intel 80386以上级别的32位CPU的4GB内存管理能力。实模式将整个物理内存空间看成分段的区域,程序代码和数据位于不同的区域,OS和用户程序并没有区别对待,且每一个指针都指向实际的物理地址。保护模式 保护模式的目地在于确保应用程序无法对操作系统进行破坏。 80386处理器通过在实模式下初始化控制寄存器以及页表,然后再通过设置CR0寄存器是其中的保护模式使能位置位,从而进入到保护模式。 该模式下,处理器所有的32根地址线都可供寻址,物理寻址空间高达4GB;同时支持内存分页机制,提供了对虚拟内存的良好支持,支持多任务模式、优先级机制,不同程序可以运行在不同的特权级上SMM模式虚拟8086模式 4. 文件系统 1 概念 文件系统

文件系统是操作系统中管理持久性数据的子系统,可以童工数据存储和访问功能

文件

文件是具有符号名,由字节序列构成的数据项集合

文件是文件系统的基本数据单位

文件的属性包括名称、类型、位置、大小、保护、创建者、创建时间等

文件头:即文件系统元数据中的文件信息

文件系统的功能 分配文件磁盘空间,包括管理文件块的位置和顺序、管理空闲空间的位置等、分配算法管理文件集合,包括文件定位、命名、文件系统结构(文件的组织方式)保证数据可靠和安全,即多层次的保护数据安全,且持久地、避免系统崩溃媒体错误攻击地保存文件 5. 操作系统的启动

事实上,不同OS的启动由于计算机体系结构的不同有着多种启动方式,这是工程师根据体系结构设计的,同时针对某一体系结构下的某一操作系统来说,要根据整个架构的属性和体系结构的特点进行相应的初始化和处理,例如有些与处理器系统相关的资源如MMU、中断、系统调用等,必须根据自身系统的特点进行处理;与指令集,操作系统种类关系不大。指令集只是提供了程序和硬件衔接的接口,而操作系统种类虽然不同,但是一个OS从加载到运行的过程均是前篇一律的。

OS的启动可以分为两部分,一部分为上电后初始化和操作系统的加载,另一部分为OS内核的启动。

1 启动类别 单系统启动 加电bootrom运行osloader运行操作系统运行 双系统启动 加电片上ROMBIOS运行MBR的Grub运行Ntloader程序运行操作系统初始化



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有