Lab0

shell命令

pwd——查看当前位置所在目录

id——查看当前用户

ls——查看当前目录下的所有文件

ls -la ——显示所有目录

ls -l——查看当前目录下的所有文件的详细信息

mkdir ——创建文件目录

cat less more ——查看当前文件的内容

cp document_Name caculate_Name/ ——复制文件到目录下

rm ——删除

rm -rf ——强制删除

sudo——具有root超级用户权限的目录才能执行的命令

sudo apt-get update ——更新软件库

sudo apt-get update——在线升级软件

sudo apt-get install git gdb make——在线升级软件

ls tools/scitools/bin/linux64/——有understand代码解释器

find 目录名 -name 文件名——寻找文件位置

find labcodes/ -name "*.c" |

系统维护工具:apt、git

apt: 安装管理各种软件

git:开发版本维护软件

git

git pull 就能更新所有代码

gedit 文件名 修改文件内容

git status 查看文件状态,是否有发生更改

git add 修改的文件名

git commit -m"update 文件名" 完成文件的修改更新

image-20240720232929272

meld 文件名1 文件名2 ——比较两个文件有什么区别

​ 蓝色表示不一样的文件,绿色表示另一个文件夹没有的文件

硬件模拟器qemu

硬件模拟器qemu: 可以模拟多种CPU硬件环境,本实验中,用于模拟一台intel x86-32的计算机系统;

image-20240721151540325

image-20240721151557361

了解x86-32硬件

运行模式

80386有四种运行模式:实模式、保护模式、SMM模式和虚拟8086模式。

实模式: 80386加电启动后处于实模式运行状态,在这种状态下软件可访问的物理内存空间不能超过1MB,上无法发挥Inte1 80386以上级别的32位CPU的4GB内存管理能力。
保护模式: 支持内存分页机制,提供了对虚拟内存的良好支持。保护模式下80386支持多任务,还支持优先级机制,不同的程序可以运行在不同的优先级上。优先级一共分0~3 4个级别,操作系统运行在最高的优先级0上,应用程序则运行在比较低的级别上;配合良好的检查机制后,既可以在任务间实现数据的安全共享也可以很好地隔离各个任务

内存架构

地址是访问内存空间的索引。

  • 80386是32位的处理器,即可以寻址的物理内存地址空间为$2^{32}=4G$字节
  • 物理内存地址空间是处理器提交到总线上用于访问计算机系统中的内存和外设的最终地址。一个计算机系统中只有一个物理地址空间。 比如内存条上的地址
  • 线性地址空间是在操作系统的虚存管理之下每个运行的应用程序能访问的地址空间。每个运行的应用程序都认为自己独享整个计算机系统的地址空间,这样可让多个运行的应用程序之间相互隔离。
  • 逻辑地址空间是应用程序直接使用的地址空间。 ——————比如编程时访问的虚地址
    • 段机制启动、页机制未启动: 逻辑地址->段机制处理->线性地址=物理地址
    • 段机制和页机制都启动:逻辑地址->段机制处理->线性地址->页机制处理->物理地址

80386寄存器

  • 通用寄存器
  • 段寄存器
  • 指令指针寄存器
  • 标志寄存器
  • 控制寄存器
  • 系统地址寄存器,调试寄存器,测试寄存器

通用寄存器

  • 累加器EAX
  • 基址寄存器EBX
  • 计数器ECX
  • 数据寄存器EDX
  • ESI:源地址指针寄存器
  • EDI:目的地址指针寄存器
  • EBP:基址指针寄存器
  • ESP:堆栈指针寄存器

段寄存器

image-20240721173138935

指令寄存器和标志寄存器

image-20240721173705852

了解ucore编程方法和通用数据结构

面向对象编程

image-20240721191831075

通用数据结构

image-20240721192008490

ucore的双向链表结构定义

image-20240721205811453

image-20240721210729462

lab1 bootloader启动ucore os