操作系统
小灰马
爱生活,爱读书,爱挑战!
展开
-
操作系统实践(2)——工欲善其事,必先利其器
环境搭建1. 安装bochssudo apt-get install vgabios bochs bochs-x bximagesudo apt-get install build-essential libx11-dev libxrandr-dev libgtk2.0-dev上bochs官网下载源码包,这里下载的是bochs 2.6.7版。tar zxvf bochs-2.6.7.tar.gz原创 2015-04-24 19:06:03 · 981 阅读 · 0 评论 -
操作系统实践(9)——进程、多进程、系统调用、进程调度
这一章,与前面提到的特权级转移以及中断处理机制相关的知识关系很大。首先画个图了解下这几个概念的关系以及相互作用:以前一直很想知道系统调用是怎么实现的,看完书才明白系统调用跟普通的中断处理程序实现基本是相似的,可见中断处理程序是本章重点中的重点。梳理一下书中的思路: 1.首先实现一个简单的进程,注册一个时钟中断处理程序,在进程执行的过程中发生时钟中断,执行中断处理程序,返回进程被中断的地方继续执行。原创 2015-09-01 22:42:49 · 1978 阅读 · 0 评论 -
操作系统实践(7)——分页机制
为什么分页,分页有什么好处从苦逼码农的角度,用一个租房的例子来说,原来分段机制,就好比房子整租,当租客不想租的时候,就整个房子退还给房东,房东再找其它人整租,这样有个缺点,在北京,整租一套房子,很贵,而且很多租客都是一个人或者两个人,用不着租那么大,于是一方面房东如果找不到租客,房子就空闲着,一方面要是租客咬咬牙租下整套房子,很多房间也是很浪费。于是,下面要讨论的分页机制,就是现在市场上各种单间出租原创 2015-08-12 19:00:20 · 1274 阅读 · 0 评论 -
操作系统实践(8)——从Loader到内核
到目前为止,我们写的代码都是用汇编写的,汇编的缺点就是,第一遍写完了,回头再过来看,又忘了,晦涩难懂。其实我感觉,写汇编的好处,就是能让自己去多了解一下cpu还有其它硬件的结构。硬件的的架构,决定软件的实现方式,硬件就好比基因,软件就是一个个的动物个体。本次实践涵盖的内容包括《orange’s一个操作系统的实现》书中的第三章末尾、第四章、第五章。因为这些东西比较紧凑。捋一下思路: 1. 中断与异原创 2015-08-26 11:22:04 · 1372 阅读 · 2 评论 -
操作系统实践(6)——特权级转移
关于CPL、DPL、RPL这几个概念刚开始是有点难理解的,因为各种情况都有,有点复杂。我觉得最简单的办法就是,把程序的各种段,理解为国家的各种政府机构,例如省级机构、市级机构、县级机构等,DPL就是用来标识这个的,这是个静态的概念,省级的机构办省级的事,市级的机构办市级的事,设置好了各自的职权范围。而执行程序,可以理解为去这些机构办事,CPL就是你当前的身份。而RPL呢,可以理解为,你去办事的时候,原创 2015-07-07 16:17:10 · 637 阅读 · 0 评论 -
操作系统实践(5)——关于LDT
LDT与GDT类似,为局部描述符表。使用LDT有几个步骤: 1.在GDT中加一个表项,并增加一个描述符,假设为SelectorLDT; 2.像配置GDT表那样,配置好LDT表自己的描述符,并设置好相应的ldt的选择子,选择子有一位标识是ldt还是gdt; 3.加载LDT,使用lldt指令; 4.直接jmp ldt里面的选择子。跳转到LDT里的代码段,跟用GDT跳转代码段一样,都是通过 j原创 2015-06-01 23:10:44 · 1308 阅读 · 0 评论 -
操作系统实践(4)——从保护模式返回实模式
好吧,一开始我觉得从保护模式应该就是设置一下cr0然后jmp一下就回到实模式了,这个没必要去实践。不过看到书中里面有些代码觉得有些冗余,然后里面有段话也是没看明白,动手实践才恍然大悟。于渊在书中写这个例子的思路大概是这样的: 1. 从实模式中跳转进入保护模式。(参考前面几篇) 2. 在保护模式下,访问一个地址偏大点的(实模式寻址范围之外)内存块进行读写,验证一下保护模式寻址范围是不是比实模式寻原创 2015-05-08 16:38:51 · 1670 阅读 · 0 评论 -
操作系统实践(3)——火箭助推器
本次实践的目的:打破开机引导程序512字节的限制,并从实模式切换到保护模式。 我们知道,bios开机自检、找到启动设备后,把启动设备的第一个扇区加载内存0x7c00位置开始执行。前两次实践中,我们的引导程序小于512字节,这没造成什么问题。如果我们的引导程序超过512字节怎么办呢?我的第一个想法就是,利用加载到内存的这512字节,写个程序,把启动盘中真正的引导程序继续加载到内存中。看到《Ora原创 2015-04-26 23:24:33 · 930 阅读 · 0 评论 -
操作系统实践(1)——从引导开始
第一段引导代码boot.asm org 07c00h mov ax,cs mov ds,ax mov es,ax call DispStr jmp $DispStr: mov ax,BootMessage mov bp,ax mov cx,16原创 2015-04-24 15:18:24 · 695 阅读 · 0 评论 -
[温故而知新] 《Linux/Unix系统编程手册》——文件I/O
本文对文件IO这一块做一些梳理,记录思考的一些问题和一些待解决的问题,后续会继续更新。 I hear and I forget,I see and I remember,I do and I understand.Part 1 :通用IO/**相关头文件:<fcntl.h><unistd.h>文件IO的几个系统调用fd = open(pathname, flags, mode)原创 2016-10-23 19:41:13 · 1706 阅读 · 0 评论