自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(67)
  • 收藏
  • 关注

转载 ucore 源码剖析

lab1 源码剖析从实模式到保护模式初始化ds,es和ss等段寄存器为0使能A20门,其中seta20.1写数据到0x64端口,表示要写数据给8042芯片的Output Port;seta20.2写数据到0x60端口,把Output Port的第2位置为1,从而使能A20门。建立gdt,此处只设置了两个段描述符,分别对应代码段和数据段gdt: SEG_NULLASM...

2019-03-04 16:43:00 1338

转载 《ucore lab8》实验报告

资源ucore在线实验指导书我的ucore实验代码练习1: 完成读文件操作的实现(需要编码)题目首先了解打开文件的处理流程,然后参考本实验后续的文件读写操作的过程分析,编写在sfs_inode.c中sfs_io_nolock读文件中数据的实现代码。请在实验报告中给出设计实现“UNIX的PIPE机制”的概要设计方案,鼓励给出详细设计方案。解答了解打开文件的处理流程已对...

2019-03-04 16:41:00 458

转载 《ucore lab7》实验报告

资源ucore在线实验指导书我的ucore实验代码练习1: 理解内核级信号量的实现和基于内核级信号量的哲学家就餐问题(不需要编码)题目完成练习0后,建议大家比较一下(可用meld等文件diff比较软件) 个人完成的lab6和练习0完成后的刚修改的lab7之间的区别,分析了解lab7采用信号量的执行过程。执行 make grade ,大部分测试用例应该通过。请在实验报告中给...

2019-03-04 16:40:00 755

转载 《ucore lab6》实验报告

资源ucore在线实验指导书我的ucore实验代码练习1: 使用 Round Robin 调度算法(不需要编码)题目完成练习0后,建议大家比较一下(可用kdiff3等文件比较软件) 个人完成的lab5和练习0完成后的刚修改的lab6之间的区别,分析了解lab6采用RR调度算法后的执行过程。执行make grade,大部分测试用例应该通过。但执行priority.c应该过不去...

2019-03-04 16:39:00 665

转载 《ucore lab5》实验报告

资源ucore在线实验指导书我的ucore实验代码练习1: 加载应用程序并执行(需要编码)题目do_execv函数调用load_icode(位于kern/process/proc.c中) 来加载并解析一个处于内存中的ELF执行文件格式的应用程序,建立相应的用户内存空间来放置应用程序的代码段、数据段等,且要设置好proc_struct结构中的成员变量trapframe中的内容...

2019-03-04 16:37:00 1158

转载 《ucore lab4》实验报告

资源ucore在线实验指导书我的ucore实验代码练习1:分配并初始化一个进程控制块题目alloc_proc函数(位于kern/process/proc.c中) 负责分配并返回一个新的struct proc_struct结构,用于存储新建立的内核线程的管理信息。ucore需要对这个结构进行最基本的初始化,你需要完成这个初始化过程。【提示】 在alloc_proc函数的实...

2019-03-04 16:36:00 624

转载 《ucore lab3》实验报告

资源ucore在线实验指导书我的ucore实验代码练习1:给未被映射的地址映射上物理页题目完成do_pgfault(mm/vmm.c)函数,给未被映射的地址映射上物理页。设置访问权限的时候需要参考页面所在 VMA 的权限,同时需要注意映射物理页时需要操作内存控制结构所指定的页表,而不是内核的页表。注意:在LAB3 EXERCISE 1处填写代码。执行make qemu后,如...

2019-03-04 16:34:00 858

转载 《ucore lab2》实验报告

资源ucore在线实验指导书我的ucore实验代码练习1:实现 first-fit 连续物理内存分配算法题目在实现first fit 内存分配算法的回收函数时,要考虑地址连续的空闲块之间的合并操作。提示:在建立空闲页块链表时,需要按照空闲页块起始地址来排序,形成一个有序的链表。可能会修改default_pmm.c中的default_init,default_init_me...

2019-03-04 16:33:00 981

转载 《ucore lab1》实验报告

资源ucore在线实验指导书我的ucore实验代码练习1:理解通过make生成执行文件的过程详见《ucore lab1 exercise1》实验报告练习2:使用qemu执行并调试lab1中的软件详见《ucore lab1 exercise2》实验报告练习3:分析bootloader进入保护模式的过程详见《ucore lab1 exercise3》实验报告练习4:分析...

2019-03-04 16:32:00 957

转载 《ucore lab1 exercise6》实验报告

资源ucore在线实验指导书我的ucore实验代码题目:完善中断初始化和处理请完成编码工作和回答如下问题:中断描述符表(也可简称为保护模式下的中断向量表)中一个表项占多少字节?其中哪几位代表中断处理代码的入口?请编程完善kern/trap/trap.c中对中断向量表进行初始化的函数idt_init。在idt_init函数中,依次对所有中断入口进行初始化。使用mmu.h中...

2019-03-04 16:29:00 284

转载 《ucore lab1 exercise5》实验报告

资源ucore在线实验指导书我的ucore实验代码题目:实现函数调用堆栈跟踪函数我们需要在lab1中完成kdebug.c中函数print_stackframe的实现,可以通过函数print_stackframe来跟踪函数调用堆栈中记录的返回地址。如果能够正确实现此函数,可在lab1中执行 “make qemu”后,在qemu模拟器中得到类似如下的输出:ebp:0x00007...

2019-03-04 16:20:00 606

转载 《ucore lab1 exercise4》实验报告

资源ucore在线实验指导书我的ucore实验代码题目:分析bootloader加载ELF格式的OS的过程通过阅读bootmain.c,了解bootloader如何加载ELF文件。通过分析源代码和通过qemu来运行并调试bootloader&OS,理解:bootloader如何读取硬盘扇区的?bootloader是如何加载ELF格式的OS?解答问题1:bo...

2019-03-04 16:19:00 202

转载 《ucore lab1 exercise3》实验报告

资源ucore在线实验指导书我的ucore实验代码题目:分析bootloader进入保护模式的过程BIOS将通过读取硬盘主引导扇区到内存,并转跳到对应内存中的位置执行bootloader。请分析bootloader是如何完成从实模式进入保护模式的。提示:需要阅读小节“保护模式和分段机制”和lab1/boot/bootasm.S源码,了解如何从实模式切换到保护模式,需要了解...

2019-03-04 16:18:00 186

转载 《ucore lab1 exercise2》实验报告

资源ucore在线实验指导书我的ucore实验代码题目:使用qemu执行并调试lab1中的软件为了熟悉使用qemu和gdb进行的调试工作,我们进行如下的小练习:从CPU加电后执行的第一条指令开始,单步跟踪BIOS的执行。在初始化位置0x7c00设置实地址断点,测试断点正常。从0x7c00开始跟踪代码运行,将单步跟踪反汇编得到的代码与bootasm.S和bootbloc...

2019-03-04 16:17:00 278

转载 《ucore lab1 exercise1》实验报告

资源ucore在线实验指导书我的ucore实验代码题目:理解通过make生成执行文件的过程列出本实验各练习中对应的OS原理的知识点,并说明本实验中的实现部分如何对应和体现了原理中的基本概念和关键知识点。操作系统镜像文件ucore.img是如何一步一步生成的?(需要比较详细地解释Makefile中每一条相关命令和命令参数的含义,以及说明命令导致的结果)一个被系统认为是符合...

2019-03-04 16:12:00 274

转载 《Tsinghua os mooc》第21~22讲 文件系统

第二十一讲 文件系统文件系统是操作系统中管理持久性数据的子系统,提供数据存储和访问功能。组织、检索、读写访问数据大多数计算机系统都有文件系统Google 也是一个文件系统文件是具有符号名,由字节序列构成的数据项集合文件系统的基本数据单位文件名是文件的标识符号文件系统的功能分配文件磁盘空间管理文件块(位置和顺序)管理空闲空间(位置)分配算法 (策略)...

2019-03-04 15:58:00 200

转载 《Tsinghua os mooc》第17~20讲 同步互斥、信号量、管程、死锁

第十七讲 同步互斥进程并发执行好处1:共享资源。比如:多个用户使用同一台计算机。好处2:加速。I/O操作和CPU计算可以重叠(并行)。好处3:模块化。将大程序分解成小程序。以编译为例,gcc会调用cpp,cc1,cc2,as,ld。使系统易于复用和扩展。程序可划分成多个模块放在多个处理器上并行执行。原子操作原子操作是指一次不存在任何中断或失败的操作。要么操作成...

2019-03-04 15:55:00 202

转载 《Tsinghua os mooc》第15~16讲 处理机调度

第十五讲 处理机调度进程调度时机非抢占系统中,当前进程主动放弃CPU时发生调度,分为两种情况:进程从运行状态切换到等待状态进程被终结了可抢占系统中,中断请求被服务例程响应完成时发生调度,也分为两种情况:进程时间片用完有更高优先级的进程从等待切换到就绪比较调度算法的准则CPU使用率:CPU处于忙状态的时间百分比吞吐量:单位时间内完成的进程数量周转时间:...

2019-03-04 15:52:00 146

转载 《Tsinghua os mooc》第11~14讲 进程和线程

第十一讲 进程和线程进程 vs 程序程序 = 文件 (静态的可执行文件)进程 = 执行中的程序 = 程序 + 执行状态进程的组成包括程序、数据和进程控制块同一个程序的多次执行过程对应为不同进程三状态进程模型:就绪、运行、等待挂起(Suspend):把一个进程从内存转到外存。线程为什么需要引入线程?因为需要并行执行而又能共享资源的场景。线程是进程的一部分,描述指...

2019-03-04 15:50:00 150

转载 《Tsinghua oc mooc》第8~10讲 虚拟内存管理

资源OS2018Spring课程资料首页uCore OS在线实验指导书ucore实验基准源代码MOOC OS习题集OS课堂练习Piazza问答平台 暂时无法注册第八讲 虚拟内存概念为什么需要虚拟内存:计算机系统时常出现内存空间不够用的情况,虚拟存储可以在有限容量的内存中,以页为单位自动装入更多更大的程序。解决内存空间不够用的三种技术:覆盖、交换和虚拟内存。覆盖...

2019-03-04 15:49:00 108

转载 《Tsinghua oc mooc》第5~7讲 物理内存管理

资源OS2018Spring课程资料首页uCore OS在线实验指导书ucore实验基准源代码MOOC OS习题集OS课堂练习Piazza问答平台 暂时无法注册疑问段式内存管理中,逻辑地址由段选择子和段偏移量两部分组成?段选择子占16位,低3位为TI(指示是GDT还是LDT)和RPL,也就是说逻辑地址中含有TI和RPL信息?但好像内存地址只包含位置信息的吧?答:...

2019-03-04 15:46:00 164

转载 《Tsinghua os mooc》第1~4讲 启动、中断、异常和系统调用

资源OS2018Spring课程资料首页uCore OS在线实验指导书ucore实验基准源代码MOOC OS习题集OS课堂练习Piazza问答平台 暂时无法注册疑问为什么用户态和内核态不能共用一个栈?为什么系统调用时要切换到内核栈?x86的中断号哪些是硬中断、哪些是软中断或异常?x86中断描述符中的DPL是多少?DPL, CPL, RPL仍未理解?感觉获取中...

2019-03-04 15:34:00 351

转载 《MIT 6.828 Homework 2: Shell》解题报告

Homework 2的网站链接:MIT 6.828 Homework 2: shell题目下载sh.c文件,在文件中添加相应代码,以支持以下关于shell的功能:实现简单shell命令,比如cat/echo/grep/ls/sort/uniq/wc等实现I/O重定向实现管道Optional challenge exercises:Implement lists of...

2018-11-08 15:53:00 557

转载 《xv6 Appendices: PC Hardware and Boot loader》学习笔记

MIT 6.828 Lecture 2的preparation要求阅读《xv6 book》的附录部分,附录包括“PC Hardware”和“The Boot loader”两部分,并且在附录最后还有3道练习题。下面先解答3道练习题,再摘录附录中的一些知识点。Exercise问题1:为什么这样调用readseg不会出错?Due to sector granularity, the...

2018-10-18 17:12:00 260

转载 《MIT 6.828 Homework 1: boot xv6》解题报告

本作业的网站链接:MIT 6.828 Homework 1: boot xv6问题Exercise: What is on the stack?While stopped at the above breakpoint, look at the registers and the stack contents:(gdb) info reg...(gdb) x/24x $es...

2018-10-18 17:09:00 532

转载 一个memset导致的血案

本文记录解答MIT 6.828 Lab 1 Exercise 10时遇到的一个Bug。问题描述在i386_init入口处设置断点并运行,发现执行memset(edata, 0, end - edata);时,QEMU窗口会打印以下日志并卡住,GDB窗口会异常结束。这是什么原因?代码如下所示:void i386_init(void){ extern char edata[...

2018-10-16 16:38:00 482

转载 《The C Programming Language》学习笔记

第五章:指针和数组单目运算符的优先级均为2,且结合方向为自右向左。*ip++; // 将指针ip的值加1,然后获取指针ip所指向的数据的值(*ip)++; // 将指针ip所指向的数据的值加1当计算a[i]时,C编译器会立即将其转换为*(a+i)。也就是说,C语言中数组下标表达式和指针加偏移是等价的。数组名和指针的一个区别:指针是变量,可以进行赋值和加减运算;数组名不...

2018-10-15 12:18:00 107

转载 《MIT 6.828 Lab 1 Exercise 12》实验报告

本实验的网站链接:MIT 6.828 Lab 1 Exercise 12。题目Exercise 12. Modify your stack backtrace function to display, for each eip, the function name, source file name, and line number corresponding to that ei...

2018-10-15 11:55:00 291

转载 《MIT 6.828 Lab 1 Exercise 11》实验报告

本实验的网站链接:MIT 6.828 Lab 1 Exercise 11。题目The above exercise should give you the information you need to implement a stack backtrace function, which you should call mon_backtrace(). A prototype f...

2018-10-15 11:10:00 90

转载 《MIT 6.828 Lab 1 Exercise 10》实验报告

本实验的网站链接:MIT 6.828 Lab 1 Exercise 10。题目Exercise 10. To become familiar with the C calling conventions on the x86, find the address of the test_backtrace function in obj/kern/kernel.asm, set a ...

2018-10-15 11:09:00 411

转载 《MIT 6.828 Lab 1 Exercise 8》实验报告

本实验的网站链接:MIT 6.828 Lab 1 Exercise 8。题目Exercise 8. Read through kern/printf.c, lib/printfmt.c, and kern/console.c, and make sure you understand their relationship.We have omitted a small fragme...

2018-10-15 11:00:00 339

转载 《MIT 6.828 Lab 1 Exercise 7》实验报告

本实验链接:mit 6.828 lab1 Exercise 7。题目Exercise 7. Use QEMU and GDB to trace into the JOS kernel and stop at the movl %eax, %cr0. Examine memory at 0x00100000 and at 0xf0100000. Now, single step ov...

2018-10-15 10:53:00 358

转载 《MIT 6.828 Lab 1 Exercise 4》实验报告

本实验链接:mit 6.828 lab1 Exercise 4。题目Exercise 4. Read about programming with pointers in C. The best reference for the C language is The C Programming Language by Brian Kernighan and Dennis Ritch...

2018-10-15 10:51:00 177

转载 《MIT 6.828 Lab 1 Exercise 3》实验报告

本实验的网站链接:mit 6.828 lab1 Exercise 3。题目Exercise 3. Take a look at the lab tools guide, especially the section on GDB commands. Even if you're familiar with GDB, this includes some esoteric GDB c...

2018-10-15 10:47:00 313

转载 《MIT 6.828 Lab 1 Exercise 2》实验报告

本实验链接:mit 6.828 lab1 Exercise2。题目Exercise 2. Use GDB's si (Step Instruction) command to trace into the ROM BIOS for a few more instructions, and try to guess what it might be doing. You might ...

2018-10-15 10:45:00 470

转载 《Brennan's Guide to Inline Assembly》学习笔记

原文见Brennan's Guide to Inline Assembly。AT&T语法 vs Intel语法DJGPP是基于GCC的,因此它使用AT&T/UNIT语法,这和Intel语法存在一些差异。下面将介绍其差异点。寄存器命名:AT&T需要在寄存器名字前加"%",而Intel直呼其名。比如访问eax寄存器:AT&T: %eaxInte...

2018-09-17 17:58:00 119

转载 《PC Assembly Language》读书笔记

本书下载地址:pcasm-book。前言8086处理器只支持实模式(real mode),不能满足安全、多任务等需求。Q:为什么实模式不安全、不支持多任务?为什么虚模式能解决这些问题?A: 以下是根据网上搜索结果及自己的理解做出的解答,有待斟酌。(1) 安全:实模式下用户可以访问任意的物理内存,可以修改系统程序或重要数据的内容,因而不安全。虚模式下用户能够访问的内存是由Des...

2018-09-17 17:54:00 337

转载 《MIT 6.828 Lab1: Booting a PC》实验报告

《MIT 6.828 Lab1: Booting a PC》实验报告本实验的网站链接见:Lab 1: Booting a PC。实验内容熟悉x86汇编语言、QEMU x86仿真器、PC开机引导流程测试6.828 内核的启动加载器(boot loader)研究6.828 内核的初始化模板(JOS)实验题目注意:部分Exercise的解答过程较长,因此专门新建一个文档来记录...

2018-09-17 17:26:00 390

转载 MIT 6.828 课程介绍

MIT 6.828 课程介绍本文是对MIT 6.828操作系统课程介绍的简单摘录,详细介绍见6.828: Learning by doing以及朱佳顺的推荐一门课:6.828。学习资源均可以在课程主页找到,包括课程讲义、源代码、工具使用、实验作业等。2017年的课程主页中没有教学视频,想看视频的可以在2011年的课程主页中找。(无字幕,再加上我英语听力很差,基本听不懂......)w...

2018-08-12 11:30:00 982

转载 《Data Structures and Algorithm Analysis in C》学习与刷题笔记

《Data Structures and Algorithm Analysis in C》学习与刷题笔记为什么要学习DSAAC?某个月黑风高的夜晚,下班的我走在黯淡无光、冷清无人的冲之大道上,同时心里冒出一个强烈的想法:我不要再过这种无休止地加班、整天干着繁重琐碎的事情的生活了!我要回去读书!我要考研!在接下来的一个多月中,我不断在考研和换工作之间徘徊,最后我得出一个结论:我不知道读...

2017-10-26 03:00:00 547

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除