操作系统
文章平均质量分 79
操作系统
解析Ta
这个作者很懒,什么都没留下…
展开
-
Mit6.S081学习记录
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2020-09-19 14:06:49 · 360748 阅读 · 8 评论 -
Mit6.S081-GDB使用
Mit6.S081-GDB使用一、简介二、常用命令1,continue2,break1)设置断点2)查看断点2)删除断点3,print三、调试xv6代码一、简介gdb可用于调试c程序二、常用命令1,continue运行直至遇到一个断点2,break1)设置断点在某个地址处设置断点:break *0x3ffffff10e在某个函数处设置断点:break syscall在某个文件某行设置断点:break kernel/syscall.c:1062)查看断点info break2)原创 2020-10-20 10:19:03 · 336862 阅读 · 0 评论 -
Mit6.S081-xv6参考书翻译
一、操作系统接口介绍操作系统的工作是为了多个程序共享一个计算机,并提供一个比硬件本身支持更有效的服务集。一个操作系统管理、抽象低级硬件,例如:一个字处理器无需关心使用的是哪种类型的硬盘。一个操作系统让多个程序共享硬件,让它们同时运行(或者说看起来像是同时运行)。总之,操作系统为程序间相互作用提供控制方式,为了让它们可以共享数据或一起工作。一个操作系统通过接口为用户程序提供服务。设计一个好的接口结果发现是比较难的。一方面,我们想让接口是简单而狭窄,因为那会让正确实现更简单。另一方面,我们可能翻译 2021-03-04 12:09:55 · 338862 阅读 · 7 评论 -
Mit6.S081-实验环境搭建
Mit6.S081-实验环境搭建前言一、Linux系统二、SSH连接工具三、环境搭建1,安装依赖2,克隆源码3,分支说明4,源码目录简析前言qemu(quick emulator):这是一个模拟硬件环境的软件,利用它可以运行我们编译好的操作系统。准备一个Linux系统,安装qemu以及其他依赖,通过git克隆下github的xv6源码,利用gcc编译源码得到可运行的操作系统,再利用qemu加载这个操作系统。一、Linux系统准备一个Linux系统,我用了阿里云的ecs(Ubuntu 20.04镜像原创 2020-09-19 14:41:27 · 341699 阅读 · 4 评论 -
Mit6.S081-实验1-Xv6 and Unix utilities
Mit6.S081-实验1-Xv6 and Unix utilities前言一、Boot xv61,实验目的2,操作流程1)切换到xv6-labs-2020代码库的lab1分支2)启动xv63)测试xv64)过程分析5)其他操作二、在xv6中添加一个自己编写的程序1,源码准备2,编译配置3,测试添加程序4,过程分析三、xv6中shell简析前言一、Boot xv61,实验目的利用qemu启动xv62,操作流程1)切换到xv6-labs-2020代码库的lab1分支git checkout ut原创 2020-09-19 15:38:36 · 357099 阅读 · 35 评论 -
Mit6.S081-实验2-System calls
Mit6.S081-实验2-System calls前言一、System call tracing1,实验准备2,实验要求3,system call调用链路4,trace system call具体实现4,执行效果5,测试效果前言一、System call tracing1,实验准备1)阅读xv6 book章节2、4.3、4.4;2)system call的用户空间代码:user/user.h和user/usys.pl3)system call的kernel空间代码:kernel/syscall原创 2020-10-19 20:32:10 · 342767 阅读 · 23 评论 -
Mit6.S081-实验3-Page tables
Mit6.S081-实验2-System calls一、Print a page table1,实验准备2,实验要求3,system call调用链路4,trace system call具体实现4,执行效果5,测试效果一、Print a page table1,实验准备1)阅读xv6 book章节32)内存布局代码:kern/memlayout.h3)虚拟内存代码:kernel/vm.c4)分配、释放物理内存代码:kernel/kalloc.c2,实验要求3,system call调用链路原创 2020-11-11 11:36:22 · 347098 阅读 · 62 评论 -
Mit6.S081-实验4-Traps
Mit6.S081-实验4-Traps一、RISC-V assembly1,实验准备2,实验要求3,相关问题一、RISC-V assembly1,实验准备1)阅读xv6 book章节42)从user space过渡到kernel space,kernel space返回到user space的汇编代码:kernel/trampoline.S3)解决所有中断的代码:kernel/trap.c2,实验要求理解一些RISC-V汇编是很重要的,你已经在6.004中学过。有个文件user/call.c在原创 2020-12-14 16:24:16 · 336389 阅读 · 20 评论 -
Mit6.S081-实验5-xv6 lazy page allocation
Mit6.S081-实验5-xv6 lazy page allocation一、Eliminate allocation from sbrk()1,实验准备2,实验要求3,具体实现二、Lazy allocation1,实验要求2,具体实现3,执行效果二、Lazytests and Usertests1,实验要求2,具体实现3,执行效果一、Eliminate allocation from sbrk()1,实验准备O/S可以跟page table hardware表演的众多小花招之一是用户空间堆内存的懒原创 2020-12-23 12:01:16 · 333428 阅读 · 3 评论 -
Mit6.S081-实验6-Copy-on-Write Fork for xv6
Mit6.S081-实验6-Copy-on-Write Fork for xv6一、前言二、The problem三、The solution四、Implement copy-on write1,实验要求2,进攻计划3,一些提示4,具体实现5,执行效果一、前言虚拟内存提供一定程度的重定向:kernel可以通过标记PTEs无效、只读(导致page faults)来中断内存引用;kernel也可以通过改变地址含义(通过更改PTES)。在电脑系统中有个说法:系统问题可以通过一定程度的重定向解决。lazy原创 2020-12-30 14:10:41 · 335782 阅读 · 22 评论 -
Mit6.S081-实验7-Multithreading
Mit6.S081-实验7-Multithreading一、实验准备二、Uthread:switching between threads1,实验要求2,一些提示3,具体实现4,执行效果一、实验准备本实验将带你熟悉多线程。你将实现线程(用户级线程包)切换,使用多线程加速程序,实现一个barrier。在写代码前,你应该确定你已经读过xv6 book的章节7:scheduling,并且读过相关代码。开始本lab前,先切换到cow分支 git fetch、git checkout cow、mak原创 2021-03-04 11:49:06 · 335078 阅读 · 3 评论 -
Mit6.S081-实验8-locks
Mit6.S081-实验8-locks一、实验准备二、Memory allocator1,实验要求2,一些提示3,具体实现一、实验准备在本实验,你将在 重构代码以提升并行 上获得经验。多核机器低并行的常见症状是high lock contention。提高并行,通常包括改变数据结构和锁策略来减少争用。你将为xv6 memory allocator和block cache这么做。在写代码之前,确保阅读xv6 book的以下部分:Chapter6:"Locking"和对应代码Section3.5原创 2021-03-10 16:57:02 · 334265 阅读 · 14 评论 -
Mit6.S081-实验9-file system
Mit6.S081-实验9-file system一、实验准备二、Large files1,准备工作2,要看什么3,你的工作4,提示5,具体实现一、实验准备在本实验中,你将添加大量文件和符号链接到xv6文件系统。在写代码前,你该从xv6 book中读章节8:File system,并学习相关代码。获取本实验xv6源代码,并检出fs分支:get fetch、git checkout fs、make clean二、Large files1,准备工作mkfs程序创建xv6文件系统磁盘镜像,并决定原创 2021-04-14 18:56:09 · 258501 阅读 · 3 评论 -
Mit6.S081-实验10-mmap
Mit6.S081-实验10-mmap一、实验准备二、mmap1,mmap函数说明2,实验要求3,一些提示4,具体实现5,测试结果一、实验准备mmap和munmap system call允许UNIX程序详细使用它们的地址空间。它们可以被用来在进程间共享内存,映射文件到进程地址空间,作为用户级page fault方案的一部分,例如课堂上讨论的GC算法。在本实验中,你将添加mmap和munmap到xv6,聚焦于内存映射文件。获取本实验xv6源码,并检出mmap分支:git fetch、git che原创 2021-04-22 00:36:51 · 248467 阅读 · 1 评论 -
Mit6.S081-实验11-networking
Mit6.S081-实验11-networking一、实验准备二、networking1,背景2,你的工作3,提示一、实验准备在本实验中你将为网络接口卡(network interface card)写一个xv6设备驱动。获取本实验xv6源码,并检出net分支:git fetch、git checkout net、make clean二、networking1,背景在写代码前,你会发现:重温xv6 book的“第五章:中断和设备驱动”是有帮助的。你将用一个被称作E1000的网络设备来处理网原创 2021-04-22 16:34:04 · 247093 阅读 · 3 评论