Book-Riscv-XV6-Chap1】的更多相关文章

本文介绍在MacOS下搭建Mit6.828/6.S081 fall2019实验环境的详细过程,包括riscv工具链.qemu和xv6,对于Linux系统同样可以参考. 介绍 只有了解底层原理才能写好上层应用,曾经几度想要系统地学习OS课程,尝试去看了<计算机操作系统>.<Operating Systems: Three Easy Pieces>.<UNIX环境高级编程>,均以半途而废告终.被大量的抽象概念所淹没,对操作系统如何工作,用户程序如何运行,与CPU等硬件如何交…
前言 今晚在实验室摸鱼做6.S081的Lab3 Allocator,并立下flag,改掉一个bug就拍死一只在身边飞的蚊子.在击杀8只蚊子拿到Legendary后仍然没能通过usertest,人已原地裂解开来.遂早退实验室滚回宿舍,捡起自己已经两年没写的blog,码点自己用vscode调试xv6的心得和小tips,如果对同样在码xv6但无法忍受gdb调试界面的小伙伴们有帮助那就太好了,积点功德,但愿明天能通过test,少打几只蚊子( 还是从直接用gdb调试说起 刚开始码lab时,我想很多人第一反…
驱动是操作系统中用于管理特定设备的代码:驱动控制设备硬件,通知硬件执行操作,处理中断,与等待该设备IO的进程进行交互. 当设备需要与操作系统进行交互时,就会产生中断(陷阱的一种),之后内核的陷阱处理代码就会识别中断设备并调用对应的驱动处理程序.在XV6这一步发生在trap.c的devintr中. 大部分设备驱动在两个上下文中执行代码:顶层部分运行在进程的内核线程中,底层部分在中断处理时执行.顶层部分通过系统调用如read和write来调用,这一部分代码会请求硬件开始一个操作的执行(如请求硬盘读取…
在包括XV6的绝大部分操作系统都是多个任务交错执行的.交错的一个原因是多核硬件:多核计算机的多个CPU核心独立执行计算,如XV6的RISC-V处理器.多个CPU核心共享物理内存,XV6利用这种共享来维护所有核心都会读写的数据结构.而这种共享会导致一个CPU在读取某数据结构时,可能有另一个CPU正在对此数据进行更新:或者多个CPU同时更新同一个数据.如果不对这种并行访问进行小心的设计,就可能会导致错误的结果产生或者损坏数据.即使是单核处理器,内核也可能会在多个线程之间进行切换,导致它们交错运行.最…
Xv6的lecture LEC 1 Operating systems   L1: O/S overview L1:O/S概述   * 6.828 goals 6.828的目标   Understand operating systems in detail by designing and implementing a small O/S 通过设计并实现一个小型的系统在细节上理解操作系统.   Hands-on experience with building systems("Applyin…
Chapter 0 第0章 Operating system interfaces 操作系统接口 The job of an operating system is to share a computer among multiple programs and to provide a more useful set of services than the hardware alone supports. The operating system manages and abstracts t…
Appendix A 附录A PC hardware Pc的硬件 This appendix describes personal computer (PC) hardware, the platform on which xv6 runs. 这个附录描述了xv6运行的平台——个人计算机(PC)的硬件. A PC is a computer that adheres to several industry standards, with the goal that a given piece o…
Appendix B 附录 B Figure B-1 The relationship between logical, linear, and physical addresses. 图B-1:逻辑地址.线性地址以及物理地址的关系图 The boot loader 系统启动器 When an x86 PC boots, it starts executing a program called the BIOS, which is stored in non-volatile memory on…
最近想找个简单的类Unix系统学习下, xv6不错的, 所有代码加起来不到一万行,首先把代码跑起来还是很重要的. # 下载xv6源码并编译 git clone git://pdos.csail.mit.edu/xv6/xv6.git cd xv6/ make # 安装虚拟环境 sudo apt-get install qemu-system-i386 # 启动 qemu-system-i386 -serial mon:stdio -hdb fs.img xv6.img -smp 1 -m 512…
安装bochs 因为要运行的是xv6,所以不能直接使用 apt-get 直接获取软件.apt-get获取到的软件不支持SMP (Symmetric Multi-Processing).因此,需要下载源码自己编译(源代码下载地址在下载页面的底部Download SVN Snapshot ) 需要预先安装的软件(参考 ) sudo apt-get install g++ sudo apt-get install libc6-dev sudo apt-get install build-essenti…