如何建立一个电脑操作系统
操作系统就是让人与电脑硬件进行互动。操作系统是由成百上千条代码构成的,通常由C、C++和集成程序语言编写而成。
步骤
- 01
开始之前学会编程。集成语言是必须的。另一种补充的低级语言,如C语言也是强力推荐的。
- 02
选择你想把你的操作系统搭载到什么媒体。可以是CD驱动、DVD驱动、闪盘驱动、硬盘驱动,或是另一台电脑驱动。
- 03
决定你想让你的操作系统干什么。是否整个操作系统都配有图形用户界面(GUI)或是更加动漫式的。开始之前你需要了解你做的是哪个方向。
- 04
选择你的操作系统支持哪种处理器平台。AI-32 和x86_64 是最常用的个人电脑平台,你最好选择它们。
- 05
选择是否由自己从头做起,还是按照现有的核心自己往上建立。比如,Linux核心就是设计给那些想要在其之上建立他们自己的Linux版本的人的。
- 06
选择是否要使用自己的引导装载程序或做一个预创建的程序,比如统一引导装载程序 (GRUB)。由于编写你的引导装载程序需要扩展对硬件和BIOS的知识,因此要把它推到实际的核心编程之后。
- 07
决定用哪种程序语言。尽管用如Pascal或BASIC语言也可以创建操作系统,但你最好还是用C语言或集成语言。集成语言绝对是必须的,操作系统至关重要的部分需要它。另一方面,C++语言也是关键的,但它需要完整的操作系统来运行。 要用C或C++代码编写操作系统,当然,你需要使用一个编译程序。因此,不论这些指南是软件附带的,还是可以从经销商的网上下载,你都应该阅读用户指南/手册/文档,来选择你的C/C++编译程序。你也需要了解关于编译程序的很多复杂问题,对于C++,你应该了解编译程序的识别编码模式和它的ABI。你需要懂多种可执行的格式(ELF、PE、COFF、纯二进制等等,并且要懂得Windows专有的格式,PE (.exe)是受版权保护的。
- 08
选择你的应用程序界面(API)。一个好的API选择就是POSIX,因为它已经编译好了。所有的Unix系统都部分支持POSIX,因此,把Unix程序植入你的操作系统并不重要。
- 09
决定你的设计。有单片核心和微核心可供选择。单片核心可执行核心上的一切服务,而微核心是一个小的核心,其结合了用户后台进程,进程可以执行服务。通常而言,单片核心更快,但是微核心故障隔离和可靠性更好。
- 10
考虑用团队发展和工作。这种方式可以花更少的时间解决更多的问题,而且可以更快造出更好的操作系统。br>
- 11
不要完全擦除你的硬盘。记住,擦除你的硬盘会永久清除你的所有数据!用GRUB或其他启动管理器来用另一个操作系统做双启动系统,直到你自己的操作系统完全可以用了。
- 12
从小地方开始。在进行内存管理和多进程任务之前,从小地方开始,如现实文本和中断。
- 13
保存最新工作源的备份。这样可以预防你当前的操作系统版本或是你当前的工作出问题。如果你的电脑死机且无法启动了,用副本进行工作是个好主意,这样就可以排除故障了。
- 14
考虑用虚拟机测试你的新操作系统。不要每次做出修改后就重启电脑,而是要把文件从你的电脑传输到虚拟机上,你可以用虚拟机应用来运行你的操作系统,同时当前的操作系统也是运行的。VM应用包括VMWare (它也有一个免费使用的服务器产品),另一个开源的选择就是Bochs,微软虚拟PC(不能与Linux兼容),还有xVM VirtualBox。
- 15
发布一个"候补版本",这样可以让用户报告给你操作系统的潜在问题。
- 16
一个操作系统可以是用户友好型的,因此增添一点用户友好特点,把这些整合进你的设计。
额外的资源
- 01
手册:Linux From Scratch
- 02
引导装载程序:GRUB
- 03
虚拟机应用:Bochs、VM Ware、XM Virtual Box
- 04
处理器手册:Intel manuals
- 05
操作系统建立网站:OSDev、OSDever
你需要准备
- 01
一台电脑 一个用来建构结构体系的CPU 对于虚拟机器的足够的内存(RAM) 一个“主”操作系统(在汇编源代码的最初阶段,用来建构源代码并打包程序,最终你自己的操作系统将成为主系统) 句法润饰代码编辑器(如果你没有集成发展环境,就用它) 一个编译程序 一个CD/DVD 驱动