Lab:Copy-on-Write Fork for xv6
2024-10-24
在xv6中,fork()系统调用会复制父进程的所有用户空间内存到子进程中。当父进程很大时,这种复制过程会非常耗时,并且常常导致资源浪费,特别是当子进程紧接着执行exec()时,之前复制的大部分内存会被立即丢弃而未被使用。
2476 字
|
12 分钟
Lec11:Thread switching (Robert)
2024-10-22
14267 字
|
71 分钟
Lec10:Multiprocessors and locking (Frans)
2024-10-18
大多数内核(如xv6)通过交错执行多个进程来运行。这种交错可能来自多处理器系统,其中多个CPU共享同一物理内存,并且同时访问和修改数据结构,这可能导致数据损坏或不一致。即使在单个处理器上,内核也会切换不同的线程,导致执行交错。此外,不当时间发生的中断也可能干扰数据处理。并发是指由于多处理器、线程切换或中断引起的多个指令流交错执行的现象。
3740 字
|
19 分钟
Lec09:Interrupts (Frans)(外部中断)
2024-10-16
我想先讨论一下内存是如何被真实的操作系统(而不是像XV6这样的教学操作系统)所使用。
8228 字
|
41 分钟
Lab:lazy page allocation
2024-10-12
操作系统优化之一是惰性分配用户堆内存,即在真正需要时才分配。
2067 字
|
10 分钟
Lec08:Page faults (Frans)
2024-10-09
通过 page fault可以实现的一系列虚拟内存功能
7998 字
|
40 分钟
Lab:Unix utilities
2024-09-27
当一个管道所有的写入端都关闭且管道内没有数据时,read 操作会返回 0。但如果写入端没有关闭,即使管道内没有数据,read 操作仍会进入堵塞状态知道管道内有新的数据,而不会返回 0。所以一定要即使关闭管道。
368 字
|
2 分钟
Lab:traps
2024-09-27
backtrace 是一个**<font style="color:rgb(51, 51, 51);">存放于栈上用于指示错误发生位置的函数调用列表。</font>**
1813 字
|
9 分钟