文档章节

《30制作操作系统》笔记

枫TI
 枫TI
发布于 2016/12/15 10:56
字数 889
阅读 11
收藏 0

CPU通电后做的第一件事儿

执行的第一条指令。。。

CPU读写软盘并不是一个字节一个字节的读写的,而是以512字节为一个单元进行读写。因此软盘的512字节就成为一个扇区。CPU开始读写的第一个扇区,称之为启动区。然后检查这个扇区最后2个字节的内容,如果这最后2个字节不是0x55 AA,计算机会认为这张盘上没有所需的驱动程序,报一个不能启动的错误。(也许会有人问为什么一定是0x55 AA呢?那是当初的设计者随便定的,笔者也没法解释)。如果CPU确认了第一个扇区的最后两个字节正好是0x55 AA,那么就认为这个扇区的开头是启动程序,并开始执行这个程序。

手动编写一个二进制文件,把该文件写入软盘,并用它来启动电脑。

helloos.img

编写这个文件耗费了一天的时间,当然找东西压住"0"键,干其它事情。

 

使用汇编语言实现helloos.img

手动编写汇编语言文件

helloos.nas

汇编的简单语法

DB

RESB

作者自己写的汇编语言编译器nask

编译汇编语言hellos

nask.exe helloos.nask helloos.img

批处理文件asm.bat简化汇编编译

电脑里有个BIOS的程序,出场时就组装在电脑主板上的ROM(只读存储器,不能写入,切断电源后内容不会消失)单元里。电脑厂家在BIOS中预先写入了操作系统开发人员经常会用到的一些程序非常方便。

作者开发的是32位的操作系统。

开发工具及硬件介绍:

1."二进制编辑器"(Binary  Editor),是一款可以直接对二进制数进行编辑的软件。

2.笔者提供的编辑器,也是以Windows版的gcc为基础稍加改造而做成的。

3.作者是以软盘为存储操作系统的物理存储,总容量是1440KB。

4.本书是以IBM PC/AT兼容机(也就是所谓的Windows个人电脑)为对象进行说明。至于其它机型。比如Macintosh(苹果机)或者PC-982等,虽然本书也参考了其中某些部分,但基本上无法开发出在这些机型上运行的操作系统,这一点还请谅解。注解:本书所讲的操作系统内容仅用Macintosh是开发不了的,并且开发出的操作系统也不能直接在Macintosh上运行。但是在PC上开发的操作系统,可以通过模拟器在Macintosh上运行。

 

世界上第一个操作系统怎么来的

在开发世界上第一个操作系统时,当然还没有任何现成的操作系统可利用,因此那时候的人们不得不对照着CPU的命令代码表,自己将0和1排列起来,然后再把这些数据写入到磁盘(估计那时候还没有磁盘,用的是其它存储设备)。这是一项非常艰巨的工作。所以恐怕最初的操作系统功能非常有限,做好之后人们利用它来开发一个稍微像点的样的操作系统,然后再用这个来开发更实用的操作系统......操作系统就是这样一步一步发展过来的。

 

 

 

© 著作权归作者所有

上一篇: 树莓派CPU
下一篇: 浅谈CPU发展史
枫TI
粉丝 14
博文 87
码字总数 43215
作品 2
东城
私信 提问
分享30本关于flash方面的学习书籍(免费下载)

分享30本关于flash方面的学习书籍(免费下载) 1、flash_ActionScript_3.0实用教程 2、ActionScript+3.0编程精髓中文版 3、ActionScript3.0运算符及表达式 4、ActionScript3.0数据类型 5、A...

邓剑彬
2012/12/03
1K
1
与 Red Hat 联手,Fedora 要支持 ARM 笔记本

Red Hat 正讨论与 Fedora 合作,要将 Fedora 带到 ARM 笔记本上。 Linux 拥趸一直希望基于 ARM 的笔记本能够更加完整并友好地运行 Ubuntu 等桌面版本,此前就有开发者开发了一个名为 aarch6...

h4cd
04/10
0
0
《游戏引擎架构》 学习笔记(一)

《游戏引擎架构》是一本非常不错的关于游戏开发的入门书籍。这本书对游戏引擎进行了全面的概述,读完可以对游戏引擎有一个初步的认识,如果以后要从事游戏开发的工作的话,这本书就有必要认真...

qq_35077043
2018/04/23
0
0
横着走?竖着走?笔记APP应用路在何方?

根据印象笔记6月29日发布的《中国知识工作者研究报告》显示,“学无止境”的知识工作者,会投入大量时间扩充自我知识储备。在这个过程中,86.7%的知识工作者有做读书笔记和书摘的习惯,30.3%...

刘旷
2017/09/04
0
0
Chrome OS暗色主题截图曝光 与Windows平台统一风格

随着用户越来越多地在弱光环境下使用设备,软件开发商们也在积极酝酿各自的“夜间模式”(暗色主题),比如谷歌。这家搜索巨头一直在为 Windows 和 MacOS 上的 Chrome 浏览器制作暗色主题,所...

稿源:
01/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7 新手阿里云服务器安装mongodb

简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 MongoDB特点 模式自由 :可以把不同结构的文档存...

醉雨
18分钟前
1
0
sql注入漏洞,应屏蔽SQL注入攻击

注:SQL注入好比是前端URL传参数请求时参数以SQL 做为参数传入,如 select 1 from dual where 1=1 or 1=1 and 1=2;(类似这样的SQL语句) 防御方法 如果自己编写防注代码,一般是先定义一个函...

颜丽
19分钟前
1
0
装饰者模式

 代理模式与装饰者模式看起来很像,都实现基础对象实现的接口,在其自身对象中都保存着对被代理/被装饰者的对象引用。   先来看看装饰者模式的定义:动态的将责任附加到被装饰者对象上,用...

铁骨铮铮
23分钟前
0
0
我为什么飞行 10000 公里去西班牙参加 KubeCon?

2019 年 5 月 20 日至 23 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCon EU(欧洲场)即将在热情洋溢的巴塞罗那盛装启幕。 作为云计算领...

zhaowei121
41分钟前
0
0
Node.getTextContent() not found 解决办法【不需要调整builder path下面包顺序】

新导入的工程,w3c的getTextContent找不到,response的setCharacterEncoding找不到,网上很多教程都是“调整工程builder path的lib包顺序把jre、tomcat调到上面即可”,但是进入项目的build...

嘿嘿嘿IT
48分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部