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
一个操作系统的实现
Orange‘s
一个操作系统的实现
配置问题
最近在瞅《Orange‘s
一个操作系统的实现
》,个人认为相当好的OS入门实践书籍,配合之前看过的大部分的理论书,容易理解那些抽象的概念(无代码无真相),和《Linux内核完全注释》都是相当不错的入门书籍
curer
·
2016-02-20 16:29
《
一个操作系统的实现
》学习笔记(一) bochs源码安装及配置
前言:本机环境ubuntu14.04bochs2.4.5 一.下载官网 http://bochs.sourceforge.net/ 二.安装1.将下载好的压缩包解压并进入该目录tarvxzfbochs-2.4.5.tar.gz cdbochs-2.4.52.安装编译程序依赖的包sudoapt-getinstallbuild-essential3.检测环境,打开调试功能的开关./configure
Koala's_Dream
·
2015-12-14 22:00
《Orange’s
一个操作系统的实现
》3.保护模式5----特权级概述
学习过程中遇到一个对保护模式总结很好的Blog,转来分享一下。 先说下特权级的概念,在保护模式下,系统依靠特权级来实施代码和数据的保护,相当于权限啦。特权级共有4个级别,0,1,2,3,数字越小表示权限越高。如图: 较为核心的代码和数据放在较高(靠内)的层级中,处理器用此来防止较低特权的任务在不被允许的情况下访问处于高特权级的段。为了防
·
2015-11-13 20:22
操作系统
《
一个操作系统的实现
》(三):4.中断和异常&5.保护模式下的I/O
前面讲到了实模式下用int 15h得到内存信息,然后在保护模式下把它们显示出来。保护模式下中断机制发生了很大的变化,原来的中断向量表被IDT(Interrupt Descriptor Table,中断描述符表)代替,实模式下能用的BIOS中断在保护模式下已经不能用了。IDT可以将每一个中断向量和一个描述符对应起来。IDT中的描述符可以是中断门描述符、陷阱门描述符、任务门描述符。尽管IDT在形式上与
·
2015-11-13 13:06
操作系统
《Orange’s
一个操作系统的实现
》学习计划
今年看到此书再版了《Orange’s
一个操作系统的实现
》,看了一下介绍,就又起了研究的心思。一直对底层技术很感兴趣,心血来潮就dangdang了一本。看到介绍说作者自,己排的版。
·
2015-11-11 17:03
操作系统
Aoy的技术草地
目前正在研究于渊的《Orange's
一个操作系统的实现
》,保护模式看的差不多了。汇编还是边看边学的。还算看的懂。
·
2015-11-11 17:02
技术
《Orange’s
一个操作系统的实现
》3.保护模式5----特权级概述
学习过程中遇到一个对保护模式总结很好的Blog,转来分享一下。 先说下特权级的概念,在保护模式下,系统依靠特权级来实施代码和数据的保护,相当于权限啦。特权级共有4个级别,0,1,2,3,数字越小表示权限越高。如图: 较为核心的代码和数据放在较高(靠内)的层级中,处理器用此来防止较低特权的任务在不被允许的情况下访问处于高特权级的段。为了防止概念混淆,我们不用特权
·
2015-11-11 12:52
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式3----保护模式进阶
在前面的代码上进行修改后,测试读写大地址内存(实模式下的1MB限制),而且从保护模式再调回实模式. 上代码分析(省略前面重复的代码部分): ; ========================================== ; pmtest2.asm ; 编译方法:nasm pmtest2.asm -o pmtest2.com ; =========================
·
2015-11-11 12:51
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式4----LDT(Local Descriptor Table)
还是在原有代码基础上进行修改,加入LDT的使用,代码分析如下(红色部分为新增代码): 本程序是在原有完成大内存读写测试完成后,调用局部任务显示字符L ; ========================================== ; pmtest3.asm ; 编译方法:nasm pmtest3.asm -o pmtest3.com ; ==================
·
2015-11-11 12:51
script
《Orange’s
一个操作系统的实现
》3.保护模式1----pm.inc分析
1.pm.inc定义了描述符、选择子及相关位数的取值 ; 描述符图示 ; 图示一 ; ; ------ ┏━━┳━━┓高地址 ; ┃ 7 ┃ 段 ┃ ; ┣━━┫&nb
·
2015-11-11 12:49
操作系统
《Orange’s
一个操作系统的实现
》2.最小的操作系统
十分钟操作系统代码boot.asm如下编译执行过程如下 org 07c00h ; 告诉编译器程序加载到7c00处 mov ax, cs ; mov ds, ax ; mov es, ax call DispStr ; 调用显示字符串例程 jmp $ ; 无限循环 DispStr: mov ax, BootMessage mov bp, a
·
2015-11-11 12:48
操作系统
《Orange’s
一个操作系统的实现
》1.搭建操作系统开发环境
书中给出了两种环境:windows和linux,平台选择根据自己喜好.本人这里选择ubuntu10.04+virtualbox作为开发平台. 1.下载、安装VirtualBox http://download.virtu
·
2015-11-11 12:47
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式2----认识保护模式A
1.前言 还是先来分析下保护模式的代码pmtest1.asm,要硬这头皮看这段代码,而且的搞明白了,后面的代码都是在此基础上扩展的,此代码是大致轮廓 2.代码分析 ; ========================================== ; pmtest1.asm ; 编译方法:nasm pmtest1.asm -o pmtest1.bin ; ======
·
2015-11-11 12:47
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式8-页式存储(启动分页机制)
下述代码展示了如何启动分页机制,及页目录及页表项的初始化: ; ========================================== ; pmtest6.asm ; 编译方法:nasm pmtest6.asm -o pmtest6.com ; ========================================== %include
·
2015-11-11 07:42
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式7-特权级转移(通过调用门转移目标段-有特权级转换-实践篇)
完成有效的特权级的转移及使用局部任务返回实模式: ; ========================================== ; pmtest5.asm ; 编译方法:nasm pmtest5.asm -o pmtest5.com ; ========================================== %include  
·
2015-11-11 07:41
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式8-页式存储
A.分页机制概述(如图) Segmentation部分为分段机制,逻辑地址通过段选择子,从GDT中对应的段描述符中确定段基址,然后在加上偏移确定线性地址 Paging部分为分页机制:物理地址=f(线性地址) 分页机制使用两级转换表,第一级叫做页目录(Page Direc
·
2015-11-11 07:41
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式7-特权级转移(通过调用门转移目标段-有特权级转换-进入ring3-b)
我们在进入ring3后,实现了高特权级到低特权级的转移,我们在原有代码上稍作修改,实现低特权级到高特权级的转移: 修改的代码如下: 1.修改调用门描述符和选择的特权级 ; 门  
·
2015-11-11 07:40
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式7-特权级转移(通过调用门转移目标段-有特权级转换-进入ring3)
在上一节的代码中稍作修改,通过转移进入ring3: ; ========================================== ; pmtest5a.asm ; 编译方法:nasm pmtest5a.asm -o pmtest5a.com ; ========================================== %include &
·
2015-11-11 07:39
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式7-特权级转移(通过调用门转移目标段-有特权级转换-理论)
A.关于堆栈 jmp指令:不影响堆栈 call指令:影响堆栈,对于短调用来说,call指令执行时会将下一条指令的eip压栈,到ret指令时,这个eip会被从堆栈中弹出。 &n
·
2015-11-11 07:38
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式7-特权级转移(通过调用门转移目标段-无特权级转换)
在上次的代码基础上,添加一个代码段作为通过调用门转移的目标段。了解一下调用的工作方法,代码分析如下: <<红色标识部分为新增代码>> ; ========================================== ; pmtest4.asm ; 编译方法:nasm pmtest4.asm -o pmtest4.com ; ================
·
2015-11-11 07:38
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式6-特权级转移(门描述符概述)
A.门描述符结构 0、1字节( 0~15):偏移1 2、3字节(16~31):选择子 4字节(32~39):5、6、7位为0,0~4位为Param Co
·
2015-11-11 07:37
操作系统
实现一个简陋操作系统的相关笔记日志
`命令真心好用,可将外部命令的执行结果插入文字中来)今天乘着将近两个月的寒假将于渊的《
一个操作系统的实现
》这本书看一遍,在刚过去的半年里刚开始时看了前两章,但由于看到保护模式那一块时感到困难也没了心情,
·
2015-11-10 22:29
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式2----认识保护模式B
一、详解GDT(转载http://blog.csdn.net/zdwzzu2006/archive/2009/03/27/4030882.aspx) 在Protected Mode下,一个重要的必不可少的数据结构就是GDT(Global Descriptor Table)。 为什么要有GDT?我们首先考虑一下在Real Mode下的编程模型: 在Real Mode下,我们对一个内存地址的访
·
2015-11-08 16:12
操作系统
《
一个操作系统的实现
》读书笔记--第三章---不同特权级代码段之间的跳转
http://blog.csdn.net/begginghard/article/details/7262901 1、特权级 2、一致代码段和非一致代码段 3、DPL、RPL、CPL分别代表的含义,存储在什么位置,以及它们之间的关系 4、不同特权级数据段之间的访问规则 5、不同特权级代码段之间的转移 6、代码段之间的转移对堆栈的影响 7、结合pmtest5.asm来见证不同特权级代码段之间的跳转
·
2015-11-07 13:54
操作系统
如何在64位的linux系统上使用汇编和C语言混合编程
最近在看于渊的
一个操作系统的实现
,在第五章的时候汇编和C 同时使用时碰到了问题:代码如下 foo.s 1 extern choose 2 3 ;;;;;the data area 4
·
2015-11-01 15:50
linux
配置Bochs
正在看《Orange's
一个操作系统的实现
》。源代码安装Boch后,要配置一个文件。
·
2015-10-31 15:07
配置
【整理】Orange‘S-
一个操作系统的实现
变来变去,动来动去,最终还是回到这里,做自己想做的事并把它做好! 1. 虚拟机Bochs安装 (1) 出现“ERROR: X windows gui was selected, but X windows libraries were not found.”  
·
2015-10-31 11:11
操作系统
UBUNTU下制作软盘映
.163.com/blog/static/59683314200911624753528/ from 最近在看于渊著的《orange's
一个操作系统的实现
·
2015-10-31 10:03
ubuntu
操作系统内核Hack:(三)引导程序制作
但真正开始之前,我们还要做出一个选择,在之前的讨论中我们曾说过,有两种学习和制作引导程序和操作系统内核的路线:1)《Orange’s:
一个操作系统的实现
》书中的路线;2)Li
dc_726
·
2015-10-25 16:00
操作系统
内核
bootloader
《Orange's
一个操作系统的实现
》学习笔记(一) 实验环境搭建
《Orange's
一个操作系统的实现
》学习笔记(一)实验环境搭建今天做了操作系统第一个实验,遇见了一些问题,总结下。
godspeedkaka
·
2015-09-20 22:00
其他
操作系统内核Hack:(一)实验环境搭建
操作系统内核Hack:(一)实验环境搭建三四年前,心血来潮,入手《Orange’s:
一个操作系统的实现
》学习操作系统内核,还配套买了王爽的《汇编语言(第二版)》和《80X86汇编语言程序设计教程》,虽然
dc_726
·
2015-09-13 12:00
操作系统
内核
X86
汇编语言
操作系统实践(8)——从Loader到内核
本次实践涵盖的内容包括《orange’s
一个操作系统的实现
》书中的第三章末尾、第四章、第五章。因为这些东西比较紧凑。捋一下思路:1.中断与异常,在
hackooo
·
2015-08-26 11:00
GeekBand线上交流
2.内核书籍于渊《
一个操作系统的实现
》《Linux0.11版内核》《程序员的自我修养》歪果仁《Liker&Loader》《C++逆向和反汇编》3.服务器C++和java的江湖之争C++:游戏服务器,视频
alive2012
·
2015-08-22 15:00
GeekBand
C++话题
内核书籍
【从头开始写操作系统系列】环境搭建以及第一个Hello World
参考书籍:《30天自制操作系统》川合秀实《ORANGE’S:
一个操作系统的实现
》开发环境笔者采用以下开发环境AppleMacbookAirUbuntu12.04LTS(32bit)读者准备毕竟是动手写一个操作系统
luoyhang003
·
2015-08-04 09:00
操作系统
helloworld
bochs
《
一个操作系统的实现
》 ubuntu系统环境配置
《
一个操作系统的实现
》ubuntu系统环境配置电脑之前已经安装了gcc.一.nasm安装:sudoapt-getinstallnasm或官网下载http://sourceforge.net/projects
ForeverEnjoy
·
2015-07-30 09:00
读书笔记-于渊(
一个操作系统的实现
)一
1.kubuntu下的一些设置,方便提升操作效率(工欲善其身,必先利其器),链接:http://forum.ubuntu.org.cn/viewtopic.php?t=3878722.ubuntu桌面入门指南。链接:http://wiki.ubuntu.org.cn/Ubuntu%E6%A1%8C%E9%9D%A2%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97#Ubunt
vs349214897
·
2015-06-25 15:00
操作系统实践(1)——从引导开始
注:本次实践参考《orange’s
一个操作系统的实现
》第一段引导代码boot.asmorg07c00h movax,cs movds,ax moves,ax callDispStr jmp$ DispStr
hackooo
·
2015-04-24 15:00
ASM
操作系统
系统引导
《Orange's
一个操作系统的实现
》学习笔记--分页机制
存储器分页管理机制80386开始支持存储器分页管理机制。分页机制是存储器管理机制的第3二部分。段管理机制实现虚拟地址(由段和偏移构成的逻辑地址)到线性地址的转换,分页管理机制实现线性地址到物理地址的转换。如果不启用分页管理机制,那么线性地址就是物理地址。本文将介绍80386的存储器分页管理机制和线性地址如何转换为物理地址。在保护模式下,控制寄存器CR0中的最高位PG位控制分页管理机制是否生效。如果
zthgreat
·
2015-04-20 13:51
【操作系统】
《Orange's
一个操作系统的实现
》学习笔记--特权级代码段之间的转移(四)
一、演示任务内特权级变换的实例下面给出一个演示任务内特权级变换的实例。该实例演示在任务内通过调用门从外层特权级变换到内层特权级;也演示通过段间返回指令从内层特权级变换到外层特权级;还演示通过调用门的无特权级变换的转移。实例使用了任务状态段TSS,这是因为任务内特权级变换时要使用的内层堆栈指针存放在TSS中。1.实现步骤该实例的实现步骤为:(1)实方式下初始化;(2)切换到保护模式;(3)设置TR和
zthgreat
·
2015-04-11 20:28
【汇编程序学习】
【操作系统】
自制操作系统:引导扇区的实现
本书依靠的教材是于渊的《Orange'S:
一个操作系统的实现
》实验环境及工具ArchLinux(windows也可以)代码编辑器Emacs(你尽情使用自己喜欢的编辑器)nasm(一个开源的汇编器,可以从
jollywing
·
2015-04-10 00:00
操作系统
asm
《Orange's
一个操作系统的实现
》学习笔记--LDT
LDT(LocalDescriptorTable)它和GDT差不多,都是描述符表(DescriptorTable)区别仅仅在于全局(Global)和局部(Local)的不同。局部描述符表可以有若干张,每个任务可以有一张。LDT和GDT从本质上说是相同的,只是LDT嵌套在GDT之中。LDTR记录局部描述符表的起始位置,与GDTR不同LDTR的内容是一个段选择子。由于LDT本身同样是一段内存,也是一个
zthgreat
·
2015-03-29 19:18
【操作系统】
《Orange's
一个操作系统的实现
》学习笔记--保护模式进阶
我们虽然成功进入了保护模式,但是并没有体验到保护模式给我们带来的便利,上一个例子中打印了一个红色的p,这在实模式中也很容易做到,但是保护模式能做的远不止如此,上文我们提到在保护模式下的寻址空间可以到达4G,首先实验一下读大地址内存,在前面程序的基础上,新建一个段,这个段是以5MB为基址,远远超过了实模式下1MB的限制,我们先读出开始处8字节的内容,然后写入一个字符串,再从中读出8个字节的内容,如果
zthgreat
·
2015-03-14 12:13
【汇编程序学习】
【操作系统】
《Orange's
一个操作系统的实现
》学习笔记--保护模式理论初步(一)
一.保护方式简介注:本文部分节选自《80X86汇编语言程序设计教程杨季文》80386有三种工作方式:实模式,保护模式和虚拟8086模式。本文介绍保护方式下的80386及相关的程序设计内容。实模式下的80386寄存器,寻址方式和指令等基本概念,除特别说明外在保护方式下仍然保持。尽管实方式下80386的功能要大大超过其先前的处理器(8086/8088,80186,80286),但只有在保护方式下,80
zthgreat
·
2015-03-12 16:31
【操作系统】
【汇编程序学习】
《Orange's
一个操作系统的实现
》学习笔记--一个简单的引导扇区
《Orange's
一个操作系统的实现
》----于渊《Orange's
一个操作系统的实现
》很早以前就晓得这本书了,当时还真没有打算仔细看的,随着后来了解的东西逐渐多起来后,我感觉上层的应用程序也好,还是更高级的的高级语言也好
zthgreat
·
2015-03-11 16:31
【操作系统】
【汇编程序学习】
linux 内核书籍
1.linux内核设计与实现2.深入理解linux内核3.linux内核源代码情景分析4.linux内核源代码分析5.linux技术手册6.深入linux内核架构7.oranges
一个操作系统的实现
8.30
fengzijinliang
·
2014-09-13 14:00
《
一个操作系统的实现
》mount错误解决办法(mount 您必须指定文件系统的类型
http://kevinlp.com/oranges-mount-error.html最近在看于渊著的《orange’s
一个操作系统的实现
》,今天想动手做做里面的实验,其中有处说到把pm.img挂载到/
luobin1984
·
2014-07-29 14:00
《
一个操作系统的实现
》读书笔记(一)
如果你也对操作系统有着浓厚的兴趣,从今天开始,跟着我一起学习于渊的《
一个操作系统的实现
》吧!首先声明,我是个菜鸟,还在读书,我自己本身也是摸索着学习的,有些地方理解不到位请大家谅解。
长颈鹿但丁
·
2014-03-30 03:00
最详细的
一个操作系统的实现
自己动手写一个操作系统
《自己动手写操作系统》
自己动手写操作系统实践第一章
调用BIOS中断显示Hello World
参考资料:《
一个操作系统的实现
》,《Linux内核设计的艺术》(新设计团队著,也推荐一下这本书,写的是关于linux内核讲解的书,写的很好,被翻译成了繁体和英语)好的,关于下面的代码进行一下解释,虽然比较简
xiaominthere
·
2013-12-04 19:00
bochs
oranges操作系统
一个操作系统的实现
(10):进程间通信
如果一个进程要完成一个操作需要系统内核的帮助,那么这个系统就需要为进程提供一些可用的系统调用。为了让系统能够实现更多的功能,我们可以有两种选择:一种是内核处理所有的系统调用,所有的工作全部扔给内核;另一种则是将这些功能,如读取文件、创建进程等,从内核中剥离,单独形成一个或几个进程来管理这些事务,而内核只负责一些基本的操作如进程调度等。前者叫做宏内核,而后者叫做微内核。就我个人看来,微内核更有优势,
H_armony
·
2013-09-05 08:00
一个操作系统的实现
(9):输入输出系统
I/O的全称是“Input/Output”,即“输入/输出”。其中“输入”指的是键盘,“输出”则指的是显示器。键盘在8259A的中断例程中有一个“键盘中断”。其实键盘中断不仅仅是个中断号,它还涉及到其它的一些信息,比如哪个键发生了什么操作,以及键盘上其它键的状态等等。这又涉及到两块芯片:8042和8048。8048存在于键盘中,作用是将收到的键盘信号传给8042。8042接收到信息后,会产生一个扫
H_armony
·
2013-09-04 08:00
上一页
1
2
3
4
5
6
下一页
按字母分类:
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
其他