摘要:
Uthread: switching between threads (moderate) Riscv32 Callee寄存器 Name ABI Name Description Saver x0 zero Zero - x1 ra Return address Caller x2 sp Stack 阅读全文
posted @ 2024-04-21 00:15
INnoVation-V2
阅读(15)
评论(0)
推荐(0)
摘要:
第七章 调度 进程数 > CPU核数,需要在进程之间共享cpu,理想情况下,这种共享对用户进程透明。 一种常见的方法是,将进程多路复用到CPU上,使每个进程都有独享CPU的错觉。 7.1 多路复用 Xv6会在两种情况下,切换正在运行的进程。 进程等待设备或管道I/O完成、等待子进程退出,或在slee 阅读全文
posted @ 2024-04-21 00:15
INnoVation-V2
阅读(60)
评论(0)
推荐(0)
摘要:
Memory allocator (moderate) 代码地址 https://github.com/INnoVationv2/xv6-labs-2023/commit/6a93f5a9a5fca0627f9d44f185a33f30f3b8cd16 Buffer cache (hard) 创建多 阅读全文
posted @ 2024-04-21 00:14
INnoVation-V2
阅读(25)
评论(0)
推荐(0)
摘要:
第六章 锁 本章解释为什么xv6需要锁,xv6如何实现和使用锁。 6.1 竞态条件 可以将锁视为串行化并发的临界区域,使得任意时刻只有一个进程在运行这部分代码,从而保证正确。 尽管正确使用锁可以改正不正确的代码,但锁会限制性能。 锁的位置对性能也很重要。例如,在push中把acquire的位置提前也 阅读全文
posted @ 2024-04-21 00:14
INnoVation-V2
阅读(60)
评论(0)
推荐(0)
摘要:
一、E1000初始化 1.main void main() { ... #ifdef LAB_NET pci_init(); sockinit(); #endif ... } 2.pci_init void pci_init() { // e1000的寄存器映射到此地址. // vm.c maps 阅读全文
posted @ 2024-04-21 00:13
INnoVation-V2
阅读(113)
评论(0)
推荐(0)
摘要:
QEMU模仿的是82540EM CH-2 网卡架构概述 2.1 介绍 这一章将介绍PCI/PCI-X系列网卡(以下简称网卡)。接下来将介绍网卡功能、寄存器描述和初始化顺序、以及网卡的主要接口。 设计准则如下: 提供一个以太网接口,支持10/100/1000 Mb/s 物理层接口,同时也支持1000 阅读全文
posted @ 2024-04-21 00:13
INnoVation-V2
阅读(412)
评论(0)
推荐(0)
摘要:
https://www.jianshu.com/p/14ae99223683 1.uart初始化 #define LCR_BAUD_LATCH (1<<7) // 1000 0000 #define LCR_EIGHT_BITS (3<<0) // 11 #define FCR_FIFO_ENABL 阅读全文
posted @ 2024-04-21 00:13
INnoVation-V2
阅读(239)
评论(0)
推荐(1)
摘要:
学习流程 QEMU模仿的是82540EM 一、LAB说明 1. 背景 将使用一个名为 E1000 的网卡来处理网络通信。xv6是qemu模拟的硬件,连接到一个同样由 QEMU 模拟的 LAN。在这个仿真LAN上,xv6的IP地址是10.0.2.15。同时,Qemu将运行qemu的宿主的ip地址设置为 阅读全文
posted @ 2024-04-21 00:12
INnoVation-V2
阅读(66)
评论(0)
推荐(0)
摘要:
第五章 中断和设备驱动 驱动程序: 作用:配置硬件设备,告诉设备要执行的操作,处理设备产生的中断,与等待设备I/O的进程进行交互。 难点:驱动程序需与设备并行运行,驱动程序必须理解设备的硬件接口,可能没有文档。 设备中断是trap的一种,内核通过处理代码识别设备,然后调用相应的驱动程序进行处理,这种 阅读全文
posted @ 2024-04-21 00:11
INnoVation-V2
阅读(42)
评论(0)
推荐(0)
摘要:
LAB-5 COW 主要是修改fork和缺页中断处理程序 以前fork时,会直接复制原进程的页表内容到新页表,具体过程是 对于原页表中的每一页,malloc一个新页,然后复制数据到新页,最后把这一页映射到新页表 现在进行修改: 1. fork复制页表 对于新进程,为其创建新页表 直接复用旧页表项 阅读全文
posted @ 2024-04-21 00:11
INnoVation-V2
阅读(45)
评论(0)
推荐(0)

浙公网安备 33010602011771号