WINDOWS是一个大型的系统软件,分成很多个部分,由很多名程序员分别完成的。每个程序员可能都有自己擅长的一种编程语言,各自使用自己擅长的语言(可能是C、C、VB…………)编写程序完成自己所负责的那部分程序功能,然后再编译,组合成最后的windows操作系统软件。整个过程类似工厂里面生产大型设备,各自完成不同部件之后再组装。

编写操作系统是需要和硬件厂商紧密配合的,不是单纯的软件上的事情,更多的对计算机体系结构的熟悉程度。单从这点上看,就没有什么厂商可以胜任。个人更是很难做到。楼主有情趣可以搜一搜ReactOS,一定会有所收获的。这个系统是个学术上想搞出来个和Windows内核级兼容的一个东东
只要你学过汇编和C,只满足于写个“简单的操作系统",一两天就能搞定。随便把你写过的小程序,用直接写硬盘软件(或者自己编一个,调用winapi的WriteFile函数就可以),写进硬盘/U盘引导区。记住,起始地址是7c00。这就好了。注意,引导区只有440个字节给你用,程序不能太大,所以这部分基本要用汇编写。440字节后面是硬盘/U盘分区信息,不可以乱动。乱动以后bios可能没法识别硬盘/U盘。引导区最后两个字节必须是55AA,不过一般你不用管,硬盘/U盘格式化的时候都已经给你写好了。这样你的程序就在开机的时候直接运行了。想调用大程序也没问题,你需要写个不超过440字节的程序,负责把第二个扇区的内容载入内存并执行,由第二个扇区的代码负责把所有代码载入内存。后面的部分用C写或者别的高级语言写都没什么问题了。至于你想要具体作什么,就写什么,屏幕上画个画,管管硬盘上的文件,和用户互动一下,你随意。和你平常写程序没啥两样。总之一个能完成任务的简单操作系统就完事了。最多几天时间你就能搞定。这差不多能搞个接近dos1.0的“简单操作系统”。不过接下来才是你真正要学的。例如文件管理,内存管理,保护模式,进程管理啥的。麻烦归麻烦,但解放了自由了,终于可以编写内核态才准用的代码了,做的事情全部都是用户态下面不让做的事情。操作系统的学习,从这里才算真正开始。
由于操作系统比较难以界定,早期电脑基本上都是直接控制硬件,所以也没有人定义“最早”的操作系统,IBM早期的360大型机的管理系统已经有了操作系统的概念。具体的话可以参考维基百科:http://en.wikipedia.org/wiki/History_of_operating_systems后面的问题如我可以试着给你解释一下。最早的计算机没有汇编,直接靠机器码运行,也就是10101010110的二进制,输入方法是靠打孔带(一个条带上面有实心空心的小点,对应1和0)。后来出现了磁带,本质没有改变。
c语言当然是可以写操作系统的,但是操作系统的编写一般都不仅仅只是用C语言编写的。写操作系统需要编程语言提供以下几个特征:1、跨平台,不能是只在某个平台下编译(VB就不行);2、必须是编译型语言(PHP就不行),或者有一个非常高效的解释器;3、必须有方便的操作硬件的功能,容易嵌入汇编(Java就不行);4、兼容性要好,最好不同编译器编译的符号要基本相同,容易链接(C不行,如果放弃Class的话C基本可以);5、编译器本身最好是由该语言自己完成的(大部分语言的编译器都是用C/C写的);6、开发者可以很方便的扩展、改造、或者使用第三方的运行库(大部分语言的库都无法修改);7、开发者众多(小众语言就不行);8、该语言开发操作系统的资料要足够完善。所以总结下来,C语言是首选。