![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
自己动手写操作系统
要饭真得好难
这个作者很懒,什么都没留下…
展开
-
全面剖析《自己动手写操作系统》第四章--FAT12文件系统
一、 FAT12FAT12是DOS时代就开始使用的文件系统(File System),直到现在仍然在软盘上使用,FAT12软盘的被格式化后为:有两个磁头,每个磁头80个柱面(磁道),每个柱面有18个扇区,每个扇区512个字节空间。所以标准软盘的总空间为:2 * 80 *18 * 512=1474560B=1440K=1.44M下面是FAT12的结构图:1、引导扇区原创 2012-02-22 21:52:10 · 11491 阅读 · 6 评论 -
《一个操作系统的实现》读书笔记-- 第一章--最小的“操作系统”
一、最简单的“操作系统”最最简单的“操作系统”就是一个最最简单的引导扇区(Boot Sector)。虽然它不具有任何功能,但是它却能够直接在裸机上运行,不依赖其他软件。一个引导扇区是512个字节,并且以0xAA55为结束标识的扇区。下面就是那个最最简单的引导扇区。org 07C00h ; 告诉编译器程序加载到07C00处 mov a原创 2011-12-10 18:54:29 · 12166 阅读 · 4 评论 -
《一个操作系统的实现》读书笔记--第三章--中断机制
1、中断产生的原因2、如何将中断向量与中断服务程序关联起来3、外部中断一、中断中断产生的原因有两种:一是外部中断,就是由硬件产生的中断;另一种是由指令int n产生的中断。二、如何将中断向量与中断服务程序关联起来1、实模式下:这个过程很简单,就是通过int n中的n,去中断向量表中获取该中断的中断服务程序的CS和IP,然后加载CS和IP,原创 2012-02-20 16:05:38 · 3593 阅读 · 6 评论 -
《一个操作系统的实现》读书笔记--第三章--分页机制
1、逻辑地址、线性地址和物理地址2、分页管理机制3、PDE、PTE、cr34、如何初始化页目录表与页表一、逻辑地址、线性地址和物理地址1、在未开启分页机制情况下2、在开启分页机制情况下二、分页管理机制下图向大家展示,如何通过分页管理机制,将线性地址转换为物理地址的。转换使用两级页表,第一级叫做页目录,大小为原创 2012-02-18 22:28:51 · 4912 阅读 · 10 评论 -
《一个操作系统的实现》读书笔记--第三章---不同特权级代码段之间的跳转
1、特权级2、一致代码段和非一致代码段3、DPL、RPL、CPL分别代表的含义,存储在什么位置,以及它们之间的关系4、不同特权级数据段之间的访问规则5、不同特权级代码段之间的转移6、代码段之间的转移对堆栈的影响7、结合pmtest5.asm来见证不同特权级代码段之间的跳转一、特权级在IA32的分段机制下,特权级总共有4个特权级别,从高到低分别是0、1、2、3。数原创 2012-02-15 23:26:07 · 6153 阅读 · 5 评论 -
《一个操作系统的实现》读书笔记--第三章--堆栈段的工作方式
堆栈段在实模式和保护模式下的工作方式相同,下面我们只介绍在实模式下的工作方式:其中SS 堆栈段寄存器,用来存储堆栈段的初始地址;SP 堆栈指针寄存器,用来存储堆栈段的栈顶偏移量。堆栈段初始化的工作如下: SS定位到堆栈段的起始地址(基地址,低地址),栈底位于堆栈段的有效地址的最末端(高地址)。SP初始化为堆栈段的大小,SS:SP永远指向堆栈的栈顶。在初始化时,SS:SP原创 2012-02-13 21:46:50 · 6685 阅读 · 1 评论 -
《一个操作系统的实现》读书笔记--第三章--“实模式--保护模式--实模式”转换过程
下面以pmtest2.asm为例,来讲述“实模式--保护模式--实模式”的转换过程。1、“实模式--保护模式--实模式”的转换过程。2、介绍段描述符属性3、pm.inc 中的宏定义4、pmtest2.asm源代码一、“实模式--保护模式--实模式”的转换过程1、“实模式--保护模式”的跳转(1)关中断(2)打开地址线A20(3)置cr0寄存器的末位为1原创 2012-02-13 18:39:15 · 5889 阅读 · 10 评论 -
全面剖析《自己动手写操作系统》第四章---加载Loader.bin
全面剖析《自己动手写操作系统》第四章--FAT12文件系统 http://blog.csdn.net/zgh1988/article/details/72848341、突破512字节的限制2、加载Loader进入内存一、突破512字节的限制一个操作系统从开机到开始运行,大致经历"引导—》加载内核入内存—》跳入保护模式—》开始执行内核"这样一个过程。也就是说,在原创 2012-02-24 20:17:47 · 8779 阅读 · 7 评论 -
全面剖析《自己动手写操作系统》第六章---进程
转载请标注:http://blog.csdn.net/zgh1988/article/details/7371754在一开始学习进程的时候,我们大概每个人都会遇到过这样的问题,下面就让我们带着这些问题来认识认识进程。1、进程是什么?2、什么是多进程?3、执行一个进程需要什么?4、多进程之间是如何调度的?5、进程的上下文环境是什么?6、如何创建一个新的进程?一、进程是原创 2012-03-20 10:22:33 · 3467 阅读 · 3 评论 -
全面剖析《自己动手写操作系统》第五章--加载内核Kernel.bin
1、Linux系统的安装 和 与宿主计算机共享文件夹2、global 和 extern 关键字的作用3、C调用规范(C Calling Convention)4、ELF文件5、Loader.bin进行加载内核——进入保护模式——向内核交出控制权一、Linux系统的安装 和 与宿主计算机共享文件提到Linux系统的安装,我们需要回归到第2章中2.3节——"安装虚拟原创 2012-03-07 22:04:04 · 4610 阅读 · 1 评论 -
全面剖析《自己动手写操作系统》第五章---makefile文件
转载请标注: 全面剖析《自己动手写操作系统》第五章---makefile文件 http://blog.csdn.net/zgh1988/article/details/73383801、make概述2、编译和链接3、makefile规则4、自己动手写makefile文件5、后记一、make概述 作为程序员,我们都有使用过Visualstdio原创 2012-03-09 22:20:16 · 4657 阅读 · 2 评论 -
全面剖析《自己动手写操作系统》第六章--中断处理程序
转载请标注:http://blog.csdn.net/zgh1988/article/details/7389329下面我将分别以c和d为例,来讲述单进程切换和多进程切换下的中断处理程序1、单进程环境下的中断处理程序2、多进程环境下的中断处理程序一、单进程环境下的中断处理程序 在这里我们只考虑利用时钟中断来进行进程切换。 我们知道进程是运行在ring1环境下原创 2012-03-24 21:34:43 · 3600 阅读 · 3 评论 -
全面剖析《自己动手写操作系统》第五章--Red Hat 9.0 的安装过程
《自己动手写操作系统》中,对Red Hat 9.0的安装过程中局部重要的选择给出了图示和选择,下面是我自己动手安装Red Hat 9.0的整个过程的图示。因为只想它能够完成此书中提到的功能,所以整个安装过程很简单,基本都是选择Next,我会随着对Linux的学习,对部分选择进行详细叙述,暂时就这样姑且混过去吧!1、选择安装方式:[Enter] in graphical mode | li原创 2012-03-03 20:07:56 · 2732 阅读 · 2 评论 -
《一个操作系统的实现》读书笔记--第二章--搭建工作环境
一、 熟悉Bochs虚拟机第一章我们使用虚拟机VMware运行了该最最简单的操作系统,由于VMware虚拟机不具备调试操作系统的功能,因此对于开发操作系统的程序员来说,VMware是不完备的,故本章介绍另一款虚拟机Bochs。下面我们就介绍如何使用Bochs运行该最最简单的操作系统Tinix。(计算机系统是Windows操作系统)1、安装Bochs下载Bochs安装程序,在Wind原创 2011-12-11 22:55:52 · 5633 阅读 · 3 评论