Luyoung
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
xv6 文件系统笔记(下):logging 与事务机制

xv6 文件系统笔记(下):logging 与事务机制

〇、前言计算机崩溃后如何恢复,是一个很重要的话题。对于内存中的数据无关痛痒,开机后重新载入就能解决问题;但是对于持久化存储设备,当你尝试修改一个文件,突然断电当你重新打开文件后,这个文件的状态是否正确,是一个问题。 我们讨论文件的状态是否正确,是指文件系统对于这个文件是否运行正常,比如 entry 中的 inode 信息是否与用户期望的一致,比如 size 字段是否正确等。 因此,如何从崩溃中
2023-12-18
Operating Systems
#xv6 #file system #logging
xv6 文件系统笔记(上):整体结构与磁盘布局

xv6 文件系统笔记(上):整体结构与磁盘布局

〇、前言本文将会结合 xv6 源码讨论文件系统的工作原理。 一、文件系统实现概述 xv6 文件系统可以用下面的图来表示: 按照分层的方式进行理解: 在最底层是磁盘,也就是一些实际保存数据的存储设备,正是这些设备提供了持久化存储。 在这之上是buffer cache或者说 block cache,这些cache可以避免频繁的读写磁盘。这里我们将磁盘中的数据保存在了内存中。 为了保证持久性,再往
2023-12-18
Operating Systems
#xv6 #file system #disk layout
MIT 6.S081 学习笔记:内存分配器

MIT 6.S081 学习笔记:内存分配器

〇、前言本文主要完成MIT 6.S081 实验七:locks。开始之前,切换分支: 123$ git fetch$ git checkout lock$ make clean 一、Memory allocator (moderate)Question requirements The program user/kalloctest stresses xv6’s memory all
2023-12-13
Operating Systems
#MIT 6.S081 #xv6 #operating systems
xv6 系统调用笔记(下):sleep、wakeup 与同步机制

xv6 系统调用笔记(下):sleep、wakeup 与同步机制

〇、前言本文将会结合源代码谈论 sleep、wakeup 这两个系统调用。 一、sleep()系统调用以下是sleep()函数源码: 123456789101112131415161718192021222324252627282930// Atomically release lock and sleep on chan.// Reacquires lock when awakened.vo
2023-12-11
Operating Systems
#system call #xv6 #sleep
xv6 系统调用笔记(上):exit、wait 与进程控制

xv6 系统调用笔记(上):exit、wait 与进程控制

〇、前言本文将会结合源代码谈论 exit、wait、kill 这三个系统调用。 一、exit 系统调用以下是 exit()的源码: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647// Exit the current process. Does not return./
2023-12-10
Operating Systems
#process #system call #xv6
MIT 6.S081 学习笔记:Multithreading 实验

MIT 6.S081 学习笔记:Multithreading 实验

〇、前言MIT 6.S081 实验六:Multithreading;开始之前,切换分支: 123$ git fetch $ git checkout thread $ make clean 一、实验:MultithreadingUthread: switching between threads (moderate) In this exercise you will design the
2023-12-08
Operating Systems
#MIT 6.S081 #xv6 #operating systems
MIT 6.S081 学习笔记:线程与并发基础

MIT 6.S081 学习笔记:线程与并发基础

〇、前言本文主要完成: MIT 6.S081 实验六:Multithreading;开始之前,切换分支: 123$ git fetch$ git checkout thread$ make clean 对知识的回顾。 一、线程1、线程概述为什么需要线程?为了提升性能,单核性能已经很难提升,CPU 的频率几乎已经提升不了多少了,但是可以通过提升CPU 计算单元数来提高算力。 123456
2023-12-07
Operating Systems
#MIT 6.S081 #xv6 #operating systems
MIT 6.S081 学习笔记:Copy-on-Write Fork

MIT 6.S081 学习笔记:Copy-on-Write Fork

〇、前言本文主要完成MIT 6.S081 实验五:Copy-on-Write Fork for xv6。开始之前,切换分支: 123$ git fetch$ git checkout cow$ make clean 一、问题Question requirements The fork() system call in xv6 copies all of the parent process’s
2023-12-06
Operating Systems
#MIT 6.S081 #xv6 #operating systems
xv6 Book 中文翻译:Chapter 7 调度

xv6 Book 中文翻译:Chapter 7 调度

〇、前言本文是 xv6 book 第七章的翻译,以下将开始翻译。 一、(翻译)第七章 调度任何操作系统可能会运行比计算机 CPU 数量更多的进程,因此需要一个计划来在这些进程之间进行 CPU 的时间共享。理想情况下,共享对于用户进程应该是透明的。常见的方法是通过将进程复用到硬件 CPU 上,为每个进程提供其拥有独立虚拟 CPU 的假象。本章将解释 xv6 如何实现这种复用。 7.1 复用xv6
2023-12-04
Operating Systems
#xv6 #scheduler #translation
xv6 Book 中文翻译:Chapter 6 锁

xv6 Book 中文翻译:Chapter 6 锁

〇、前言本文是 xv6 book 第六章的翻译,以下将开始翻译。 一、(翻译)第六章 锁大多数内核,包括 xv6,在执行多个活动时会交错执行。一个交错的来源是多处理器硬件:拥有多个独立执行的CPU的计算机,例如 xv6 的 RISC-V。这些多个CPU共享物理RAM,而 xv6 利用这种共享来维护所有CPU都可以读写的数据结构。这种共享引发了一个可能性,即一个CPU在读取数据结构时,另一个CP
2023-12-04
Operating Systems
#xv6 #lock #translation
1…2122232425…31

搜索

Hexo Fluid
总访问量 次 总访客数 人