E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
自己动手写操作系统
磨刀不误砍柴工 ——《
自己动手写操作系统
》入门导引
磨刀不误砍柴工 刺猬@http://blog.csdn.net/littlehedgehog 《
自己动手写操作系统
》其实阅读所需要的前提不过只是C和汇编了,里面涉及到很多操作系统的东西
·
2015-11-12 23:42
操作系统
自己动手写操作系统
读书笔记系列 导引
自己动手写操作系统
读书笔记系列导引 刺猬@http://blog.csdn.net/littlehedgehog 自己动手读书笔记系列 本来只是些天之痕和我在这一个多月研究《
自己动手写操作系统
》
·
2015-11-12 23:41
操作系统
自己动手写操作系统
--个人实践
近期開始看于渊的《
自己动手写操作系统
》这本书,刚開始看就发现做系统的引导盘居然是软盘!心里那个汗啊! 如今都是U盘了,谁还用软盘。于是考虑用U盘。
·
2015-11-12 08:30
操作系统
《Orange’s 一个操作系统的实现》学习计划
07看过此书的第一版《
自己动手写操作系统
》,当时就很感兴趣。但是看到都是汇编及C写的就看不下去了(大学没有没有学过C和ASM,唉)。
·
2015-11-11 17:03
操作系统
自己动手写操作系统
(一)
借着本来现在就在上操作系统内核课的机会,在图书馆借了本于渊的《
自己动手写操作系统
》,准备自己亲自动手写一下,提高自己对操作系统的理解。开篇技术博客来记录一下自己的学习历程。
·
2015-11-11 16:56
操作系统
《
自己动手写操作系统
》pmtest2笔记
;DispReturn模拟一个回车的显示,(让下一个要显示的字符在下一行的开头处显示),其中edi始终指向要显示的下一个字符的位置。; ------------------------------------------------------------------------DispReturn:push eaxpush ebxmov eax, edi ;mov bl,
·
2015-11-10 22:22
操作系统
自己动手写操作系统
P121 对SelectorFlatRW和SelectorFlatC的描述
事实上,在pmtest7.asm中我们用两个段分别存放页目录表和页表(LABEL_DESC_PAGE_DIR存放页目录表,LABEL_DESC_PAGE_TBL存放页表)是为了让读者阅读时更加直观和形象。在pmtest8.asm中,我们把它们放到同一个段中,同时把增加的一套页目录和页表也放到这个段中。 为了操作方便,我们新增加一个段FLAT,其线性地址空间为0-4GB。由于分页机制启动之前线性地
·
2015-11-08 15:53
selector
img文件的制作
看了一本书,《
自己动手写操作系统
》(Downloadhttp://www.verycd.com/topics/251695/)。
·
2015-11-08 15:45
img
自己动手写操作系统
pmtest1.asm 详细解释
段机制轻松体验 内存寻址: 实模式下的内存寻址: 让我们首先来回顾实模式下的寻址方式 段首地址×16+偏移量 = 物理地址 为什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻址64KB,它无法寻址到1M内存。于是,Intel设计了这种寻址方式,先缩小4位成16位放入到段寄存器,用到时候,再将其扩大到20位,这也造成了段的首地址
·
2015-11-08 15:37
操作系统
《
自己动手写操作系统
》读书笔记——初识保护模式
书本第三章第一节是《认识保护模式》,初步 讲解了保护模式下全局描述符表GDT、段描述符、段选择子、从实模式进入保护模式等内容。去年看这个的时候,如果不是有以前学习保护模式时做的笔记,还真 不好懂呢,因为作者提供的材料不够系统,对仅学习过8086汇编语言的人来说,是不太好理解的。下面的内容大体以我以前做的笔记为纲,较为简略,只说明要 点。(本来还可以参考下以前学习保护模式时收集的资料的,很可惜,移动
·
2015-11-08 14:35
操作系统
转:错误:EMM386:Uncoverable privileged operation error #9的解决
错误:EMM386:Uncoverable privileged operation error #9的解决 最近看《
自己动手写操作系统
》。
·
2015-11-08 13:39
privilege
麻雀操作系统编写教程-简介
在学习的过程中,笔者发现国内的教程十分稀少,尤其是在实现方面,仅有于渊的《
自己动手写操作系统
》完整的再现了系统的编写
·
2015-11-07 14:24
操作系统
磨刀不误砍柴工
/blog.csdn.net/littlehedgehog http://blog.csdn.net/littlehedgehog/article/details/2250362 《
自己动手写操作系统
·
2015-11-07 13:40
《
自己动手写操作系统
》读书笔记——初识保护模式
《
自己动手写操作系统
》读书笔记——初识保护模式 http://www.cnblogs.com/pang123hui/archive/2010/11/27/2309930.html
·
2015-11-07 13:39
操作系统
一个人写的操作系统 - Sparrow OS
缘起
自己动手写操作系统
的动机最初来自于学习Linux遇到的困难。 我是一个Linux爱好者,这里所说的Linux主要指内核。
·
2015-11-01 12:58
操作系统
在Virtual PC 中安 装ms dos 6.22 的方法
在《
自己动手写操作系统
》中作者的平台是virtual pc 5.0,他使用这个虚拟机来作为开发平台,但是很不幸的是VirtualPC在推出5.2版本后就被Mirosoft给收购了,然后就发挥微软的霸道,
·
2015-10-21 12:32
virtual
3 一起动手打造你自己的Linux发型版--FalseOS
或者和
自己动手写操作系统
一样?只能是一个玩具?啥也干不了!我很负责的说:打造之后什么都能干?游戏,办公,上网,开发,入侵。。。啥都可以做看图开发用游戏用 办公用
fosdev
·
2015-10-19 15:00
自己动手写操作系统
-- 环境搭建
目录:软件和工具下载Bochs虚拟机配置文件HelloWorld编辑编译1.软件和工具下载Bochs虚拟机下载安装下载地址:http://download.pchome.net/system/sysenhance/down-19486.htmlddforwindows下载安装下载地址:http://www.downxia.com/downinfo/17093.htmlnasmforwindows下
rosemary512
·
2015-01-05 19:38
OS
Environment
setup
写操作系统
自己动手写操作系统
阅读笔记(一)
本来今天想要学习一下操作系统的相关内容,奈何书都没带,猛然想起自己还有一个
自己动手写操作系统
的梦想,于是拿出这本书重新研究以下。
svtter
·
2014-10-17 23:00
自己动手写操作系统
——PC Bootstraps
在lab1中make时提示bootblocktoolarge。如下:tianya@git:~/hust/lab1$make+ldboot/bootbootblocktoolarge:564bytes(max510)make:***[obj/boot/boot]Error1make:***Deletingfile`obj/boot/boot'查看makefile文件还是不得明白,google发现有遇
u010066564
·
2014-10-12 18:00
操作系统
makefile
bochs
我学习linux的一些书籍
《linux内核设计与实现》robert love《操作系统原理linux篇》徐德明 《
自己动手写操作系统
》 于渊《linux设备驱动开发详解》宋宝华《linux设备驱动程序》(美)科波特《深入浅出:
lee244868149
·
2014-07-31 11:00
理解org伪指令
在《
自己动手写操作系统
》开始出有一段这样的汇编程序boot.binorg07c00hmovax,csmovds,axmoves,axcallDispStrjmp$DispStr:movax,BootMessagemovbp
renwotao2009
·
2014-06-01 17:00
自己动手写操作系统
——bochs2.6.2安装
装了个虚拟机跑实验,选择bochs2.6.2,在官网找不到该文件,废了九牛二虎之力才弄到手,bochs2.6.2下载地址:http://download.csdn.net/detail/u010066564/7361487不过2.6安装并不顺利。过程如下;在未安装之前先做些准备:sudoapt-getinstallbuild-essentialsudoapt-getinstallxorg-devs
u010066564
·
2014-05-17 14:00
操作系统
OS
bochs
自己动手写操作系统
——bochs启动问题
用源码安装bochs时,默认没有安装vgabios,且我在配置文件里也将此注视掉了,这样允许出现段错误。弹出的窗口出现错误。Youcanalsostartbochswiththe-qoptiontoskipthesemenus.1.Restorefactorydefaultconfiguration2.Readoptionsfrom...3.Editoptions4.Saveoptionsto..
u010066564
·
2014-05-06 20:00
linux
操作系统
apt
BIOS
自己动手写操作系统
——linux环境配置
在搭建环境过程中,./configure时提示错误如下:”Xwindowsguiwasselected,butXwindowslibrarieswerenotfound“【本机环境:centos6】搜了很多解决办法yuminstalllibX11-devyuminstallxorg-dev等等但是都不凑效,几乎疯狂,然后想着改我的镜像源,想想我们ustc应该不会没有这个的,应该是哪里不对,然后想想
u010066564
·
2014-05-01 15:00
windows
linux
centos
X
found
not
自己动手写操作系统
《
自己动手写操作系统
》第九章 一 简易硬盘驱动的实现
本文主要从“
自己动手写操作系统
”出发,通过实现一个简单的硬盘驱动,来解释硬盘工作的基本原理。
trochiluses
·
2014-04-10 15:00
自己动手写操作系统
硬盘驱动
自己动手写操作系统
第八章 :进程间通信 IPC
在《
自己动手写操作系统
中》,我们将采用消息机制来实现进程间通信,原来和linux的消息队列有些类似。1.IPC同步与异步;很多领域里我们都用到了同步和异步的概念,这里再次区分一下。
trochiluses
·
2014-04-07 14:00
进程通信
微内核
自己动手写操作系统
《
自己动手写操作系统
》 第六章 系统调用的实现
在学习系统调用之前,我们有必要理清几个问题:什么是系统调用?为什么要使用系统调用?如何来实现一个系统调用。1.理论知识 所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门(gate)陷入(trap)实现。系统调用是用户程序和内核交互的接口。系统服务之所以需要通过系统调用来提供给用户空间的根本原因是为了对系统进行“
trochiluses
·
2014-03-24 21:00
系统调用
进程调度
自己动手写操作系统
时钟中断
《
自己动手写操作系统
第六章》引入minix中断处理方式
摘要:回过头来看,我们发现我们的中断处理程序写的并不够优雅。中断被响应需要三个条件:Eflags中的中断标记是打开状态;中断屏蔽寄存器没有屏蔽对应中断,设置了EOI标志。1.修改一下时钟中断处理程序:g/kernel/kernel.asm174incdword[k_reenter] 175cmpdword[k_reenter],0 176jne.1;重入进入.1 177 178movesp,Sta
trochiluses
·
2014-03-24 21:00
自己动手写操作系统
minix中断
《
自己动手写操作系统
》第六章 多进程
摘要:为了实现进程切换,我们需要实现多进程。进程管理是操作系统中最重要的内容之一,在本节中,我们将实现多个进程,从而为以后的进程调度打下基础。1.添加一个进程体85voidTestB() 86{ 87inti=0x1000; 88while(1){ 89disp_str("B"); 90disp_int(i++); 91disp_str("."); 92delay(1); 93} 94}在proc
trochiluses
·
2014-03-24 20:00
多进程
自己动手写操作系统
第六章 号外:中断处理流程详细分析
本文,主要针对
自己动手写操作系统
中,没有理明白的部分进行讲解和总结,如果你在第六章感觉C和汇编编程之后,遇到一些阻力和困惑,也许能从中找到答案。
trochiluses
·
2014-03-22 20:00
中断处理
PCB
内核栈
堆栈切换
自己动手写操作系统
第六章 :丰富中断处理程序
在上面部分,我们仅仅添加了中断,但是中断没有进行任何处理,下面,我们来丰富一下中断处理程序5.第二步——丰富中断处理程序5.1打开时钟中断这里,我们需要复习两个要点:1)要想使得中断控制器能够正常工作,还需要写OCW到中断控制器OCW1:中断屏蔽寄存器的控制,端口是21h和A1h;OCW2:EOI信号,在中断结束的时候发给20h端口和A0h端口5.2现场的保护与恢复回顾上面的过程,我们不难发现,我
trochiluses
·
2014-03-22 15:00
进程调度
自己动手写操作系统
丰富中断处理
《
自己动手写操作系统
》第六章:从系统内核到进程A ring0>>ring1(一)
摘要:进程调度可谓是操作系统中最为重要的环节之一,在本文中,我们主要讲解进程模型、涉及的数据结构、如何从内核态转到用户进程?这一小节主要完成进程数据结构的分析,和从ring0>>ring1的进程开始阶段的内容。1.进程我们来盘点一下,完成进程切换需要哪些数据结构和程序模块:1)首先,一个进程必须有代码、数据(和堆栈):相关数据有LDT、段描述符、TSS等2)对于正在休息的进程,我们需要让它重新醒来
trochiluses
·
2014-03-18 23:00
初始化
进程管理
自己动手写操作系统
RING0
ring1
《
自己动手写操作系统
》第五章:扩充内核
从后面的章节开始,orange的书籍上往往没有解释为什么要这样做。我们在学习这段内容的时候,尽量多查找资料,从三个层次思考问题:应该怎么做?为什么要这样做?从本质上来看,这是一个什么问题。1、切换堆栈和GDT先来看看是如何切换的:108movesp,StackTop;堆栈在bss段中 109 110movdword[disp_pos],0 111 112sgdt[gdt_ptr];cstart()
trochiluses
·
2014-03-17 17:00
kernel
Boot
loader
自己动手写操作系统
扩充内核
《
自己动手写操作系统
》第五章 从loader到内核
loader需要做两件工作:加载到内核到内存,并且将控制权交给内核;跳入保护模式。1.用loader加载elf 这个过程和用boot加载loader没有太大的区别,当然,其中有各种琐碎的细节和偏移,这个结合fat12文件格式和根目录项格式就可以明白。根目录中条目格式如下:2.跳入保护模式,启动分页机制 加载完成之后,我们需要进入保护模式,这里我们准备了代码段和数据段,然后是指向显存的段。注意,
trochiluses
·
2014-03-17 17:00
自己动手写操作系统
从loader到内核
C与汇编混合编程&&ELF文件格式解析
准备工作:C与汇编的混合编程ELF文件格式解析,这是《
自己动手写操作系统
》第五章的准备工作,主要讲解C与汇编混合编程的一些知识,并讲解ELF文件的相关知识,为有C语言写操作系统做准备。
trochiluses
·
2014-03-17 17:00
ELF文件格式
C与汇编
《
自己动手写操作系统
》第四章——摆脱dos引导:boot &&Loader
摘要:在开机过程中,从BIOS中取得第一条指令到内核加载,操作系统的开机运行过程是这样的:“引导---加载内核进入内存——跳入保护模式——开始执行内核”。也就是说,内核执行之前,需要先加载进入内存,然后准备进入保护模式。引导扇区(里面有一定的程序)的512B是不够的,我们在引导扇区和内核之间加入一个模块——Loader,负责完成上述过程。即“引导扇区——Loader——kernel”。在前三章中,
trochiluses
·
2014-03-09 12:00
Boot
loader
自己动手写操作系统
《
自己动手写操作系统
》第三章 pmtest9源码解析——中断处理程序
本节,我们将学习现代操作系统的一个重要的特点——中断处理机制。同样,中断处理也是软硬件协同完成的,其中硬件部分:8259A负责可编程中断控制器,通过读写端口,实现中断信号和中断号的绑定等工作;CPU通过门描述符与中断向量表来实现中断服务程序。最后,访问一个中断和访问一个门的过程是类似的,读者可以进行相应比较。本文,主要通过pmtest9讲解中断程序的编写。 中断门的实现包括如下内容:设置8259
trochiluses
·
2014-03-07 17:00
中断处理
自己动手写操作系统
8259A编程
《
自己动手写操作系统
》第三章pmtest8源码解析——多任务系统下的地址映射
摘要:本节,我们主要接触现代操作系统的一个重要特性——虚拟地址下的多任务。我们都知道,编写高级语言程序使用的地址都是虚拟线性地址,屏蔽了底层实际的物理地址。也就是说,在相同的物理内存布局条件下,对于任务A和B,相同的线性地址line,对应的物理地址内容是不一样的。本节,我们就从实践的角度来看看,这种原理是如何实现的。另外,结合调试过程中出现的错误,讲解关于call和ret指令以及段描述符寄存器的相
trochiluses
·
2014-03-06 22:00
多任务
地址映射
自己动手写操作系统
页表
<
自己动手写操作系统
>第三章pmtest7源码解析——检测系统内存
摘要:在pmtest6.asm中,我们已经初步接触了分页机制,但是很显然,上述分页机制浪费比较严重,而且没有体现应有的用处。本节,我们主要介绍如何根据内存容量,恰当地分配页表。 一、理论基础1.如何获取内存分布信息?获取内存,需要用到dos下的int15h中断,可以参考这里: http://blog.csdn.net/trochiluses/article/details/20078161 二
trochiluses
·
2014-03-06 10:00
自己动手写操作系统
检测系统内存
《
自己动手写操作系统
》 第三章 pmtest6源码解析——开启分页机制
摘要:在pmtest5中,我们已经看到了如何在不同的特权级之间进行跳转。那么,pmtest6中,我们将展示如何开启分页机制。读者需要明白的是,无论是分段还是分页,从本质上所都是通过逻辑来设想,然后辅助硬件设计来实现的。不同的内存单元没有本质上的不同,一眼望去,所有的内存都是一样的。所以,读者在学习这一部分的时候,一定要勤于在纸上画出内存的布局图和不同数据结构之间的转换关系。pmtest5,在pmt
trochiluses
·
2014-03-04 23:00
自己动手写操作系统
分页机制
《
自己动手写操作系统
》第三章 pmtest5源码解析——特权级变换与堆栈切换实例详解
摘要:在pmtest4中,我们已经看到,对于非一致性代码,如何从低特权级转移向高特权级。但是我们该怎样从高特权级别,转移到低特权级别呢?本文,主要是为你解答这些疑问,展现实现这种特权级别转移的方法。另外,我们将在实践中探讨,为什么要设定RPL,是不是相对与DPL多此一举呢?在调试环节,我们将通过改动代码,排查相关错误来深入理解特权级检测机制。 一、预备理论 1.关于堆栈 我们都知
trochiluses
·
2014-03-04 17:00
自己动手写操作系统
特权级变换
堆栈切换
《
自己动手写操作系统
》第三章 pmtest4源码解析——利用门调用实现特权级转移
摘要:本节,我们将通过分析pmtest4来实现利用调用门进行段间转移。一、背景与原理在汇编语言中,我们不能执行这样的指令:movds100h和movcs,ax;也就是说,段寄存器的值,是不能像通用寄存器一样,随意赋值的。具体的cs寄存器而言,它涉及到程序的控制转移,需要借助jmp、call、ret、sysenter,sysexit,intn,iret来实现,或者通过中断和异常来完成。我们知道,jm
trochiluses
·
2014-03-04 10:00
自己动手写操作系统
调用门
段间转移
<
自己动手写操作系统
>第三章——pmtest3源码解析:使用LDT
摘要:在本节中,我们将添加一个LDT段,在段中打印一个字符L,从而学习如何利用程序的LDT段。程序的执行流程随之也会发生变化,我们将分析代码和分析代码结构。一、概要分析:在pmtest2的基础上,我们增加一个段LDT和一个LDT中的一个段codeA。需要注意的是,LDT存在的前提是GDT,因为LDT本身是一个段中,需要由GDT中的信息,得到基地址。另外,这个场景,给出了段选择子,我们如何去索引描述
trochiluses
·
2014-03-04 09:00
保护模式
自己动手写操作系统
ldt
《
自己动手写操作系统
》第三章pmtest2源码解析
摘要:本节,通过代码解析,帮你解决如下问题:保护模式和实模式下面的偏移量有什么不同?保护膜是和实模式下段基地址是一个意思吗?长跳转指令jmp0:entry为什么能够在一个代码段中更改另一个代码段的代码? 一、总体思路剖析:pmtest2,其实实现的是从实模式到保护模式,然后从保护模式回到实模式,最后回归到dos。其中,一开始就进入了实模式,然后在实模式下初始化段描述符,处理GDT等,进入保护模式
trochiluses
·
2014-03-03 20:00
JMP
自己动手写操作系统
实模式与保护模式
长跳转
0entry
《
自己动手写操作系统
》第三章 pmtest1——从实模式到保护模式
摘要:本节,我们将学习如何从实模式进入保护模式,剖析pmtest1.asm源码。详细讲解如何从保护模式进入实模式。1.头文件编写:这一部分,你需要把一些关键物理器件和数据结构的布局记在脑子里GDT描述符:32b段基地址(B2、B3、B4、B7)+20b段限长(B0、B1、B6的低4位)+12b段属性(B5、B6的高4位),详细布局见下图(针对代码段和数据段):所以,我们定义了如下的存储段描述符结构
谁不小心的
·
2014-03-02 22:43
自己动手写操作系统
自己动手写操作系统
实模式
保护模式
《
自己动手写操作系统
》第三章 pmtest1——从实模式到保护模式
摘要:本节,我们将学习如何从实模式进入保护模式,剖析pmtest1.asm源码。详细讲解如何从保护模式进入实模式。1.头文件编写:这一部分,你需要把一些关键物理器件和数据结构的布局记在脑子里GDT描述符:32b段基地址(B2、B3、B4、B7)+20b段限长(B0、B1、B6的低4位)+12b段属性(B5、B6的高4位),详细布局见下图(针对代码段和数据段):所以,我们定义了如下的存储段描述符结构
trochiluses
·
2014-03-02 22:00
保护模式
实模式
自己动手写操作系统
《
自己动手写操作系统
》源码解析——第三章pmtest5.asm
在pmtest4中,我们已经看到,对于非一致性代码,如何从低特权级转移向高特权级。但是我们该怎样从高特权级别,转移到低特权级别呢?一开始我们在实模式,是ring0,我们怎样从ring0到ring3,这个通过call和jmp没法做到,我们该通过什么方式实现?本文,主要是为你解答这些疑问,展现实现这种特权级别转移的方法。通过本节,你将学会如何在特权级之间自由切换。一、预备理论1.关于堆栈我们都知道,可
trochiluses
·
2014-02-27 17:00
自己动手写操作系统
调用门
retf
特权级变换
堆栈变换
自己动手写操作系统
源码剖析——第三章 pmtest4.asm
摘要:本系列文章,主要解答orange‘s《
自己动手写操作系统
》中的各种疑问。pmtest4这个程序,我们主要将讲解如何通过调用门实现低特权级代码向高特权级别的代码转移——就像鲤鱼越龙“门”。
trochiluses
·
2014-02-27 14:00
操作系统
保护模式
调用门
进入保护模式(十四)编译器命令
后面打算实现一个简单的loader,文件格式是elf实验的例子就是
自己动手写操作系统
第五章第三部分的例子首先简单的说下nasm的编译命令:默认是二进制bin文件编译成二进制文件:nasm-fbinmbr.asm-ombr.bin
Cobbage
·
2014-01-28 12:00
上一页
1
2
3
4
5
6
7
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他