微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > 编程语言 > VB > 资源 >

操作系统开发问题

时间:2017-01-16 04:01  浏览:努力统计中...
这段时间没事在自己写操作系统,其中遇到了很多问题,想和大家分享一下我研究的一点成果 在我理解的操作系统,主要由 Bootloader + Kernel + Shell 所组成,目的是完成一个管理 计算机资
这段时间没事在自己写操作系统,其中遇到了很多问题,想和大家分享一下我研究的一点成果
  在我理解的操作系统,主要由 Bootloader + Kernel + Shell 所组成,目的是完成一个管理
计算机资源并提供相关接口开发应用程序的平台基础。

Bootloader:可以分为 Boot 程序和 Loader 两个程序所组成,也可以直接是一个程序完成,
但主要看 Kernel 架构和文件系统等选型决定是分两个程序还是一个程序完成工作。
其实 Bootloader 主要是计算机启动时自动加载到内存执行的第一个程序,也被称为引导程序,
它是运行在 CPU 的实时模式下的 16 位程序,而系统启动时只会加载 512 个字节,即一个扇区
的数据到内存执行,这也就恐怖马上了 Boot 程序或这说 Bootloader 程序编译后的大小不能超过
512 个字节,如果文件系统定义得不那么复杂,而且内核加载过程不需要特别初始化的话,这个程序
完全可以用 Bootloader 的方式一次加载内核(比如内核程序直接有汇编开发)。
但如果想实现 C/C++ 语言来开发内核,而编译器又是现有系统的编译器,这个 Bootloader 就得
分两个步骤来完成,先是 Boot 程序,功能是先加载 Loader 程序,然后由 Loader 程序初始化
好环境再加载 Kernel。

Kernel:这个所谓的内核,在我的理解就是提供了一堆预先写好的基础函数放到内存中共其他应用
程序调用。比如提供 OS_ReadFile、OS_LoadAPI 等函数,然后应用程序启动时可以通过特定的内存
地址找到这些函数的内核地址,从而用跳转指令调用这些函数。这些一系列的函数累加起来,实现
了系统所谓的内存管理、进程管理、线程管理、设备管理等等功能。然后 Kernel 的初始化及载入
过程完成后就可以把执行权移交给 Shell 与用户进行交互了。

Shell:在我的理解,Shell 就是人机交互的管理程序,如 DOS 下的命令行形式的人机交互方式,
或者是 Windows 下图形模式的人机交互方式,理论上说,这个 Shell 是系统执行的第一个“应用程序”,
理论上 Shell 里的过程基本上全是调用 Kernel 所提供的函数完成的。

  到现在为止,对于写“操作系统”,我越来月不清晰,因为有以下几个顾虑。
  如编译器是自己写好还是用现成的好,如果用现成的,免不了要根据别的系统走开发路线,而且
  也未必是能实现我想用 BASIC 开发系统的想法。但自己写编译器难度又较大。
  如果用高级语言开发内核,还是与编译器有关,包括应用程序的执行问题,这个内核还是与编译器
  息息相关,如果不考虑高级语言,用汇编来写,灵活性比较大,但如果要写大,代码管理也很叫人
Basic to Asm 的功能,然后再用汇编编译器编译程序。
  也全由汇编开发,这样就没什么价值了。
3、是否采用现有系统的模型
  比如 Windows、Linux、MacOS、DOS、uCos、Menuet OS 等,都有自己的特点,自己定制方式是比较随意,
  但相对来说所有东西都要自己做,就比如如果不用现有的文件系统格式,自己弄一个,可能会更方面,
看过,不过觉得那种方式不是太好,他就是解析 ELF 的模式,就是那种 Boot 和 Loader 分开
  但如果运用的现有系统架构,那今后的开发路线就是个模仿的过程,基本上还不如直接用那些系统来得
  有意义。

2、应用程序接口(包含动态库和静态库,驱动程序也由这种方式写)蟛桓撸饕故俏榷ㄐ?br>和成本,如果这个系统要求的硬件环境不高,支持x86、x64、ARM,开发简单快速,并且稳定可靠,相信
下方便管理文件。但发现这样很耗代码,因为 FAT12 文件系统大致分为4个部分:
1、BOOT 区域,就是引导用的第一个扇区,也就是所谓的 MRB 表。如果要保持标准的 FAT12 文件系统,
  必须按照它的固有格式开发 Boot 程序,如:开始是3个字节的跳转指令,然后跟着 BPB 表信息,然后
  才开始 Boot 程序的代码,最后就是 0xAA55 的引导结束符号,所以,这个 BOOT 程序实际上最多只有
  448 个字节。
目前在开发操作系统的时候,我采用了软盘上用的 FAT12 文件系统进行系统设计,主要是为了在 Windows
2、FAT 表区,这个 FAT 其实是 File Allocation Table 的缩写,主要是记录文件数据的族链信息,
如果是为了赚钱,不一定要靠程序,比如做餐饮、娱乐、物流或做贸易都可以赚钱,有些
  只有在文件数据内容大于一个族(512字节)才会具体指向数据的逻辑族地址,如果文件数据内
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线------