• BUAA操作系统lab6_challenge_shell

    Lab6挑战性任务SHELL任务回顾本次SHELL挑战性任务要求我们实现的内容有:支持相对路径,支持环境变量,支持指令的自由输入,支持快捷键,支持历史指令,支持注释功能。支持反引号,支持一行多指令,支持不带.b后缀指令,支持指令条件执行,支持追加重定向,以及实现新增的多种指令。该挑战性任务具有十足的难度,也符合挑战性任务的名号。 实现过程我对SHELL的实现几乎按照指导书的顺序来进行,这样能...
  • 2025_BUAA_OO_Unit4

    OO第四单元的主题是UML建模语言,通过一个小型图书管理系统来引导我们从正向建模开始对整个程序进行设计。本单元难度较小,更多的是教会我们学会画UML图,学会看UML图,能够正确地从UML图中提取出关键元素,同时锻炼我们的正向建模思维。第四单元的结束也意味着整个OO课程结束了,回顾这学期OO的学习,我的感触也颇深。 第四单元正向建模与开发在第十三次作业的指导书中有这样一段话:我对这段话的印象很...
  • BUAA操作系统lab6

    Lab6实验报告一、思考题Thinking 6.1 示例代码中,父进程操作管道的写端,子进程操作管道的读端。如果现在想让父进程作为“读者”,代码应当如何修改 代码如下: 123456789101112131415161718192021222324252627#include <stdlib.h>#include <unistd.h>int fildes[2...
  • BUAA操作系统lab5

    Lab5实验报告一、思考题Thinking 5.1 如果通过 kseg0 读写设备,那么对于设备的写入会缓存到 Cache 中。这是一种错误的行为,在实际编写代码的时候这么做会引发不可预知的问题。请思考:这么做这会引发什么问题?对于不同种类的设备(如我们提到的串口设备和IDE磁盘)的操作会有差异吗?可以从缓存的性质和缓存更新的策略来考虑。 答:如果设备的数据缓存到Cache之后发生了更...
  • 2025_BUAA_OO_Unit3

    作业9传送门作业10传送门作业11传送门OO第三单元的主题是JML规格化设计,通过社交网络的例子让我们学会遵守规格,并在规格的限制内灵活实现规格。本单元看似难度不大,但想要顺利通过强测互测,需要仔细考虑所采用的数据结构以及算法。 测试单元测试单元测试是对程序中的最小的可测部分进行测试,一般就是我们在各种类里面实现的方法。该测试能够确保每个单元能够独立正确工作,及时进行单元测试能够尽量保证我们...
  • BUAA操作系统lab4

    Lab4实验报告一、思考题Thinking 4.1内核在保存现场的时候是如何避免破坏通用寄存器的内存在保护现场的时候,通过将自身的局部变量、返回地址、调用函数的参数等压入栈中这样来保存此时通用寄存器中的值,放置在后续操作中这些值丢失,在返回时,再将这些值弹出栈并赋给相应的寄存器。系统陷入内核调用后可以直接从当时的$a0-$a3参数寄存器中得到用户调用msyscall留下的信息吗不可以,因为这...
  • BUAA操作系统lab3

    Lab3实验报告一、思考题Thinking 3.1请结合MOS中的页目录自映射应用解释代码中e->env_pgdir[PDX(UVPT)] = PADDR(e->env_pgdir) | PTE_V 的含义从虚拟地址UVPT开始往上到ULIM之间是进程自己的页表,因此在二级页表映射机制当中,页目录中也应该含有自己本身的相关映射,由虚拟地址可知其在页目录中的第[PDX(U...
  • 2025_BUAA_OO_Unit2

    OO第二单元的主题是多线程编程,旨在通过生活中的常见例子来让我们理解并掌握多线程编程思想,同时能够编写代码正确实现多线程的同步和互斥,解决线程安全和线程交互问题。本单元围绕电梯调度这个生活中极为常见的例子开展三次作业,在满足正确性的情况下,我们还需对电梯整体调度进行设计尽可能优化性能。我完成这三次作业的过程不能用轻松来形容,线程安全和线程交互中出现的问题总是让我头疼,甚至一度认为 多线程编程...
  • BUAA操作系统lab2

    Lab2实验报告一、思考题Thinking 2.1在编写的 C 程序中,指针变量中存储的地址被视为虚拟地址,还是物理地址?MIPS 汇编程序中 lw和sw 指令使用的地址被视为虚拟地址,还是物理地址?在编写的C程序中,指针变量存储的地址为虚拟地址,MIPS汇编中lw和sw使用的地址也是虚拟地址 Thinking 2.21)从可重用性的角度,阐述用宏来实现链表的好处。在实验中定义的有关链表的宏...
  • BUAA操作系统lab1

    Lab1实验报告一、思考题Thinking 1.1尝试分别使用实验环境中的原生 x86 工具链(gcc、ld、readelf、objdump 等)和 MIPS交叉编译工具链(带有mips-linux-gnu- 前缀,如 mips-linux-gnu-gcc、mips-linux-gnu-ld),重复其中的编译和解析过程,观察相应的结果,并解释其中向objdump传入的参数的含义objdump...
12