这里可能没有你想看的...
10
31
6.s081 Lab6 Networking 6.s081 Lab6 Networking
这里要我们在软件层面实现数据包的收发操作。 Preparation 切换到对应分支 $ git fetch $ git checkout net $ make clean 模拟网络 我们将使用名为 E1000 的网络设备来处理网络通信,实
2023-10-31
30
6.s081 Lab5 Multithreading 6.s081 Lab5 Multithreading
现在进入操作系统的另一大特性:并发。 线程切换 in xv6 在 xv6 中,每个进程都可以视为有一个主线程,逐行运行指令,享有所有寄存器的使用权。然而,时间片到期,也就是进程收到时钟中断后,会调用 yield() 函数自愿让出 CPU。
2023-10-30
30
26
6.s081 Lab3 Traps 6.s081 Lab3 Traps
现在是,陷入内核时间。 Preparation 切换到对应分支 $ git fetch $ git checkout traps $ make clean Task1: RISC-V assembly 第一个任务就是了解一下 RISC-V
2023-10-26
25
6.s081 系统调用流程 6.s081 系统调用流程
番外篇,探究通过 shell 运行命令时,系统调用到底是个什么流程。 用户层是如何进行系统调用的 以 sleep.c 为例,在 lab0 中我们知道要修改 Makefile 中的 UPROGS 变量,并且 user/user.h 中也为我
2023-10-25
24
6.s081 Lab2 Page Tables 6.s081 Lab2 Page Tables
在本 lab 中,我们将进行页表机制的探索。 Preparation 切换到对应分支 $ git fetch $ git checkout pgtbl $ make clean Task1: Speed up system calls 该
2023-10-24
23
6.s081 Lab1 System Calls 6.s081 Lab1 System Calls
本 lab 要求我们进行系统调用代码的编写。 Preparation 切换到对应分支 $ git fetch $ git checkout syscall $ make clean 可以看到 Makefile 里内容都重置了,且测试脚本
2023-10-23
22
6.s081 Lab0 Xv6 and Unix Utilities 6.s081 Lab0 Xv6 and Unix Utilities
热身运动,实现一些 shell 命令。 Boot xv6 首先去 lab tool page 把实验所需工具都给装上,然后查看一下各个工具的版本,检查是否安装成功。 $ tool --version 获取代码,切换到实验对应分支,准备开撸
2023-10-22
19
面经 面经
个人的 面试经验整理。 C++ C 和 C++ 的区别 说实话这是个比较宏大的问题。要考虑这个问题,首先得明白什么才算「区别」。就面向对象而言,C 中也可以实现封装(成员函数可以用函数指针代替,构造/析构函数可以用工厂函数代替)、继承(
2023-10-19
11
进程间通信(IPC) 进程间通信(IPC)
为了保护操作系统中进程互不干扰,需要使用进程隔离技术,以防不同进程能够修改其他进程数据。但进程之间又不能完全隔离,需要一定的通信手段,于是开发出了进程间通信(IPC, InterProcess Communication)技术。 管道(P
09
切换进程/线程前后发生了什么? 切换进程/线程前后发生了什么?
该问题是进程与线程的区别中的一个核心问题。 进程有什么 一个进程需要存放若干数据,以及若干指令,那么首先其会有一片内存,在分页机制下,所有进程都必须有其独立的页表(PT, Page Table),从而完成虚拟地址到物理地址(用户地址空间)
07