博客园 - fatsheep9146
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=152466
2017-01-06T00:24:40Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
feed.cnblogs.com
https://www.cnblogs.com/fatsheep9146/p/5451579.html
MIT 6.828 JOS学习笔记18. Lab 3.2 Part B: Page Faults, Breakpoints Exceptions, and System Calls - fatsheep9146
现在你的操作系统内核已经具备一定的异常处理能力了,在这部分实验中,我们将会进一步完善它,使它能够处理不同类型的中断/异常。 Handling Page Fault 缺页中断是一个非常重要的中断,因为我们在后续的实验中,非常依赖于能够处理缺页中断的能力。当缺页中断发生时,系统会把引起中断的线性地址存放
2016-05-17T13:07:00Z
2016-05-17T13:07:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】现在你的操作系统内核已经具备一定的异常处理能力了,在这部分实验中,我们将会进一步完善它,使它能够处理不同类型的中断/异常。 Handling Page Fault 缺页中断是一个非常重要的中断,因为我们在后续的实验中,非常依赖于能够处理缺页中断的能力。当缺页中断发生时,系统会把引起中断的线性地址存放 <a href="https://www.cnblogs.com/fatsheep9146/p/5451579.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5341836.html
MIT 6.828 JOS学习笔记17. Lab 3.1 Part A User Environments - fatsheep9146
Introduction 在这个实验中,我们将实现操作系统的一些基本功能,来实现用户环境下的进程的正常运行。你将会加强JOS内核的功能,为它增添一些重要的数据结构,用来记录用户进程环境的一些信息;创建一个单一的用户环境,并且加载一个程序运行它。你也可以让JOS内核能够完成用户环境所作出的任何系统调用
2016-05-01T15:28:00Z
2016-05-01T15:28:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】Introduction 在这个实验中,我们将实现操作系统的一些基本功能,来实现用户环境下的进程的正常运行。你将会加强JOS内核的功能,为它增添一些重要的数据结构,用来记录用户进程环境的一些信息;创建一个单一的用户环境,并且加载一个程序运行它。你也可以让JOS内核能够完成用户环境所作出的任何系统调用 <a href="https://www.cnblogs.com/fatsheep9146/p/5341836.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5324692.html
MIT 6.828 JOS学习笔记16. Lab 2.2 - fatsheep9146
Part 3 Kernel Address Space JOS把32位线性地址虚拟空间划分成两个部分。其中用户环境(进程运行环境)通常占据低地址的那部分,叫用户地址空间。而操作系统内核总是占据高地址的部分,叫内核地址空间。这两个部分的分界线是定义在memlayout.h文件中的一个宏 ULIM。JO
2016-03-30T18:58:00Z
2016-03-30T18:58:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】Part 3 Kernel Address Space JOS把32位线性地址虚拟空间划分成两个部分。其中用户环境(进程运行环境)通常占据低地址的那部分,叫用户地址空间。而操作系统内核总是占据高地址的部分,叫内核地址空间。这两个部分的分界线是定义在memlayout.h文件中的一个宏 ULIM。JO <a href="https://www.cnblogs.com/fatsheep9146/p/5324692.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5124921.html
MIT 6.828 JOS学习笔记15. Lab 2.1 - fatsheep9146
Lab 2: Memory Management lab2中多出来的几个文件: inc/memlayout.h kern/pmap.c kern/pmap.h kern/kclock.h kern/kclock.c memlayout.h描述了虚拟地址空间的结构,我们需要通过修改pmap.c文件来实
2016-03-23T09:45:00Z
2016-03-23T09:45:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】Lab 2: Memory Management lab2中多出来的几个文件: inc/memlayout.h kern/pmap.c kern/pmap.h kern/kclock.h kern/kclock.c memlayout.h描述了虚拟地址空间的结构,我们需要通过修改pmap.c文件来实 <a href="https://www.cnblogs.com/fatsheep9146/p/5124921.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5297812.html
C/C++ 知识点1:内存对齐 - fatsheep9146
在32位操作系统和64位操作系统上,基本数据类型分别占多少字节呢? 32位操作系统: char : 1 int :4 short : 2 unsigned int : 4 long : 4 unsigned long : 4 long long : 8 float : 4 double : 8 指针
2016-03-20T07:01:00Z
2016-03-20T07:01:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】在32位操作系统和64位操作系统上,基本数据类型分别占多少字节呢? 32位操作系统: char : 1 int :4 short : 2 unsigned int : 4 long : 4 unsigned long : 4 long long : 8 float : 4 double : 8 指针 <a href="https://www.cnblogs.com/fatsheep9146/p/5297812.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5079177.html
MIT 6.828 JOS学习笔记12 Exercise 1.9 - fatsheep9146
Lab 1中Exercise 9的解答报告 Exercise 1.9: 判断一下操作系统内核是从哪条指令开始初始化它的堆栈空间的,以及这个堆栈坐落在内存的哪个地方?内核是如何给它的堆栈保留一块内存空间的?堆栈指针又是指向这块被保留的区域的哪一端的呢? 答: 1. 首先需要判断操作系统内核是从哪条指令
2016-03-10T06:37:00Z
2016-03-10T06:37:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】Lab 1中Exercise 9的解答报告 Exercise 1.9: 判断一下操作系统内核是从哪条指令开始初始化它的堆栈空间的,以及这个堆栈坐落在内存的哪个地方?内核是如何给它的堆栈保留一块内存空间的?堆栈指针又是指向这块被保留的区域的哪一端的呢? 答: 1. 首先需要判断操作系统内核是从哪条指令 <a href="https://www.cnblogs.com/fatsheep9146/p/5079177.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5079930.html
MIT 6.828 JOS学习笔记13 Exercise 1.10 - fatsheep9146
Lab 1 Exercise 10 为了能够更好的了解在x86上的C程序调用过程的细节,我们首先找到在obj/kern/kern.asm中test_backtrace子程序的地址, 设置断点,并且探讨一下在内核启动后,这个程序被调用时发生了什么。对于这个循环嵌套调用的程序test_backtrace
2016-03-10T06:37:00Z
2016-03-10T06:37:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】Lab 1 Exercise 10 为了能够更好的了解在x86上的C程序调用过程的细节,我们首先找到在obj/kern/kern.asm中test_backtrace子程序的地址, 设置断点,并且探讨一下在内核启动后,这个程序被调用时发生了什么。对于这个循环嵌套调用的程序test_backtrace <a href="https://www.cnblogs.com/fatsheep9146/p/5079930.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5066690.html
MIT 6.828 JOS学习笔记11 Exercise 1.8 - fatsheep9146
Exercise 1.8 我们丢弃了一小部分代码---即当我们在printf中指定输出"%o"格式的字符串,即八进制格式的代码。尝试去完成这部分程序。 解答: 在这个练习中我们首先要阅读以下三个源文件的代码,弄清楚他们三者之间的关系: 三个文件分别为 \kern\printf.c,\kern\con
2016-03-08T07:54:00Z
2016-03-08T07:54:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】Exercise 1.8 我们丢弃了一小部分代码---即当我们在printf中指定输出"%o"格式的字符串,即八进制格式的代码。尝试去完成这部分程序。 解答: 在这个练习中我们首先要阅读以下三个源文件的代码,弄清楚他们三者之间的关系: 三个文件分别为 \kern\printf.c,\kern\con <a href="https://www.cnblogs.com/fatsheep9146/p/5066690.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5070145.html
MIT 6.828 JOS学习笔记10. Lab 1 Part 3: The kernel - fatsheep9146
Lab 1 Part 3: The kernel 现在我们将开始具体讨论一下JOS内核了。就像boot loader一样,内核开始的时候也是一些汇编语句,用于设置一些东西,来保证C语言的程序能够正确的执行。 使用虚拟内存 在运行boot loader时,boot loader中的链接地址(虚拟地址)
2016-03-08T07:53:00Z
2016-03-08T07:53:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】Lab 1 Part 3: The kernel 现在我们将开始具体讨论一下JOS内核了。就像boot loader一样,内核开始的时候也是一些汇编语句,用于设置一些东西,来保证C语言的程序能够正确的执行。 使用虚拟内存 在运行boot loader时,boot loader中的链接地址(虚拟地址) <a href="https://www.cnblogs.com/fatsheep9146/p/5070145.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5222500.html
Java基础知识点4:继承 - fatsheep9146
继承是面向对象编程技术中非常重要的一个基本概念。它背后的基本思想就是:通过已有的类来创建一个新的类,这个新的类可以重用(或继承)已有的类方法;新的类也可以加入新的方法和属性。 在这里我们通过一个实例来讲解继承的基本知识。假设我们在为一个公司设计一个管理系统,管理公司的人员,我们首先定义了一个雇员类E
2016-02-27T06:09:00Z
2016-02-27T06:09:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】继承是面向对象编程技术中非常重要的一个基本概念。它背后的基本思想就是:通过已有的类来创建一个新的类,这个新的类可以重用(或继承)已有的类方法;新的类也可以加入新的方法和属性。 在这里我们通过一个实例来讲解继承的基本知识。假设我们在为一个公司设计一个管理系统,管理公司的人员,我们首先定义了一个雇员类E <a href="https://www.cnblogs.com/fatsheep9146/p/5222500.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5216681.html
MIT 6.828 JOS学习笔记7. Lab 1 Part 2.2: The Boot Loader - fatsheep9146
Lab 1 Part 2 The Boot Loader Loading the Kernel 我们现在可以进一步的讨论一下boot loader中的C语言的部分,即boot/main.c。但是在我们分析之前,我们应该先回顾一些关于C语言的基础知识。 Exercise 4: 阅读关于C语言的指针部分
2016-02-26T04:58:00Z
2016-02-26T04:58:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】Lab 1 Part 2 The Boot Loader Loading the Kernel 我们现在可以进一步的讨论一下boot loader中的C语言的部分,即boot/main.c。但是在我们分析之前,我们应该先回顾一些关于C语言的基础知识。 Exercise 4: 阅读关于C语言的指针部分 <a href="https://www.cnblogs.com/fatsheep9146/p/5216681.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5216735.html
MIT 6.828 JOS学习笔记8. Exercise 1.4 - fatsheep9146
Lab 1 Exercise 4 阅读关于C语言的指针部分的知识。最好的参考书自然是"The C Programming Language"。 阅读5.1到5.5节。然后下载pointers.c的代码,并且编译运行它,确保你理解在屏幕上打印出来的所有的值是怎么来的。尤其要重点理解第1行,第6行的指针
2016-02-26T04:58:00Z
2016-02-26T04:58:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】Lab 1 Exercise 4 阅读关于C语言的指针部分的知识。最好的参考书自然是"The C Programming Language"。 阅读5.1到5.5节。然后下载pointers.c的代码,并且编译运行它,确保你理解在屏幕上打印出来的所有的值是怎么来的。尤其要重点理解第1行,第6行的指针 <a href="https://www.cnblogs.com/fatsheep9146/p/5216735.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5220004.html
MIT 6.828 JOS学习笔记9. Exercise 1.5 - fatsheep9146
Lab 1 Exercise 5 再一次追踪一下boot loader的一开始的几句指令,找到第一条满足如下条件的指令处: 当我修改了boot loader的链接地址,这个指令就会出现错误。 找到这样的指令后,把boot loader的链接地址修改一下,我们要在boot/Makefrag文件中修改它
2016-02-26T04:58:00Z
2016-02-26T04:58:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】Lab 1 Exercise 5 再一次追踪一下boot loader的一开始的几句指令,找到第一条满足如下条件的指令处: 当我修改了boot loader的链接地址,这个指令就会出现错误。 找到这样的指令后,把boot loader的链接地址修改一下,我们要在boot/Makefrag文件中修改它 <a href="https://www.cnblogs.com/fatsheep9146/p/5220004.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5115086.html
MIT 6.828 JOS学习笔记5. Exercise 1.3 - fatsheep9146
Lab 1 Exercise 3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置。然后让程序继续运行直到这个断点。跟踪/boot/boot.S文件的每一条指令,同时使用boot.S文件和系统为你反汇编出来的文件obj/boot/boot.asm。你也可以使用GDB的x/i指
2016-02-25T05:00:00Z
2016-02-25T05:00:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】Lab 1 Exercise 3 设置一个断点在地址0x7c00处,这是boot sector被加载的位置。然后让程序继续运行直到这个断点。跟踪/boot/boot.S文件的每一条指令,同时使用boot.S文件和系统为你反汇编出来的文件obj/boot/boot.asm。你也可以使用GDB的x/i指 <a href="https://www.cnblogs.com/fatsheep9146/p/5115086.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5087540.html
MIT 6.828 JOS学习笔记4. Lab 1 Part 2.1: The Boot Loader - fatsheep9146
Part 2: The Boot Loader 对于PC来说,软盘,硬盘都可以被划分为一个个大小为512字节的区域,叫做扇区。一个扇区是一次磁盘操作的最小粒度。每一次读取或者写入操作都必须是一个或多个扇区。如果一个磁盘是可以被用来启动操作系统的,就把这个磁盘的第一个扇区叫做启动扇区。这一部分介绍的b
2016-02-25T04:59:00Z
2016-02-25T04:59:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】Part 2: The Boot Loader 对于PC来说,软盘,硬盘都可以被划分为一个个大小为512字节的区域,叫做扇区。一个扇区是一次磁盘操作的最小粒度。每一次读取或者写入操作都必须是一个或多个扇区。如果一个磁盘是可以被用来启动操作系统的,就把这个磁盘的第一个扇区叫做启动扇区。这一部分介绍的b <a href="https://www.cnblogs.com/fatsheep9146/p/5087540.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5183639.html
Java基础知识点3:集合类 - fatsheep9146
集合类是Java编程中经常会用到的一类常用类库,在这里将会对整个集合类进行介绍: Collection接口: Collection接口是所有集合类的根接口,代表了所有含有多个元素的集合,无论这个集合中是否有重复元素,元素是否有序。所有我们经常使用的一些集合类,比如ArrayList,LinkedLi
2016-02-18T12:23:00Z
2016-02-18T12:23:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】集合类是Java编程中经常会用到的一类常用类库,在这里将会对整个集合类进行介绍: Collection接口: Collection接口是所有集合类的根接口,代表了所有含有多个元素的集合,无论这个集合中是否有重复元素,元素是否有序。所有我们经常使用的一些集合类,比如ArrayList,LinkedLi <a href="https://www.cnblogs.com/fatsheep9146/p/5183639.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5159969.html
Java基础知识点2:hashCode()方法 - fatsheep9146
hashCode()方法基本实现 hashCode方法是Java的Object类所定义的几个基本方法之一。我们可以深入到Object类的源码中去查看: public native int hashCode(); 其中native关键字表明这个函数是由非java语言来实现的,这个函数的功能就是返...
2016-01-26T04:55:00Z
2016-01-26T04:55:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】hashCode()方法基本实现 hashCode方法是Java的Object类所定义的几个基本方法之一。我们可以深入到Object类的源码中去查看: public native int hashCode(); 其中native关键字表明这个函数是由非java语言来实现的,这个函数的功能就是返... <a href="https://www.cnblogs.com/fatsheep9146/p/5159969.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5144015.html
Java基础知识点1:基本类型包装类 - fatsheep9146
基本类型的包装类简介 通常来说我们在程序中经常会使用元类型,比如 int data = 1; float data = 2.1F; 但是在有些场景中不能直接使用元类型,比如如果我们想要建立一个int类型的ArrayList,你就不可以直接写做: ArrayList 因为Arr...
2016-01-20T00:57:00Z
2016-01-20T00:57:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】基本类型的包装类简介 通常来说我们在程序中经常会使用元类型,比如 int data = 1; float data = 2.1F; 但是在有些场景中不能直接使用元类型,比如如果我们想要建立一个int类型的ArrayList,你就不可以直接写做: ArrayList 因为Arr... <a href="https://www.cnblogs.com/fatsheep9146/p/5144015.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5116426.html
MIT 6.828 JOS学习笔记6. Appendix 1: 实模式(real mode)与保护模式(protected mode) - fatsheep9146
在我们阅读boot loader代码时,遇到了两个非常重要的概念,实模式(real mode)和保护模式(protected mode)。 首先我们要知道这两种模式都是CPU的工作模式,实模式是早期CPU运行的工作模式,而保护模式则是现代CPU运行的模式。 但是为什么现代CPU在运行boot...
2016-01-09T06:49:00Z
2016-01-09T06:49:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】在我们阅读boot loader代码时,遇到了两个非常重要的概念,实模式(real mode)和保护模式(protected mode)。 首先我们要知道这两种模式都是CPU的工作模式,实模式是早期CPU运行的工作模式,而保护模式则是现代CPU运行的模式。 但是为什么现代CPU在运行boot... <a href="https://www.cnblogs.com/fatsheep9146/p/5116426.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fatsheep9146/p/5078179.html
MIT 6.828 JOS学习笔记3. Exercise 1.2 - fatsheep9146
这篇博文是对Lab 1中的Exercise 2的解答~ Lab 1 Exercise 2: 使用GDB的'si'命令,去追踪ROM BIOS几条指令,并且试图去猜测,它是在做什么。但是不需要把每个细节都弄清楚。 答: 在这里我们将尽可能的去分析每一条指令,由于题目中说我们只需要知道BIOS的几条指令
2015-12-26T08:10:00Z
2015-12-26T08:10:00Z
fatsheep9146
https://www.cnblogs.com/fatsheep9146/
【摘要】这篇博文是对Lab 1中的Exercise 2的解答~ Lab 1 Exercise 2: 使用GDB的'si'命令,去追踪ROM BIOS几条指令,并且试图去猜测,它是在做什么。但是不需要把每个细节都弄清楚。 答: 在这里我们将尽可能的去分析每一条指令,由于题目中说我们只需要知道BIOS的几条指令 <a href="https://www.cnblogs.com/fatsheep9146/p/5078179.html" target="_blank">阅读全文</a>