首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CSAPP lab

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 完成

1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ucore-lab2

    其他内容建议看Kiprey ucore_lab2 练习0 合并代码,直接meld然后copy to right就行,lab1修改的文件有: kern/debug/kdebug.c kern/trap/trap.c...kern/init/init.c 可以看到lab2与lab1有很多文件不同,记得只能修改上述三个文件。...首先看 default_init_memmap 函数,这个函数要实现的是对内存块的初始化,通过传入页基址以及大小来插入页,但在最下面一行可以看到: list_add(&free_list, &(base...然后lab2提了一个问题,如何使虚拟地址与物理地址相等? 显然,由于我们现在的ucore是通过虚拟地址到物理地址的映射实现的内存管理,如果要取消该映射,我们应该反向查找lab2中的映射方式。...if((1 x) break; return (size_t)(1 << _i); } 类比于kern/mm中对内存的管理,我们先要初始化我们的

    64130

    ucore-lab1

    系统启动及中断 bios提供了基本的i/o功能 cpu加电后执行ROM里的初始化代码: 图片 从硬盘/网络启动是由bios决定,bios加载程序到磁盘的引导扇区,跳转到cs:ip=0000:7c00...os的内核代码,在把控制权转给os: bios和uefi的区别: 中断(来自硬件)、异常(非法指令等)、系统调用(应用程序主动向os发的请求): 计算机对上述三种情况采用的中断处理机制: cpu初始化时设置中断使能...在os_kernel_lab-master/labcodes/lab1/Makefile中,可以找到要分析的makefile。 makefile的结构如下: target......之后单步调试si得到: 可以看到0x7c00处的代码和bootasm.S处的代码一致 练习3 在bootblock.asm中,通过注释不难发现,disable interrupts禁用了中断,之后初始化了...在bootasm.S中, 初始化了gdt: # Bootstrap GDT .p2align 2 # force 4 byte

    1.9K30

    MIT 6.824 -- MapReduce Lab

    环境准备 从官方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分支自行阅读...("map任务集合初始化完毕") } 初始化完map任务列表后,代码就是启动rpc server了: func (c *Coordinator) server() { custom_log.Debug...当进入reduce阶段后,协调器会初始化reduce任务列表,每一个reduce任务初始化时都会读取当前工作目录下所有文件,获取所有文件命名符合mr-tmp-*-当前reduce任务编号的文件的名字,作为

    25910

    ucore-lab4

    kern/mm/vmm.c 练习1 分配并初始化一个进程控制块(需要编码) alloc_proc函数(位于kern/process/proc.c中)负责分配并返回一个新的struct proc_struct...ucore需要对这个结构进行最基本的初始化,你需要完成这个初始化过程。...= NULL) { //LAB4:EXERCISE1 YOUR CODE /* * below fields in proc_struct need to be initialized...do_kernel函数会调用alloc_proc函数来分配并初始化一个进程控制块,但alloc_proc只是找到了一小块内存用以记录进程的必要信息,并没有实际分配这些资源。...两个内核线程,分别是idleproc和initproc 首先是idleproc内核线程,该线程是最初的内核线程,完成内核中各个子线程的创建以及初始化。之后循环执行调度,执行其他进程。

    51110

    ucore-lab6

    和练习0完成后的刚修改的lab6之间的区别,分析了解lab6采用RR调度算法后的执行过程。...123456789101112131415161718192021222324252627282930313233343536373839404142434445 static voidRR_init(struct run_queue *rq) { list_init(&(rq->run_list)); rq->proc_num = 0;}//初始化对应的...那么也就是说,ucore的RR算法,首先调用kern/schedule/sched.c中的sched_init函数进行初始化(加入list),之后初始化进程(proc目录下的函数),ucore执行cpu_idle..._stride += BIG_STRIDE / p->lab6_priority; return p; } return NULL;}//初始化,多了一个指针static voidstride_init...当然对os不感兴趣的话混就得了 实际上,我们的错误是由于一个细节,在之前的kern/schedule/default_sched.c中,优先级初始化为0,而0在stride中是不能作为被除数存在的,因此需要更改

    47140

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    热门标签

    领券