操作系统使用C语言和汇编编写的,Windows,UNIX,Linux都是这样的。绝大部分是C,极少情况使用汇编。
操作系统的编写需要与硬件厂商紧密配合,两者相辅相成。操作系统的实现要对硬件作出假设,硬件的设计要对操作系统的使用做出假设。所以开发操作系统很大的难度就是要和众多硬件设备供应商保持紧密的合作。
编写操作系统,和开发应用程序很大的不同是,他没有平台的库函数使用,很多时候是直接面向硬件,而且不是像应用程序是靠事件来驱动,而是靠中端机制来促使操作系统运行
windows是一个大型的系统软件,分成很多个部分,由很多名程序员分别完成的。每个程序员可能都有自己擅长的一种编程语言,各自使用自己擅长的语言(可能是c、c++、vb…………)编写程序完成自己所负责的那部分程序功能,然后再编译,组合成最后的windows操作系统软件。整个过程类似工厂里面生产大型设备,各自完成不同部件之后再组装。
根据几年前微软在美国公布的内容,windows本身属于微内核系统,windows98总共大概不到10万行代码(具体是2万还是5万记不清了),而windows2000则已经有20余万行代码,其中80%是用c++编写,其余部分有c和汇编,底层接口用汇编编写。
微内核系统从概念上是指“只包括操作系统的基本功能,例如内存管理和进程管理等等”,就连对各个文件系统的支持也不算在内,不过具体windows是不是这样设计我就不清楚了。
所以一个微内核系统的操作系统能够有20万行代码已经很多了。
之所以微软选择了c++而不想linux一样选择c,其根本原因就是windows操作系统本身是微内核系统,所以扩展性及以后的维护要求非常重要,所以c++的类的概念就能在这里很好的利用,但是毕竟c++的效率不如标准c及汇编,所以在一些明显以效率为重的地方用的还是标准c及汇编。
编写完毕后,windows上的其他用户态程序(包括所有驱动程序、计算器、游戏等等所有你现在拿鼠标能够操作的东西)另行开发,例如:扫雷游戏就是用vb写的。
常见的操作系统都是用c和汇编写的,还有一些不常见的操作系统就不是了
menuetos系统,纯汇编编写的,1.4MB大小,自带图形界面,堪称世界上最小的图形界面操作系统
redox系统,用rust语言写的