随笔分类 -  操作系统 / xv6

摘要:操作系统必须满足三个要求:多路,隔离,交流。 用户模式和管理模式 强隔离要求应用程序和操作系统之间有一个硬边界。如果应用程序出错,我们不希望操作系统失败或其他应用程序出错,相反操作系统应该能够清理失败的应用程序并继续运行其他应用程序。为了实现强隔离,操作系统必须安排应用程序不能修改(甚至读取)操作系 阅读全文
posted @ 2023-12-09 14:27 trashwin 阅读(24) 评论(0) 推荐(0) 编辑
摘要:in linux 调用mmap,会申请一段内存空间(文件的内存映射部分),并且自动映射到指定的文件内存映射部分。 mmap void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); addr为用 阅读全文
posted @ 2023-12-06 17:23 trashwin 阅读(97) 评论(0) 推荐(0) 编辑
摘要:xv6 file system 在我看来文件系统某种程度上是最复杂的一部分(单从页数也足以说明了),而且我对文件系统的了解其实很少,因此这部分仔细看了一下。 xv6文件系统提供类似unix的文件、目录和路径名,并将其数据存储在virtio磁盘上以实现持久化。 文件系统解决了几个挑战: 文件系统需要磁 阅读全文
posted @ 2023-12-04 18:45 trashwin 阅读(98) 评论(0) 推荐(0) 编辑
摘要:虚拟内存提供了一定程度的间接性:内核可以通过将PTE标记为无效或只读来拦截内存引用,从而导致页面错误,并可以通过修改PTE来更改地址的含义。 xv6中的fork系统调用将父进程的所有用户空间内存复制到子进程中。如果父对象很大,则复制可能需要很长时间。更糟糕的是,这项工作经常被大量浪费:fork通常在 阅读全文
posted @ 2023-12-03 18:22 trashwin 阅读(43) 评论(0) 推荐(0) 编辑
摘要:Interrupts and device drivers 驱动程序是操作系统中管理特定设备的代码:它配置设备硬件,告诉设备执行操作,处理由此产生的中断,并与可能等待设备I/O的进程进行交互。驱动程序需要与它所管理的设备并发执行并且必须理解设备的硬件接口,编写代码可能很棘手。 设备通常可以产生中断, 阅读全文
posted @ 2023-12-01 21:26 trashwin 阅读(36) 评论(0) 推荐(0) 编辑
摘要:thread 之前未解决的问题 tp是什么? the thread pointer, which xv6 uses to hold this core's hartid (core number), the index into cpus[],实际上是存放着hartid的寄存器 hartid是什么? 阅读全文
posted @ 2023-11-28 11:39 trashwin 阅读(38) 评论(0) 推荐(0) 编辑
摘要:traps 引入 三种类型的事件会导致CPU暂时搁置普通指令的执行,并强制将控制转移给处理事件的特殊代码。 系统调用。用户程序执行调用指令要求内核为它做一些事情 异常。指令(用户或内核)做了一些非法的事情,例如除以零或使用无效的虚拟地址 设备中断。当设备发出需要注意的信号时,例如当磁盘硬件完成读或写 阅读全文
posted @ 2023-11-22 10:33 trashwin 阅读(74) 评论(0) 推荐(0) 编辑
摘要:页表 地址空间简介 Xv6运行在Sv39 RISC-V上,这意味着只使用64位虚拟地址的底部39位;不使用前25位。在这个Sv39配置中,RISC-V页表逻辑上是一个包含\(2^{27}\)(134,217,728)个页表项(pte)的数组。每个PTE包含一个44位物理页码(PPN)和一些标志。分页 阅读全文
posted @ 2023-11-21 00:02 trashwin 阅读(105) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示