lab6 实验报告 [BUAA-OS]
Lab6 实验报告
Part1. 思考题
Thinking 6.1 父进程为读者
示例代码中,父进程操作管道的写端,子进程操作管道的读端。如果现在想让父进程作为“读者”,代码应当如何修改?
1234567891011121314151617181920212223242526#include <stdlib.h>#include <unistd.h>int fildes ...
lab5 实验报告 [BUAA-OS]
Lab5 实验报告
Part1. 思考题
Thinking 5.1 设备操作与高速缓存
如果通过 kseg0 读写设备,那么对于设备的写入会缓存到 Cache 中。这是一种错误的行为,在实际编写代码的时候这么做会引发不可预知的问题。请思考:这么做这会引发什么问题?对于不同种类的设备(如我们提到的串口设备和 IDE 磁盘)、的操作会有差异吗?可以从缓存的性质和缓存更新的策略来考虑。
当系统崩溃或 ...
lab4 实验报告 [BUAA-OS]
Lab4实验报告
Part1. 思考题
Thinking 4.1 系统调用的实现
内核在保存现场的时候是如何避免破坏通用寄存器的?
系统陷入内核调用后可以直接从当时的a0−a0-a0−a3参数寄存器中得到用户调用msyscall留下的信息吗?
我们是怎么做到让sys开头的函数“认为”我们提供了和用户调用msyscall时同样的参数的?
内核处理系统调用的过程对Trapframe做了哪些更改?这 ...
lab3 实验报告 [BUAA-OS]
Lab3实验报告
Part1. 思考题
Thinking 3.1 对物理地址和虚拟地址的理解
请结合MOS中的页目录自映射应用解释代码中e->env_pgdir[PDX(UVPT)] = PADDR(e->env_pgdir) | PTE_V 的含义。
UVPT是一个虚拟地址,表示用户进程页表的起始地址。PDX(UVPT)是UVPT地址的页目录项的索引(页目录中第PDX(UVPT ...
lab2 实验报告 [BUAA-OS]
Lab2实验报告
Part1. 思考题
Thinking 2.1 程序代码中的地址
请根据上述说明,回答问题:在编写的 C 程序中,指针变量中存储的地址被视为虚拟地址,还是物理地址?MIPS 汇编程序中 lw和sw 指令使用的地址被视为虚拟地址,还是物理地址?
由于实际程序中访存、跳转等指令以及用于取指的PC寄存器中的访存目标地址都是虚拟地址,因此指针变量中存储的地址也是虚拟地址。而MIPS汇 ...
lab1 实验报告 [BUAA-OS]
Lab1实验报告
Part1. 思考题
Thinking 1.1 编译和 objdump
尝试分别使用实验环境中的原生 x86 工具链(gcc、ld、readelf、objdump 等)和 MIPS 交叉编译工具链(带有mips-linux-gnu- 前缀,如 mips-linux-gnu-gcc、mips-linux-gnu-ld),重复其中的编译和解析过程,观察相应的结果,并解释其中向obj ...
lab0 实验报告 [BUAA-OS]
Part1. 思考题
Thinking 0.1 Git相关
执行以下命令
12345678910111213141516171819202122232425262728cd ~/learnGit # 已初始化的git仓库touch README.txtgit status > Untracked.txt# 显示 README.txt 是一个未被跟踪的文件 # 2. 执行 git add RE ...
OS-Linux 学习备忘[BUAA-OS]
Linux 假期预习备忘
Hello, Linux!
什么是 Linux?
Linux 是基于 Linux 内核的开源操作系统,由 Linus Torvalds 于 1991 年首次发布。
Linux 发行版包括 Ubuntu、Debian 等,本教程使用 Ubuntu 22.04.1 LTS。
初识 CLI Shell
CLI Shell 概念
CLI(Command Line I ...