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汇 ...
2025第四单元总结博客 [BUAA-OO]
[BUAA-OO] 2025 第四单元总结博客
总结自己在四个单元中架构设计思维的演进
总结自己在四个单元中测试思维的演进
总结自己的课程收获
一、本单元正向建模与开发实践
hw13的架构设计是本单元正向建模最重要的环节,通过阅读题目要求和参考往届博客,从图书馆相关业务场景中提炼出系统抽象,初步设计出 UML 模型,并在后续迭代开发中根据新增需求不断完善和细化。
厘清模块职责:举个例子,图书馆 ...
2025第三单元总结博客 [BUAA-OO]
[BUAA-OO] 2025 第三单元总结博客
一、单元测试过程
1.1 单元测试
单元测试是对软件中最小可测试单元(比如一个方法)进行验证的过程,通常应该在编写代码时进行,目的是确保每个单元都能按预期工作。
单元测试通常是自动化的,可以使用JUnit这类测试框架来编写和运行测试用例。本单元中,我们测试每个方法是否符合JML约束的过程就是单元测试。
优点:
提高代码质量:通过单元测试,在编写代 ...
2025第二单元总结博客 [BUAA-OO]
[BUAA-OO] 2025 第二单元总结博客
电梯调度吟
预判影行谋略深,乘客随唤策略新。
双轿协同开新境,调度有方启后人。
负载均衡效率高,智能运作见奇勋。
电梯虽小乾坤大,智慧无穷妙理存。
电梯月结束了,又有很多全新体验。尤其是多线程的相关知识,OS期中复习线程同步互斥时又看见了熟悉的知识点,联想到OO课上学到的相关理论,感觉收获颇丰,有种知识 融会贯通 涌入我的大脑的感觉。闲话少叙,下面 ...
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 ...
2025第一单元总结博客 [BUAA-OO]
本文将从笔者自身的角度出发,总结2025年北航面向对象课程第一单元作业(HW1, HW2)的程序设计思路和架构搭建,呈现我在完成一个支持加、减、乘、乘方、三角函数、递推函数、普通函数、求导功能的科学计算器过程中所遇到的问题、思考以及解决方案。
一、架构分析
1.1 项目架构概览
本项目采用面向对象的思想,将化简表达式的总功能划分为了表达式解析部分和合并化简部分,前者对应了Lexer、Paser、 ...