普及知识!跪求答案! 操作系统是怎么开发、编译(怎么编译的?)并且运行在设备上(这个问题的意思是

2024-12-26 12:53:30
推荐回答(1个)
回答1:

就我知道的向你说一说:
1,操作系统用的是c语言开发的:
但这c语言和普通的c语言是有区别的,不能使用库函数。
这个c语言的编译器也和普通的编译器有区别的。《30天自制操作系统》-用的是开源的c编译器并且经过修改的。
2,第一扇区的bootstrap
bootloader或者说bootlstrap是用汇编语言写的
但是这个汇编器和拿来开发应用程序也是有区别的,
就拿汇编中的伪指令org和dup应用程序的汇编编译器是无法达到想要的目的的。
如果第一扇区是启动分区,那么对应的最后两个字节为511-0x55AA
bootloader开始就是一条跳转指令0xeb开头的后面是偏移量,紧接着就是这个媒介的配置信息
,紧接着才是我们要写的16bit的汇编语言。
这里要做的事就是:
读取硬盘上的数据放到内存中准备运行,保存配置数据,由16bit实地址模式切换到32模式。。。
本人原来照葫芦画瓢画过。
但是切换到32bit下要用到内存保护机制,内存映射机制,虚拟内存机制。。。这些和计算机硬件的密切相关。无奈本人了解的计算机硬件一般都是十六位的,而且大多与概念相关。
而且对于的intel指令手册都是英文的,总而言之能力有限无法进行下去。
如果要开发操作系统,以我看:
计算机组成原理特别是32bit下的内存映射保护相关内容必须知道
汇编和c语言那时必须的会
耐心时间
推荐书籍《30天自制操作系统》
通过开发操作系统可以加深 汇编与计算机硬部件 汇编和c语言 相关连的理解。
如果你想试一试可以在虚拟机下玩一玩。
——以上内容仅供参考——