实现 UNIX 程序 的sleep,使进程睡眠若干个滴答周期(滴答是 xv6 内核定义的时间概念,即来自定时器芯片的两次中断之间的时间。)。代码在 user/s...
大家好,又见面了,我是全栈君 MIT JOS lab2 首先把内存分布理清楚,由/boot/main.c可知这里把kernel的img的ELF header读入到物理地址0x10000处 这里能够回想JOS...lab1的一个小问。...这里不记得了就去看lab 1 内存分布就清楚了 注意到kernel结束之后就是free memory了,而在free memory的最開始存放的是pgdir,这块内存相同由boot_alloc申请...Make sure nextfree is kept aligned // to a multiple of PGSIZE. // // LAB 2: Your code here....注意以下ULIM是分界线,ULIM以上是内核地址空间,以下是用户空间 这个页面布局代表的是启用地址转换以后,不管是操作系统还是用户程序,看到的虚拟内存布局,这也就是说,操 操 作系统和用户程序使用的是同一套页文件夹和页表
/yunwei37/6.828-2018-labs 目录 MIT 6.828 操作系统工程 lab2 通关指南 目录 第1部分:物理页面管理 第2部分:虚拟内存 虚拟,线性和物理地址 引用计数 页表管理...第3部分:内核地址空间 权限和故障隔离 初始化内核地址空间 地址空间布局选择 lab2 主要是关于内存管理的部分。...kern/kclock.c 第1部分:物理页面管理 操作系统必须跟踪物理RAM的哪些部分空闲以及当前正在使用哪些部分,现在,您将编写物理页面分配器:它使用struct PageInfo对象的链接列表(...此操作系统可以支持的最大物理内存量是多少?为什么?...这部分应该是回顾lab1的知识,有一个临时性的页表; 地址空间布局选择 我们在JOS中使用的地址空间布局不是唯一可能的一种。操作系统可能会将内核映射到低线性地址,而将线性地址空间的上部留给用户进程。
MIT 6.828 操作系统工程 lab4B:Copy-on-Write Fork 用户级页面错误处理 练习 8...._pgfault_upcall 练习 11.set_pgfault_handler() 实现写时复制分叉 练习 12 实现 fork,duppage 和 pgfault MIT 6.828 操作系统工程...lab4C: 抢占式多任务和进程间通信 (IPC) 时钟中断和抢占 练习13 初始化所述IDT中的相应条目 处理时钟中断 进程间通信 (IPC) 练习 15 MIT 6.828 操作系统工程 lab4B...// LAB 4: Your code here....// LAB 4: Your code here.
更新下本实验室的两款开源工具箱的进展: 1 - AR lab 效果演示 ? 我一直有关注AR领域的创新,尤其是多屏联动、实时互动、图像分割算法等技术。
这篇是我自己探索实现 MIT 6.828 lab3A 的笔记记录,会包含一部分代码注释和要求的翻译记录,以及踩过的坑/个人的解决方案 这里是我实现的完整代码仓库,也包含其他笔记等等:https://github.com.../yunwei37/6.828-2018-labs 目录 MIT 6.828 操作系统工程 lab3A:用户环境和异常处理 目录 记录一个奇怪的问题 A部分:用户环境和异常处理 环境的状态 分配环境数组...记录一个奇怪的问题 在开始阶段我把代码 merge 到 lab3 分支中,开始运行的时候,发现会出现: kernel panic at kern/pmap.c:154: PADDR called with...static void load_icode(struct Env *e, uint8_t *binary) { // LAB 3: Your code here....但是,诸如异常,陷阱,中断,故障和中止之类的术语在整个体系结构或操作系统中没有标准含义,并且经常被使用而无视它们在特定体系结构(例如x86)上的细微差别。
MIT 6.828 操作系统工程 Lab5: File system, Spawn and Shell 这篇是我自己探索实现 MIT 6.828 lab 的笔记记录,会包含一部分代码注释和要求的翻译记录...,以及踩过的坑/个人的解决方案 实际上 lab5 可能是最简单的一个 lab 了(绝大多数的代码都已经写好了,就一点点完形填空要做) lab5 需要仔细阅读的材料比较多: 实验室这部分的主要新组件是文件系统环境...文件系统 包含以下内容,需要仔细了解: 磁盘文件系统结构 扇区和块 超级块 文件元数据 目录与常规文件 磁盘访问 我们操作系统中的文件系统环境需要能够访问磁盘,但是我们还没有在我们的内核中实现任何磁盘访问功能...我们没有采用传统的“单体”操作系统策略,即向内核添加 IDE 磁盘驱动程序以及必要的系统调用以允许文件系统访问它,而是将 IDE 磁盘驱动程序实现为用户级文件的一部分系统环境。...There are // super->s_nblocks blocks in the disk altogether. // LAB 5: Your code here.
CSAPP学习过程 这篇文章主要记录CSAPP书和lab的学习过程,具体某个lab的踩坑过程会分别附单独链接,本文主要是记录漫长的学习过程以及方便想学但是尚未开始学习的同学参考,以下是github的lab...image.png Todo Bilibili翻译课程 lecture 1-4 搭建实验环境 Data lab Bilibili翻译课程 lecture 5-9 Bomb lab Attack...lab 前置材料 一本CSAPP CSAPP的bilibili翻译课程 实验材料 参考经验贴1 参考经验贴2 我想做些什么 开设这个仓库是想记录我做CSAPP的lab的过程,也顺便将踩坑过程分享,帮助后人少走弯路...学习过程(以Lab为单位总结) 简单查阅别的学习经验后,大多数人的分享都说看书再多遍也不如做lab学到的多,lab是课程的精髓,我已经粗略的学过编译原理,计算机组成原理和操作系统,所以我会比较快速的过一遍网课然后开始...lab,目标3个月完成大多数的lab(也许有一些实在不感兴趣的lab会跳过) Timeline 2022-03-30 完成Datalab 2022-03-28 完成实验环境搭建 2022-03-27 完成
MIT 6.828 操作系统工程 Lab6: 网络驱动程序 这篇是我自己探索实现 MIT 6.828 lab6 的笔记记录,会包含一部分代码注释和要求的翻译记录,以及踩过的坑/个人的解决方案 目录:...MIT 6.828 操作系统工程 Lab6: 网络驱动程序 练习 1.time_tick 练习 2.浏览英特尔的E1000软件开发人员手册 练习 3....e1000.h lab6 实际上并没有想象中那么难,代码量很少,主要是需要理解网卡外设的运作方式。 根据网页上的提示,在需要的时候去查找手册就好。...syscall.c static int sys_time_msec(void) { // LAB 6: Your code here....static int send_data(struct http_request *req, int fd) { // LAB 6: Your code here.
LAB_3 NAT 一.NAT概述... 1 二.NAT综合实验... 3 三.TCP/UDP端口NAT映射... 5 四.利用地址转换实现负载均衡... 6 一.NAT概述 ·NAT核心思想:将私网地址转换成公网地址
首先先介绍一款工具,个人觉得老牛逼——Netdiscover,之前我询问一哥们arp扫描工具时他推荐的。
练习解答 理解操作系统的同步互斥的设计实现; 理解底层支撑技术:禁用中断、定时器、等待队列; 在ucore中理解信号量(semaphore)机制的具体实现; 理解管程机制,在ucore内核中增加基于管程...自行填写,懒得找了,可以参考kiprey 练习一 理解内核级信号量的实现和基于内核级信号量的哲学家就餐问题(不需要编码) 完成练习0后,建议大家比较一下(可用meld等文件diff比较软件)个人完成的lab6...和练习0完成后的刚修改的lab7之间的区别,分析了解lab7采用信号量的执行过程。...可以在proc的结构体里面增加信号量的相关代码,用于获取信号量的值,发出增加或减少信号量的请求,再由操作系统实现。详细可以参考kiprey,他参考了linux的实现。...//看注释知道要做什么 void cond_signal (condvar_t *cvp) { //LAB7 EXERCISE1: YOUR CODE cprintf("cond_signal
实验是基于Linux x86-64的,其中bomb文件是一个64位的可执行程序,bomb.c文件是一个C语言程序,其中包含了main函数以及其他许多函数。该实验...
《深入理解计算机系统》这本书的质量着实很高,内容丰富充实,课后的实验也都很有意思,也有一定的难度。当时做这鬼东西也是花了我不少时间最终还有几道题去网上查阅了答案...
发现该函数通过调用 strings_not_equal 函数后进行判断,接着进行反汇编:
key chain ccna key 1 key-string cisco call rsvp-sync !
其他内容建议看Kiprey ucore_lab2 练习0 合并代码,直接meld然后copy to right就行,lab1修改的文件有: kern/debug/kdebug.c kern/trap/trap.c...kern/init/init.c 可以看到lab2与lab1有很多文件不同,记得只能修改上述三个文件。...kern/mm/pmm.c找到get_pte函数,根据注释不难写出: pte_t * get_pte(pde_t *pgdir, uintptr_t la, bool create) { /* LAB2...然后lab2提了一个问题,如何使虚拟地址与物理地址相等? 显然,由于我们现在的ucore是通过虚拟地址到物理地址的映射实现的内存管理,如果要取消该映射,我们应该反向查找lab2中的映射方式。...首先是更改内核的加载地址为0,在lab2-copy中更改tools/kernel.ld,把内核的加载地址由0xc0100000修改为0x0,之后修改内核偏移地址,在kern/mm/memlayout.h
请求特权级(Requested Privilege Level,RPL):保护机制 中断与异常 在操作系统中,有三种特殊的中断事件: 异步中断(asynchronous interrupt)。...(中断方式用到) Trap-gate descriptor(系统调用用到) 特权 特权级共分为四档,分别为0-3,其中Kernel为第0特权级(ring 0),用户程序为第3特权级(ring 3),操作系统保护分别为第...TSS(Task State Segment) 是操作系统在进行进程切换时保存进程现场信息的段 trapframe结构是进入中断门所必须的结构,其结构如下 struct trapframe {...在os_kernel_lab-master/labcodes/lab1/Makefile中,可以找到要分析的makefile。 makefile的结构如下: target....../labcodes/lab1/bin/ucore.img -s -S -d in_asm -D q.log 打开ucore,打开gdb,输入target remote localhost:1234 ,
这东西不能直接拿lab4做过的用,实在是败笔。...代码: /* LAB5:EXERCISE1 YOUR CODE * should set tf_cs,tf_ds,tf_es,tf_ss,tf_esp,tf_eip,tf_eflags * NOTICE...代码: /* LAB5:EXERCISE2 YOUR CODE * replicate content of page to npage, build the map of phy addr...(使用的是qemu-1.0.1) 注意,前面如果完全正确,参考我上周写的lab4练习二最后一部分更改一下语句就可以拿到136分。...在ucore操作系统中,当一个用户父进程创建自己的子进程时,父进程会把其申请的用户空间设置为只读,子进程可共享父进程占用的用户内存空间中的页面(这就是一个共享的资源)。
环境准备 从官方git仓库拉取分支 git clone git://g.csail.mit.edu/6.824-golabs-2020 6.824lab 笔者码云仓库 https://gitee.com...实验要求 MapReduce Lab 要求我们实现一个和MapReduce论文类似的机制,也就是数单词个数Word Count。在正式开始写分布式代码之前,我们先理解一下任务和已有的代码。.../mrapps/wc.go mrworker.go 启动配置 mrcoordinator.go 启动配置 代码实现 代码实现部分只会介绍核心代码,其余代码大家可拉取笔者仓库,切换到lab1分支自行阅读
领取专属 10元无门槛券
手把手带您无忧上云