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:
一个操作系统的实现
》学习笔记(一)
我使用的操作系统是ubuntu12.10。1.首先下载nasm:http://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D我下载的是2.10.07版本的nasm-2.10.07.tar.bz2文件。解压后到目录:~/nasm-2.10.07终端命令行进入目录nasm-2.10.07,依次执行:$./configure$make$sudomakeinstal
stepbystep
·
2020-07-09 03:02
操作系统
《Orange'S:
一个操作系统的实现
》学习笔记(二)
前面写了个demo运行在vmware虚拟机里,显示了一个简单的页面,这只是个引导扇区,而非完整的操作系统。源代码及源代码的解释请看原书,有个问题是作者书中写着用ndisasmw命令进行反汇编,我实际执行时发现这个命令不存在,而命令ndisasm命令是存在的,并且将boot.bin反汇编成了disboot.asm文件,这里我把我反汇编的文件列出如下:00007C008CC8movax,cs00007
stepbystep
·
2020-07-09 03:31
操作系统
oranges
一个操作系统的实现
笔记一
第一部分:实现一个最小的操作系统这部分代码需要注意如下几点:1.代码需要加载到0x07c00H处的内存上,才能得到有效的执行,这是bios规定的。2.因为一个扇区是512字节的大小,所以这段bootloader必须占有512字节的大小。3.整个扇区必须以0xaa55作为结尾。4.int10h是显示字符串用的bios中断。第二部分:保护模式:org07c00hjmpLABEL_BEGIN[SECTI
xf807989
·
2020-07-09 01:10
orange一个操作系统的实现
自制操作系统:引导扇区的实现
本书依靠的教材是于渊的《Orange'S:
一个操作系统的实现
》实验环境及工具ArchLinux(windows也可以)代码编辑器Emacs(你尽情使用自己喜欢的编辑器)nasm(一个开源的汇编器,可以从
weixin_34416754
·
2020-07-08 18:17
操作系统diy-1-资料整理
现在列出资料:intel80386文档Orange'S:
一个操作系统的实现
x86汇编语言从实模式到保护模式nasmdocx86_x64体系探索及编程(邓志)LINUX内核完
weixin_34043301
·
2020-07-08 16:19
《Orange’s
一个操作系统的实现
》2.最小的操作系统
十分钟操作系统代码boot.asm如下编译执行过程如下org07c00h;告诉编译器程序加载到7c00处movax,cs;movds,ax;moves,axcallDispStr;调用显示字符串例程jmp$;无限循环DispStr:movax,BootMessagemovbp,ax;ES:BP=串地址movcx,16;CX=串长度movax,01301h;AH=13,AL=01hmovbx,000
weixin_30848775
·
2020-07-08 14:01
Orange's:
一个操作系统的实现
源码的一处小Bug
最近在学习于渊先生《Orange's:
一个操作系统的实现
》这本书,源码中有关硬盘驱动程序中的一段代码,似乎有些问题,贴出来与大家分享下。
LuciferV路西法
·
2020-07-08 10:10
于渊
操作系统
实现
源码
BUG
《
一个操作系统的实现
》笔记(6)--进程
我们可以把一个单独的任务所用到的所有东西封装在一个LDT中,这种思想是多任务处理的雏形。多任务所用的段类型如下图,使用LDT来隔离每个应用程序任务的方法,正是关键保护需求之一:进程示意:我们需要一个数据结构记录一个进程的状态,在进程要被挂起的时候,进程信息就被写入这个数据结构,等到进程重新启动的时候,这个信息重新被读出来。最简单的进程进程切换的过程:-1.进程A运行中-2.时钟中断发生,ring1
Felixabcd
·
2020-07-08 10:11
操作系统
《
一个操作系统的实现
》笔记(4)-- Boot&Loader
一个操作系统从开机到开始运行,大致经历引导->加载内核入内存->跳入保护模式->开始执行内核这样一个过程。引导扇区(Boot)负责把Loader加载入内存并且把控制权交给它,其它工作放心地交给Loader来做,因为没有512字节的限制,将会灵活得多。FAT12文件系统几乎所有的文件系统都会把磁盘划分为若干层次以方便组织和管理,这些层次包括:-扇区(Sector):磁盘上的最小数据单元。-簇(Clu
Felixabcd
·
2020-07-08 10:11
操作系统
《
一个操作系统的实现
》笔记(5)--内核雏形
我们希望自己的操作系统内核至少应该在Linux下用GCC编译链接。Loader要做的事有两件:加载内核入内存、跳入保护模式。在Linux下用汇编写程序示例:;hello.asm[section.data];数据在此strHellodb"Hello,world!",0AhSTRLENequ$-strHello[section.text];代码在此global_start;我们必须导出_start这个
Felixabcd
·
2020-07-08 10:40
操作系统
《ORANGE'S:
一个操作系统的实现
》笔记—保护模式跳回实模式
在读《ORANGE'S:
一个操作系统的实现
》第三章保护模式时遇到一个由保护模式跳回实模式的疑问,书中的chapter3/b/pmtest2.asm的代码中为了能由保护模式跳回实模式,新建了一个LABEL_DESC_CODE16
guobaoteacher
·
2020-07-08 09:48
OS
一个操作系统的实现
-5_保护模式4
先彻底弄清逻辑地址,线性地址,物理地址:逻辑地址:是offset偏移地址,指由程序产生的与段相关的偏移地址部分.线性地址:线性地址由逻辑地址根据分段机制计算出.即:实模式下cs*16+offset(逻辑地址)得到,保护模式下通过GDT+selector找到段描述符,从而找到段基址,再加上逻辑地址(offset)得到.需要说明的是,未打开分页机制时,线性地址等同于物理地址.物理地址:真实内存上存储单
still_run
·
2020-07-08 08:23
一个操作系统的实现
一个操作系统的实现
-3_保护模式2
很久没碰汇编,看这一节代码顺带复习了下汇编语言,以后看内核程序里的汇编心里也不会那么虚,挺好的.前面的几个知识点是这一节中需要用的的汇编知识,最后两个是这一节中主要内容,如何从保护模式返回实模式.代码部分基本是自己根据书中自带的源码自己手敲了一遍,逐步加代码,把这一节需要的内容加了进去,另外还是把头文件和源文件分开了,前两节代码少也就没分开了.字符串显示这些代码自己看明白应该就可以了,没有注释,估
still_run
·
2020-07-08 08:23
一个操作系统的实现
一个操作系统的实现
-6_保护模式5
对于中断部分,8259A的具体各种命令字不关注,只关注整个中断向量的组织,从结构上把握中断的处理过程.1:复习下段描述符和门描述符Descriptor:段基址,界限,属性Gate:目标选择子,偏移,DCount,属性2:IDT(中断描述符表)中的描述符可以是下面三种之一:中断门描述符陷阱门描述符任务门描述符任务门在Linux中没有用到,中断门与陷阱门的区别在于对中断允许标志IF的影响.由中断门向量
still_run
·
2020-07-08 08:23
一个操作系统的实现
一个操作系统的实现
-4_保护模式3
特权级:IA32总共4个特权级,0.1,2,3.数字越小特权级越高CPL(CurrentPrevilegeLevel)DPL(DescriptorPrevilegeLevel)RPL(RequestedPrevilegeLevel)对于数据段的访问,只要CPL和RPL都小于(也就是特权级高于)被访问的数据段的DPL就可以了.通过修改描述符的属性可以修改DPL,通过修改选择子属性可以修改RPL.门描
still_run
·
2020-07-08 08:23
一个操作系统的实现
一个操作系统的实现
-2_保护模式1
1:实模式下内存寻址段首地址*16+偏移量=物理地址(段寄存器左移四位+offset)2:保护模式下寻址1)段寄存器中存放段选择子Selector2)GDTR(全局描述符表寄存器)中存放段描述符首地址3)通过选择子与GDTR中首地址,找到对应的段描述符4)段描述符中有段的物理首地址,就得到段在内存中的首地址5)加上偏移量,就得到这个段中存放的数据的真正物理地址3:程序说明;宏定义Descripto
still_run
·
2020-07-08 08:22
一个操作系统的实现
一个操作系统的实现
(一)
在学操作系统,老师教的是清华的moocos操作系统,是根据一些基础代码填空式学习,个人不太习惯,故开始了自己探索的历程,也就有了这一系列博客(不定期更新)
一个操作系统的实现
系列是按照Orange’S:
一个操作系统的实现
及光盘源码
Zcmmma
·
2020-07-08 07:57
操作系统
Linux下 虚拟机Bochs的使用
2.一个简单的测试程序我们打算从软盘启动虚拟机,这样的话我们就需要一个软盘的引导程序,来启动虚拟机,引导程序我们使用Orange's
一个操作系统的实现
学习(1)中的
sy198704
·
2020-07-08 07:19
操作系统
Orange's
一个操作系统的实现
学习(1)
工具准备1.VirtualPC原书所说的VirtualPC已经下载不到了,经过几天的探索,终于发现了一个符合要求的版本。VirtualPC5.02.DOS6.3安装(1)安装DOS来这里下一个msdos6.22的镜像.然后启动VirtualPC,新建一个PC,内存32m,硬盘50m,OK启动!菜单->软驱->载入镜像选择622c.imgOK,引导系统,进入了dos.然后对硬盘分区.执行命令:fdi
sy198704
·
2020-07-08 07:18
dos
c
工具
《oranges
一个操作系统的实现
》阅读笔记三
第三章工具的使用1.如何调试超过一个扇区的程序?在这里总结以下从第一章到第四章,书上所用各种工具的意义。1)第一章直接用软盘,用bochs加载软盘,程序写到软盘的第一个扇区,bochs相当于一个实体机器,从软盘第一个扇区读取程序到0x7c00h,并跳转到此处执行。(具体开机流程可以参考第一篇笔记)2)第二章用软盘的镜像文件充当虚拟的软盘,并没有突破引导扇区一个扇区容量的限制3)第三章由于引导扇区5
Joey2357
·
2020-07-08 06:54
阅读笔记
操作系统
oranges
《oranges:
一个操作系统的实现
》阅读笔记
第一章第一个程序1.为什么引导扇区要以0x55aah为结尾,还有为什么org0x7c00h对执行程序有什么作用?第一个程序我用bochs+软盘映像按照书上第二章的命令来实验,毕竟现在找个软盘不容易。但是整个实验现象是如何产生的,是如何到最后在屏幕左上角显示出Hello,OsWorld!这串字符串的?这些都是需要搞明白的。这里面有几个知识点,1:开机启动流程;2:引导扇区开机启动流程:1)打开电源,
Joey2357
·
2020-07-08 06:54
阅读笔记
读书笔记:Orange's
一个操作系统的实现
(1) - 实验环境搭建和引导扇区的编写
最近自己准备开始自学操作系统原理知识和Qt5,因此买了本《Orange's
一个操作系统的实现
》。本人自认为自己当个老师还算是非常称职的,因此就在这里把学到的现炒现卖一遍。
招潮蟹
·
2020-07-08 03:42
操作系统原理
汇编语言
《Orange'S:
一个操作系统的实现
》学习笔记(1)—— 环境搭建与系统内核的实现
作为一名刚上完操作系统理论课的大学萌新,真正操作系统的实现无疑是最棒的实践,这本书通过不断地向一个操作系统的基本内核中补充与完善,最终实现一个较为完整的操作系统,这将是一次非常有分量的尝试。话不多说,快快出发:1.笔者的开发环境是ubuntu14.04LTS(因为更高版本的无法安装vmware12的vmtool),而由于涉及大量的命令行和汇编,为了方便起见,linux也是本书作者较推荐的系统。2.
BnLeOwG
·
2020-07-07 23:00
操作系统
Orange's
30天自制操作系统-1
因为前面看完了这本书,所以准备花一些时间整理一下这本书(有空就写写),一开始在打算写一个"操作系统"的时候有两个打算,一个是于渊先生的《Orange's
一个操作系统的实现
》,另一个就是这本《30天自制操作系统
Kiopler
·
2020-07-07 23:38
32天自制操作系统
orange's
一个操作系统的实现
--学习过程 第三章:a代码反汇编分析
因为汇编语言编译的二进制程序在内存中和本身文件是一样的,把汇编出来的pmtest1.bin文件的16进制复制出来分析一下(区别是文件只能看到静态结果,无法执行)可以通过bochs调试模式,一步一步的执行,观察gdt数据结构的变化。虽然是CPU支持保护模式的gdt方式,但是需要程序自己构造数据结构保存数据,程序自己动态的使用自己的数据。--汇编出来的二进制文件pmtest1.bin文件0000000
高云朋
·
2020-07-07 18:01
orang's
于渊著
orange's
一个操作系统的实现
--学习过程 第三章:b 从保护模式切换到实模式的一点理解
书上原文描述:我们从实模式进入保护模式时直接用一个跳转就可以了,但是返回的时候却稍稍复杂一些。因为在准备结束保护模式回到实模式之前,需要加载一个合适的描述符选择子到有关段寄存器,以使对应段描述符高速缓冲寄存器中含有合适的段界限和属性。而且,我们不能从32位代码段返回实模式,只能从16位代码段中返回。这是因为无法实现从32位代码段返回时cs高速缓冲寄存器中的属性符合实模式的要求(实模式不能改变段属性
高云朋
·
2020-07-07 18:01
orang's
于渊著
orange's
一个操作系统的实现
--学习过程 第一章:a 为什么要org 07c00h?
为什么要org07c00h?这个问题在书中作者的解释是:我们知道,当计算机电源被打开时,它会先进行加电自检(POST),然后寻找启动盘,如果是选择从软盘启动,计算机就会检查软盘的0面0磁道1扇区,如果发现它以0xAA55(9)结束,则BIOS认为它是一个引导扇区。当然,一个正确的引导扇区除了以0xAA55结束之外,还应该包含一段少于512字节的执行码。好了,一旦BIOS发现了引导扇区,就会将这51
高云朋
·
2020-07-07 18:01
orang's
orange's
一个操作系统的实现
--学习过程 第三章:a代码动态执行
--随着程序执行,查看gdt、GdtPtr内容变化--原始的gdt内容--3个gdt(每个8个字节)00000000000000001400000000984000FFFF00800B920000x/24bx0x7c04[bochs]:0x0000000000007c04:0x000x000x000x000x000x000x000x000x0000000000007c0c:0x140x000x00
高云朋
·
2020-07-07 18:01
orang's
于渊著
orange's
一个操作系统的实现
--学习过程 第一章:杂记
--------------------实模式下没有保护机制,自己写的汇编程序可以随意跳转地址,可以跳到开机初始CPUip地址,实现不停的开机的效果--jmp.asmorg07c00h;告诉编译器程序加载到7c00处BaseOfLoaderequ0xf000;----段地址OffsetOfLoaderequ0xfff0;----偏移地址movax,csmovds,axmoves,axcallDis
高云朋
·
2020-07-07 18:29
orang's
《Orange's
一个操作系统的实现
》第一、二章(搭建工作环境ubuntu16.04LTS+bochs2.6.11)
搭建工作环境:ubuntu16.04LTS+bochs2.6.111、ubuntu16.04LTS下载链接:官网,不能访问者请点这里。安装过程:略。注意:请配置国内的源。2、bochs2.6.11下载链接:官网,不能访问者请点这里。安装过程:tarxzvfbochs-2.6.11-tar.gzcdbochs-2.6.11./configure--enable-debuggersudomakesud
snail1502
·
2020-07-07 18:29
《Orange
S:一个操作系统的实现》
《
一个操作系统的实现
》mount错误解决办法(mount 您必须指定文件系统的类型
http://kevinlp.com/oranges-mount-error.html最近在看于渊著的《orange’s
一个操作系统的实现
》,今天想动手做做里面的实验,其中有处说到把pm.img挂载到/
luobin1984
·
2020-07-07 15:27
UEFI
《Orange'S:
一个操作系统的实现
》学习笔记(1)
最近在Kindle上利用一些零碎的时间读这本书,真是一本好书,强烈向大家推荐。由于手边没有电脑,所以也没来得及跑一跑书中的程序,今天终于有机会啦。作者是在Bochs虚拟机上运行自己的操作系统的,所以我也需要安装Bochs。我的系统是ubuntu14.04LTS。下面是安装步骤:1.Terminal上运行sudoapt-getinstallvgabiosbochsbochs-xbximage。2.切
五号的csdn
·
2020-07-07 09:41
计算机
一个操作系统的实现
:第五篇——内核雏形
汇编和C同步使用说明:1、汇编使用关键字global导出函数2、导入使用关键字extern声明函数3、遵循C调用约定(CCallingConvention),后面的参数先入栈,并由调用者(Caller)清理堆栈。编译链接方法:(ld的'-s'选项意为"stripall")nasm-felffoo.asm-ofoo.ogcc-cbar.c-obar.old-shello.obar.o-ofoobar
goodcrony
·
2020-07-07 08:04
一个操作系统的实现
:第二篇——搭建你的工作环境
Bochs的安装:DebianGNU/Linux或其近亲(比如Ubuntu),可以使用这样的命令:sudoapt-getinstallvgabiosbochsbochs-xbximage源代码安装:tarvxzfbochs-2.3.5.tar.gzcdbochs-2.3.5./configure--enable-debugger--enable-disasmmakesudomakeinstallB
goodcrony
·
2020-07-07 08:04
关于《orange‘s
一个操作系统的实现
》中调用门部分的补充和纠正
在《orange‘s
一个操作系统的实现
》中书对调用门中参数复制一点一略而过,并没有对参数大小等做出解释!
findstr
·
2020-07-07 07:48
操作系统相关
《orange's
一个操作系统的实现
》第0章学习环境搭建笔记:ubuntu 18.04 LTS+qemu+NASM
书中使用虚拟机Bochs,我一直习惯用qemu,所以就打算用qemu搭建环境学习。Ubuntu18.04LTS安装1、在microsoftstore安装untu18.04LTS,这样可以在windows环境下运行Linux命令行终端,方便开发。2、安装好后单击ubuntuLTS就可以打开命令行终端。3、打开终端后在>属性>选项>中去掉使用旧版控制台的勾选。不然运行时会提示禁用旧版控制台。安装qem
misonyo
·
2020-07-07 05:43
Orange's
一个操作系统的实现
(3)--- 从保护模式跳回到实模式
本篇主讲对应于《Orange'S:
一个操作系统的实现
》第三章b代码pmtest2.asm;==========================================;pmtest2.asm;编译方法
cheyue2756
·
2020-07-07 05:15
[系列]OS学习-自己写操作系统(2)- bochs的使用注意
-------------------------写操作系统的第二天---------------------------------------------------今天读于渊的《Orange's
一个操作系统的实现
cellurs
·
2020-07-07 04:38
操作系统
自己写操作系统
蒋涛:《Orange’S:
一个操作系统的实现
》属于真正Hacker的
做真正Hacker的乐趣──自己动手去实践本文选自《Orange'S:
一个操作系统的实现
》一书序言2004年我听编辑说有个年轻人写了本《自己动手写操作系统》,第一反应是不可能,恐怕是翻译稿,写这种书籍是要考作者硬功夫的
博文视点
·
2020-07-07 04:30
万春 读《Orange’S
一个操作系统的实现
》有感
万春读《Orange’S
一个操作系统的实现
》有感本文由“碟中碟”虚拟光驱软件开发者——万春提供我经常遇到一些朋友,他们熟悉8086汇编语言,并且喜欢汇编语言.
博文视点
·
2020-07-07 04:30
Orange'S:
一个操作系统的实现
5月18日见到了《Orange'S:
一个操作系统的实现
》的样书,多少有些激动。想一想前一版本《自己动手写操作系统》是那么畅销,这一本一定不能含糊。
bingbingzi
·
2020-07-07 04:40
一个操作系统的实现
--从loader到内核和扩充内核的错误兼参考指令
======================================chapter5/e运行程序命令记录======================================#先制作内核nasm-felf-okernel.okernel.asmld-s-melf_i386-Ttext0x30400-okernel.binkernel.ostring.ostart.o#再制作磁盘和引导
T_Megan
·
2020-07-07 03:57
操作系统
Orange_OS-
一个操作系统的实现
--搭建环境写一个最小的操作系统
小白一只。记录自己的操作系统实现之路。第一章马上动手写一个操作系统//我崩溃了两天才完成的第一章,耐心点,你也可以完成,不懂找百度,准没错。运行需要环境与软件://具体系统安装可寻求同学百度等帮助,网上很多经验与例子,出现问题可以将问题代码复制到网上直接查,然后调试,耐心做。1.linux系统。//我的系统是linuxubuntu14.042.NASM汇编编译器3.C语言编译器GCC和自动化编译链
T_Megan
·
2020-07-07 03:57
操作系统
一个操作系统的实现
——笔记1
1.先去http://nchc.dl.sourceforge.net/project/bochs/bochs/2.4.5/bochs-2.4.5.tar.gz下载bochs-2.4.5.tar.gz2.解压下载的源代码:sudotarzxvfbochs-2.4.5.tar.gz3.进入bochs-2.4.5目录,运行configure脚本,它会测试你的机器,C/C++编译器以及一些库,用来判断何种
akktc5507
·
2020-07-07 02:06
os
linux内核
蒋涛 Orange S
一个操作系统的实现
属于真正Hacker的
做真正Hacker的乐趣──自己动手去实践本文选自《Orange'S:
一个操作系统的实现
》一书序言2004年我听编辑说有个年轻人写了本《自己动手写操作系统》,第一反应是不可能,恐怕是翻译稿,写这种书籍是要考作者硬功夫的
又是一个装逼的
·
2020-07-07 02:06
《Orange'S:
一个操作系统的实现
》笔记(一)
网友对于于渊的《Orange'S:
一个操作系统的实现
》和《30天自制操作系统》评价挺高的,先选《orange》为学习手册、《30》为参考手册,开始自己的操作
aixiang7408
·
2020-07-07 02:26
一个操作系统的实现
(于渊)———前七章总结
在前七章这个操作系统大概实现了用户进程、系统任务的分层,实现了TTY和键盘,和一些简单的系统调用,具体现象是在bochs上可实现键盘的输入和特殊输入(换行),代码具体逻辑如下:1.首先看看kernel/main.c的kernel_main.c函数PUBLICintkernel_main(){disp_str("-----\"kernel_main\"begins-----\n");TASK*p_t
Zackary-
·
2020-07-07 01:11
_一个操作系统的实现
从引导扇区到内核——操作系统雏形形成过程的总结
仍然是按照于渊《Orange'S
一个操作系统的实现
》的线索进行,从第一章到第五章,进行一次总结,这样可以有效的理清最底层主要工作的脉络。
居里猴弟
·
2020-07-06 22:55
学习实现操作系统
《Orange'S:
一个操作系统的实现
》学习笔记(四)
新版本的bochs调试命令和老版本有些不同,作者书中给出的命令无法在我的2.6版本的bochs中使用。例如dump_cpu命令已经无法使用了。下面给出一些常用命令,这些都可以在网上找到,记录备查。1.b|break:设置断点例:b0x7c00在物理地址0x7c00处设置断点2.infob|infobreak:查看设置的断点blist:列出所有断点3.c:执行程序,遇到断点停止4.s|step:单步
stepbystep
·
2020-07-06 20:21
操作系统
《ORANGE’S:
一个操作系统的实现
》第一个例子的实现
这本书看第一章就郁闷了:第一个例子居然需要软盘。。。。这种古董找到了我也没法用啊。首先我们按照书中所说,使用NASM编译出boot.bin然后问题就来了,如何将boot.bin转换成img格式的文件以下是我的各种蛋疼的尝试。(系统:Windows7x64)1.使用Winimage直接制作img格式系统好像可以启动,但是什么也没发生一直黑屏,而且Winimage无法正常打开书中的img格式的实例。2
程序员的蛋疼笔记
·
2020-07-06 20:57
上一页
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
其他