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:
一个操作系统的实现
》作者自序本书是《自己动手写操作系统》的第二版,通过一个具体的实例向读者呈现一个操作系统雏形的实现过程。
weixin_34319111
·
2020-07-06 19:32
hurlex 一个基于x86架构的简单内核实现
在翻阅了于渊的《Orange’s
一个操作系统的实现
》和川合秀实先生的《30天自制操作系统
weixin_34067980
·
2020-07-06 19:04
一个操作系统的实现
-1_环境搭建
一:bochs安装1.从官网上下载源码(http://sourceforge.net/projects/bochs/files/bochs/)2.确保安装编译前的依赖项sudoapt-getinstallbuild-essential(gcc,make基本工具支持,注意bochs是用C++写的,可能需要安装g++-sudoapt-getinstallg++)sudoapt-getinstallli
still_run
·
2020-07-06 18:10
一个操作系统的实现
Orange's
一个操作系统的实现
学习(1)
工具准备以及引导程序的编写第一版的电子书(PDF)自己动手写操作系统1.VirtualPC安装原书所说的VirtualPC已经下载不好下载了,经过几天的探索,终于发现了一个符合要求的版本。VirtualPC5.02.DOS6.3安装(1)安装DOS来这里下一个msdos6.22的镜像.然后启动VirtualPC,新建一个PC,内存32m,硬盘50m,OK启动!菜单->软驱->载入镜像选择622c.
sy198704
·
2020-07-06 18:30
操作系统
《oranges:
一个操作系统的实现
》阅读笔记 二
第三章保护模式1.描述符和选择子的结构先把这两个结构放在上面,下面讨论的时候好方便对照着看。高地址低地址高地址描述符结构31231570段基址(8-15位)(第2字节)段基址(0-7位)(第1字节)段界限(8-15位)(第2字节)段界限(0-7位)(第1字节)段基址(24-31位)(第4字节)G|D/B|0|AVL|段界限(16-19位)7|6|5|4|3210P|DPL|S|TYPE7|65|4
Joey2357
·
2020-07-06 18:24
操作系统
保护模式
oranges
汇编
段界限为什么要减1
在orange's
一个操作系统的实现
,第3章,pmtest1.asm中,有如下代码GdtPtrdwGdtLen-1;GDT界限我们知道一个描述符中包含段基址和段界限,那么如果GdtLen是GDT的长度,
ruyanhai
·
2020-07-06 18:12
汇编/操作系统
学习笔记 |《ORANGE’S:
一个操作系统的实现
》| (一) Ubuntu - 16.04 bochs安装与配置
目录bochs的安装实验环境直接获取下载bochs安装编辑依赖环境配置文件操作命令在Bochs中使用Dos的步骤bochs的安装实验环境Ubuntu16.04+bochs2.4.6+nasm软盘制作和nasm编译汇编文件就如书里所示此处略举。直接获取可以直接使用命令下载,由于版本原因,可能会和书中的操作不一样导致困惑。sudoapt-getinstall所以下面是下载源码包进行编译安装的过程下载b
Winn-Jay
·
2020-07-06 17:55
orange's
一个操作系统的实现
--学习过程 第一章:a 最小的操作系统OS
--------------------全部都在windows环境下需要准备软件工具虚拟机Bochs(带有生成img文件的功能bximage.exe)https://sourceforge.net/projects/bochs/files/bochs/汇编语言编译器nasmhttps://www.nasm.us/pub/nasm/releasebuilds/读写磁盘工具dd.exeLinux下有一
高云朋
·
2020-07-06 17:04
orang's
操作系统实践(8)——从Loader到内核
本次实践涵盖的内容包括《orange’s
一个操作系统的实现
》书中的第三章末尾、第四章、第五章。因为这些东西比较紧凑。捋一下思路:1.中断与异常,在
小灰马
·
2020-07-06 16:44
汇编
操作系统
系统引导
一个操作系统的实现
---内核雏形
今天开始练习实践第五章的内核雏形。具体的步骤如下:1、首先编写完成boot.asm,使用命令nasmboot.asm-oboot.bin,这样就可以加载loader2、然后编写loader.asm,然后同样使用命令nasmloader.asm-oloader.bin,这样使用loader来加载内核并跳转到内核的功能3、最后编写kernel.asm,然后使用命令(注意,这里命令不一样),分为两步na
glorin
·
2020-07-06 16:02
一个操作系统的实现
保护模式——参考自ORANGE’S:
一个操作系统的实现
在看代码之前需要搞清楚什么是保护模式,保护模式下段选择子的作用、寻址过程,可以如果忘记了可以参考下面文章然后再看代码1、http://blog.csdn.net/rosetta/article/details/8933200%include"pm.inc";常量,宏,以及一些说明org07c00hjmpLABEL_BEGIN[SECTION.gdt];GDT;段基址,段界限,属性LABEL_GDT
didadidaqiaoyiwan
·
2020-07-06 16:53
operating
system
引导扇区——参考自ORANGE’S:
一个操作系统的实现
计算机引导过程:1、通电,自检2、寻找启动盘(比如软盘),检查第0面0磁道1扇区这个位置,如果以0xAA55结束,则视为引导扇区,引导之。补充一些关于硬盘结构知识:http://blog.csdn.net/otishiono/article/details/5906119org07c00h;告诉编译器程序加载到7c00处movax,csmovds,axmoves,axcallDispStr;调用显
didadidaqiaoyiwan
·
2020-07-06 16:53
operating
system
orange's
一个操作系统的实现
之环境搭建
搭建你的环境1.虚拟计算机Bochs简单来讲,它相当于运行在计算机内的小计算机。这个好理解,我用的vmware不就是这样的东东嘛。不过,现在看来,我得让Bochs成为包含在vmware中的“小小计算机”了。1.1Bochs初体验嗯,我已经从书上的插图看到啦,是个黑底白字的、运行着Debian的、满天繁星似的窗口!1.2Bochs的安装ubuntu8.10下安装还真方便:sudoapt-getins
快乐的霖霖
·
2020-07-06 16:38
一个操作系统的实现
【整理】Orange‘S-
一个操作系统的实现
变来变去,动来动去,最终还是回到这里,做自己想做的事并把它做好!1.虚拟机Bochs安装(1)出现“ERROR:Xwindowsguiwasselected,butXwindowslibrarieswerenotfound.”解决办法:sudoapt-getinstalllibx11-devxserver-xorg-devxorg-dev(2)出现“ERROR:pkg-configwasnotfo
angmoci4456
·
2020-07-06 16:24
【第一天】于渊著《Orange's
一个操作系统的实现
》【学习笔记】
今天开始学习于渊著《Orange's
一个操作系统的实现
》准备工作:1、下载NASM,下载链接2、下载rawrite32,下载链接3、从淘宝买了两张空白软盘和一个软驱(U盘也可以,只是我的四个U盘都落在了学校
CapsLock2019
·
2020-07-06 15:22
大学
Orange's
一个操作系统的实现
:马上动手写一个最小的操作系统
源代码org07c00h;告诉编译器程序加载到7c00处movax,csmovds,axmoves,axcallDispStr;调用显示字符串例程jmp$;无限循环DispStr:movax,BootMessagemovbp,ax;es:bp=串地址movcx,16;cx=串长度movax,01301h;ah=13,al=01hmovbx,000ch;页号为0(bh=0)黑底红字(bl=0ch,高
ylemfei
·
2020-07-06 15:39
操作系统
Orange's
一个操作系统的实现
:保护模式
概述在计算机加电之后,bios检查硬件,并且把第一个扇区中的bootloader代码加载到0000:07c00h处,开始执行bootloader代码.bootloader主要做两件事情:-从实模式进入保护模式-从硬盘(或者其他)中读取OSkernel到内存的固定位置处,然后跳转到OS中执行.这里先讨论如何从实模式进入保护模式参考链接:-学堂在线-清华大学OS课程先让代码跑起来先下在freedos,
ylemfei
·
2020-07-06 15:39
操作系统
自制操作系统--1 环境搭建
网上有不少简单的加载器制作的文章,我也是初学,之前看过《Oranges‘s
一个操作系统的实现
》,看到保护模式哪一点觉得非常头痛,有很多不清楚的地方,现在在看《30天自制操作系统》,虽然读起来简单多了,不过我使用的是
rayz
·
2020-07-02 12:25
操作系统
《Orange’s
一个操作系统的实现
》3.保护模式5----特权级概述(转)
学习过程中遇到一个对保护模式总结很好的Blog,转来分享一下。先说下特权级的概念,在保护模式下,系统依靠特权级来实施代码和数据的保护,相当于权限啦。特权级共有4个级别,0,1,2,3,数字越小表示权限越高。如图:较为核心的代码和数据放在较高(靠内)的层级中,处理器用此来防止较低特权的任务在不被允许的情况下访问处于高特权级的段。为了防止概念混淆,我们不用特权级大小来说明,改为内层(高),外层(低)来
leileicaocao
·
2020-07-02 07:18
一个操作系统的实现
操作系统
操作系统内核Hack:(一)实验环境搭建
操作系统内核Hack:(一)实验环境搭建三四年前,心血来潮,入手《Orange’s:
一个操作系统的实现
》学习操作系统内核,还配套买了王爽的《汇编语言(第二版)》和《80X86汇编语言程序设计教程》,虽然
weixin_30768175
·
2020-06-28 00:50
从头开始编写简单的操作系统-序
因为很多地方似懂非懂,所以打算从头梳理一遍,如果能帮到有同样想法小伙伴,那将是我的荣幸:-)ps:编译和运行运行环境是参考于渊老师的《Orange’S:
一个操作系统的实现
》,源代码和进度是按参考资料里的
old_iron
·
2020-06-25 13:33
操作系统
一个操作系统的实现
实验之3.2.1
一个操作系统的实现
实验之3.2.12010年08月10日基于代码pmtest2.asm目标:测试读写打地址内存,例如:5M为基址;保护模式如何跳回实模式;首先来说说,代码3.4中引入的LABEL_DESC_NORMAL
iteye_10559
·
2020-06-23 18:59
技术杂绘
制作Linux可识别的软盘映像文件(FAT12格式)
(FAT12格式的软盘,摘自《Orange'S:
一个操作系统的实现
》)(摘自《Orange'S:
一个操作系统的实现
》)上一篇学习笔记中说过,采用dd指令,可以制作一个空白软盘映像。所以,
十月石榴2013
·
2020-03-27 08:07
《ORANGE'S:
一个操作系统的实现
》之 boot(MBR)
引言阅读于渊的《ORANGE'S:
一个操作系统的实现
》,对一些知识点做一个笔记,方便以后复习相关知识。这一篇主要对boot代码进行讲解。
_NULL_PTR
·
2020-02-22 16:14
x86汇编分页模式实验 --《ORANGE'S
一个操作系统的实现
》中 pmtest8.asm解析
序言(废话):在看书的过程中发现一开始不是很能理解pmtest8的目的,以及书上说得很抽象..于是在自己阅读过源代码后,将一些自己的心得写在这里。正文:讲解顺序依然按照书上贴代码的顺序来。但是是几乎逐句解释的。可能会稍微有点啰嗦。废话就不多说了直接贴代码。LABEL_DESC_FLAT_C:Descriptor0,0fffffh,DA_CR|DA_32|DA_LIMIT_4K;0~4GLABEL_
Vizdl
·
2019-11-24 23:00
jmp to protected mode The Long Walk.Chapter1.2.1
我最近忙于阅读《oranges
一个操作系统的实现
》,感觉作者功力还算不错,可以作为长期编写OS的参考书,目前已经读了30几页,读到了进入保护模式的一段代码,不知怎么的有些感动,因此提前更新,将这段代码放在下面
Alice_Rabbit
·
2019-09-13 21:41
Rance.OS
Developing
Program
我是如何学习写一个操作系统(五):故事的高潮之进程和线程1
现在的这个系列已经和之前的标题渐行渐远了,原本是想以之前写的一个玩具型操作系统FragileOS为主线,但是在看书学习的过程中稍微改了一下方向,已经不是特别关注
一个操作系统的实现
的完整流
dejavudwh
·
2019-08-27 11:00
几年以后再次读
一个操作系统的实现
,今天在做img文件mount时竟然mount不上了。
错误提示为:/dev/loop0写保护,将以只读方式挂载mount:文件系统类型错误、选项错误、/dev/loop0上有坏超级块重新创建img:运行bximage,选1.Createnewfloppyorharddiskimage。输入fd,默认1.44MCreatingfloppyimage'a.img'with2880sectorsThefollowinglineshouldappeariny
axman
·
2019-03-26 19:13
手记
你知道Java方法能定义多少个参数吗?
一:为什么研究这么无聊的问题这两天在读一本老书《Orange’S
一个操作系统的实现
》,把丢了很长时间没研究的操作系统又重新拾起来了,在第三章讲解“保护模式”时,作者提到了调用门描述符中的ParamCount
gt9000
·
2019-03-04 20:37
实现自己的操作系统-step1环境搭建
本文参考《orange's
一个操作系统的实现
一书》。操作环境:macbookpro准备:virtualbox虚拟机软件下载。下载地址:https://www.virtualbox.org/。
yanchenghust
·
2019-02-24 19:14
x01.os.24: 来点代码
《Orange'S
一个操作系统的实现
》源代码《Linux0.11内核完全注释》源代码《一个64位操作系统的设计与实现》,源代码见项目x01.treeoslinux-0.12源代码:解决了NotOwner
x01
·
2019-01-14 13:00
你知道Java方法能定义多少个参数吗?
一:为什么研究这么无聊的问题这两天在读一本老书《Orange'S
一个操作系统的实现
》,把丢了很长时间没研究的操作系统又重新拾起来了,在第三章讲解“保护模式”时,作者提到了调用门描述符中的ParamCount
半栈工程师
·
2018-09-09 12:39
Bochs出现'keyboard_mapping' is deprecated - use 'keyboard' option instead.解决方法
最近在通过于渊老师的《Orange'S:
一个操作系统的实现
》学习操作系统,据大神说这本书傻子都能看懂(因为于渊老师巨细无遗的讲解嘛),就下载来学习学习。
Whu-MT
·
2018-05-03 12:58
操作系统
十分钟完成一个操作系统-打印Hello world
刚开始学于渊的《
一个操作系统的实现
》,动手写一个可以显示Hello,World的20行代码的操作系统,其实只是个引导盘。
疯狂小兵
·
2018-01-07 00:00
操作系统
asm
hello-world
Orange's
一个操作系统的实现
安装Bochs
前言:本机环境ubuntu16.04bochs2.4.6一.下载官网http://bochs.sourceforge.net/二.安装1.将下载好的压缩包解压并进入该目录tarvxzfbochs-2.4.6.tar.gzcdbochs-2.4.62.安装编译程序依赖的包sudoapt-getinstallbuild-essential3.检测环境,打开调试功能的开关./configure--ena
DerekRay
·
2017-08-03 20:51
《ORANGE'S:
一个操作系统的实现
》之 GDT结构体
引言阅读于渊的《ORANGE'S:
一个操作系统的实现
》,对一些知识点做一个笔记,方便以后复习相关知识。这一篇主要对GDT结构体代码进行讲解。
_NULL_PTR
·
2017-01-13 16:57
《
一个操作系统的实现
》——pmtest1.asm详解
段机制轻松体验 内存寻址: 实模式下的内存寻址: 让我们首先来回顾实模式下的寻址方式 段首地址×16+偏移量=物理地址 为什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻址64KB,它无法寻址到1M内存。于是,Intel设计了这种寻址方式,先缩小4位成16位放入到段寄存器,用到时候,再将其扩大到20位,这也造成了段的首地址必须是16的倍数的限制。 公式:xxxx:
bfboys
·
2016-08-27 22:00
一个操作系统的实现
--mount错误解决办法--mount 您必须指定文件系统的类型
最近在看于渊著的《orange’s
一个操作系统的实现
》,今天想动手做做里面的实验,其中有处说到把pm.img挂载到/mnt/floppy,pm.img是用bximage生成的,接着,想当然地用书中的命令
T_Megan
·
2016-07-20 23:29
操作系统
一个操作系统的实现
(8)-进一步体会分页机制
上面的两篇文章中,我们对可用内存进行了统计,并且合理的分配了页表的大小。这节中,我们来看看分页的好处在此之前不知道你有没有注意过一个细节,如果你写一个程序(在Linux或Windows下均可),并改个名复制一份,然后同时调试,你会发现,从变量地址到寄存器的值,几乎全部都是一样的!而这些“一样的”地址之间完全不会混淆起来,而是各自完成着自己的职责。这就是分页机制的功劳,下面我们就来模拟一下这个效果。
u010197364
·
2016-05-29 18:00
操作系统
内存
分页
存储
一个操作系统的实现
(7)-获取机器内存并进行合理分页
在前面的程序中,我们用了4MB的空间来存放页表,并用它映射了4GB的内存空间,而我们的物理内存不见得有这么大,这显然是太浪费了。如果我们的内存总数只有16MB的话,只是页表就占用了25%的内存空间。而实际上,如果仅仅是对等映射的话,16MB的内存只要4个页表就够了。所以,我们有必要知道内存有多大,然后根据内存大小确定多少页表是够用的。而且,一个操作系统也必须知道内存的容量,以便进行内存管理。克勤克
u010197364
·
2016-05-29 18:00
操作系统
分页
内存
存储
一个操作系统的实现
(6)-初识分页机制
这节仍然是从实现的角度来讲述分页机制。为什么要引入分页机制。我们都知道分段机制是为了提供保护机制,那么为什么还要引入分页机制呢?为什么引入分页机制想象一下这样一种情况:假设我们用的计算机物理内存是4GB,但是我们的程序大小是5GB。那么这个时候我们无法将程序全部放到内存中,也就无法运行程序。分页机制引入的原因之一就是为了解决这个问题。分页机制的引入实现了虚拟存储器的机制。另外,程序执行具有局部性,
u010197364
·
2016-05-29 18:00
数据
操作系统
内存
分页
存储
一个操作系统的实现
(5)-关于特权级
这节讲述IA32分段机制中的特权级。包括CPL、DPL、RPL的介绍以及代码实现不同特权级之间的转换。IA32的分段机制有四种特权级别,从高到低分别是0、1、2、3。数字越小表示的特权级越大。处理器引入特权级的目的是为了保护核心代码和数据。核心的代码和数据会被放在较高的层级中。从而避免低特权级(外层)的任务在不被允许的情况下访问位于高特权级(内层)的段。在开始之前,首先介绍一下一致代码段的概念。一
u010197364
·
2016-05-27 17:00
操作系统
call
JMP
调用门
特权级
关于自学计算机以来,一年历程的感想,加上近期在看《
一个操作系统的实现
》源码的一些分析
2015-5-23开始c语言。用的教程是浙江大学翁凯老师的c语言程序设计,C语言程序设计2015-8-13现在数据结构刚学完二叉堆。这个教程用的是浙江大学陈越姥姥的数据结构数据结构_中国大学MOOC(慕课),教材我用书《数据结构与算法分析c语言版》.这门课码过前面一直到平衡二叉树删除的代码。图部分的代码码的比较少,以在纸上推导为主。算法设计课程用的是哈尔滨大学的算法分析与设计课程。算法设计与分析之
qq_34049731
·
2016-05-26 10:18
一个操作系统的实现
(4)-认识LDT
请看这篇文章:
一个操作系统的实现
(2)-认识保护模式,认识保护模式那篇文章的最后详细介绍了由16位寻址升级到32位寻址而引入的GDT。
u010197364
·
2016-05-23 18:00
ubuntu
操作系统
一个操作系统的实现
(3)-保护模式进阶
上节内容是从实模式进入到保护模式,只是进入保护模式打印了一个字母P。但是没有体现出保护模式的优势,也没有从保护模式中返回。这节就是要体验保护模式下读写大地址内存的能力和从保护模式返回到实模式。这节要做的内容如下:首先在屏幕的第11行输出InProtectModenow.^-^。然后在屏幕第12行输出内存中起始地址为5MB的连续的8个字节。然后向这个以5MB开始的内存中写入ABCDEFGH。再次在第
u010197364
·
2016-05-16 23:00
ubuntu
操作系统
Descriptor
一个操作系统的实现
(2)-认识保护模式
今天开始学习intel处理器的保护模式。书的第二章这节讲述的是如何从实模式进入保护模式。用的例子是在保护模式下向屏幕上输出字符P如何进入保护模式呢?主要步骤如下:0.进入保护模式的步骤准备GDT用lgdt加载gdtr打开A20置r0的PE位位1跳转,进入保护模式下面是书的例子:1.进入保护模式实例;==========================================;pmtest1
u010197364
·
2016-05-14 23:00
操作系统
ubuntu
一个操作系统的实现
(1)-准备工作
今天开始看《Orange’S:
一个操作系统的实现
》一书。这里是ubuntu16.04下开发环境的搭建以及实现一个最小的操作系统(准确地说应该是一个引导扇区)。工欲善其事,必先利其器。
u010197364
·
2016-05-13 20:00
虚拟机
操作系统
源代码
ubuntu
编译器
动手制作操作系统——启动区制作
最近看了《Orange`s
一个操作系统的实现
》,萌生了自己写一个玩具操作系统的想法,首先从计算机启动过程开始计算机启动时,会按以下步骤执行:1、加电自检,执行BIOS中的自检程序。
Glorious11
·
2016-05-10 22:00
操作系统
C语言
《
一个操作系统的实现
》mount错误解决办法(mount 您必须指定文件系统的类型
转载出处:http://blog.csdn.net/luobin1984/article/details/38269903最近在看于渊著的《orange’s
一个操作系统的实现
》,今天想动手做做里面的实验
gqb1226
·
2016-04-22 16:47
给想写操作系统的同学说的前期准备
正学着操作系统课程时,萌生了一个之一想法,就是自己写一个简易的操作系统,所以写了这篇博客推荐给学完操作系统课后的同学两本书,《OrangeS:
一个操作系统的实现
》、《30天自制操作系统》两本书。
Lina_ACM
·
2016-04-21 20: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
其他