2 gongchangwangqi gongchangwangqi 于 2016.04.24 21:06 提问

操作系统是怎么开发的?

通常,开发各种程序都是在操作系统下开发的。
然而,操作系统又在什么环境开发呢????
在还不存在操作系统这种软件的时候,计算机大神自己编写了操作系统。。。
他们究竟是怎么办到的。
不会是用机器语言编写的吧?????

PS:最早期编程是使用机器语言编写的,硬件能够直接识别。后来出现了汇编,
可是机器又不认识汇编!!!虽说汇编可由汇编器转换为机器码,
那么问题来了,汇编器又是什么鬼???机器怎么有了汇编器功能??
汇编器究竟是怎么开发的?

8个回答

caozhy
caozhy   Ds   Rxr 2016.04.25 00:09

最早的计算机程序甚至都是纸带穿孔的,别说机器语言了。操作系统、编程语言都是从无到有一点一点发展起来的。甚至连计算机本身,也不是一蹴而就的。
在计算机发明以前,其实我们已经有了计算机的原型,比如巴贝奇的差分机,也有了计算机的理论基础,图灵机,甚至还有了程序,ada是第一个给计算机写程序的人。

caozhy
caozhy   Ds   Rxr 2016.04.25 00:13

没有什么科学和发明是拍脑袋想出来的。瓦特以前其实就有了蒸汽机,爱因斯坦以前,物理学家就提出了量子论中的一些理论。牛顿以前就有引力的假说,只是牛顿把它系统化理论化了。
如果想了解科学史和计算机史,推荐google的吴军先生的《浪潮之巅》《文明之光》

zuishikonghuan
zuishikonghuan   2016.04.25 11:10

Windows系统一般是在上一个版本的服务器系统上开发的,比如Windows Vista好像是在Windows 2003上编写、编译。win7应该就是在win2008上编写编译的。
Windows的内核(NT)主要由c和汇编编写
Windows的应用层主要是c++写的,少部分是C#。
Linux内核也差不多,主要由c和汇编编写。
没有操作系统的时候编程,自然就是裸机编程了。
一个操作系统的开发并不是简单的事,操作系统的核心是内核,内核又分宏内核,微内核等,一般认为Linux是宏内核,Windows(NT)是微内核或混合内核。简单说,内核需要给上层应用程序提供接口和运行环境,构建I/O体系,线程调度,权限和安全,网络协议栈等等。
当然,有的操作系统并不需要这么做,比如Android软件栈。Android直接使用Linux内核,他的内核代码并不多,大部分都是应用层代码,换句话说,他并没有实现诸如线程调度,I/O体系等内核代码,而是直接使用了Linux,Android系统的代码几乎都是应用层代码,开发这种操作系统,显然比内核容易的多。

zuishikonghuan
zuishikonghuan   2016.04.25 11:10

Windows系统一般是在上一个版本的服务器系统上开发的,比如Windows Vista好像是在Windows 2003上编写、编译。win7应该就是在win2008上编写编译的。
Windows的内核(NT)主要由c和汇编编写
Windows的应用层主要是c++写的,少部分是C#。
Linux内核也差不多,主要由c和汇编编写。
没有操作系统的时候编程,自然就是裸机编程了。
一个操作系统的开发并不是简单的事,操作系统的核心是内核,内核又分宏内核,微内核等,一般认为Linux是宏内核,Windows(NT)是微内核或混合内核。简单说,内核需要给上层应用程序提供接口和运行环境,构建I/O体系,线程调度,权限和安全,网络协议栈等等。
当然,有的操作系统并不需要这么做,比如Android软件栈。Android直接使用Linux内核,他的内核代码并不多,大部分都是应用层代码,换句话说,他并没有实现诸如线程调度,I/O体系等内核代码,而是直接使用了Linux,Android系统的代码几乎都是应用层代码,开发这种操作系统,显然比内核容易的多。

zuishikonghuan
zuishikonghuan   2016.04.25 11:15

Windows系统一般是在上一个版本的服务器系统上开发的,比如Windows Vista好像是在Windows 2003上编写、编译。win7应该就是在win2008上编写编译的。
Windows的内核(NT)主要由c和汇编编写
Windows的应用层主要是c++写的,少部分是C#。
Linux内核也差不多,主要由c和汇编编写。
没有操作系统的时候编程,自然就是裸机编程了。
一个操作系统的开发并不是简单的事,操作系统的核心是内核,内核又分宏内核,微内核等,一般认为Linux是宏内核,Windows(NT)是微内核或混合内核。简单说,内核需要给上层应用程序提供接口和运行环境,构建I/O体系,线程调度,权限和安全,网络协议栈等等。
当然,有的操作系统并不需要这么做,比如Android软件栈。Android直接使用Linux内核,他的内核代码并不多,大部分都是应用层代码,换句话说,他并没有实现诸如线程调度,I/O体系等内核代码,而是直接使用了Linux,Android系统的代码几乎都是应用层代码,开发这种操作系统,显然比内核容易的多。
汇编可以看做是一个编程语言,至于机器语言,有句话说的好,机器语言是给机器读的,不是给人读的。CPU其实是一种很笨的机器,他只能读懂内存中的机器指令(0和1)用0和1编程显然是很蛋疼的事,于是美国人发明了汇编,用编译器可以将汇编编译成机器语言,这是编程语言进步的表现。有了汇编后,才有了……->C->……

CSDNXIAON
CSDNXIAON   2016.04.24 21:12

国产操作系统开发之旅
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

u010783161
u010783161   2016.04.24 21:49

汇编语言其实就是用些命令来替代0101二进制字符串,汇编语言很底层的语言,机器能识别的,

suwu150
suwu150   2016.04.25 00:00

汇编语言就是机器语言,机器语言属于硬件语言,就比如开发一个处理器,你需要给这个处理器实现哪些功能,加法,减法还是乘法,或者除法,在这4类运算中,又分为整数运算和浮点运算,这些运算都是有专门的接口去实现,而这些借口就是常见的引脚,多个引脚控制一个运算的取数、存数,以及运算,在这里就要用到数电中所学的存储器原理,而对于处理器,也有很多种,有些处理器善于处理图形,有些善于处理运算,这都是在最初设计时确定下来并且由硬件实现的,而我们市面上常用的商务型计算机,属于精简指令系统的计算机,所谓精简指令系统的计算机就是根据人们使用各种预算的频率,保留最高频率的运算,当然还是有复杂指令系统的。

在由硬件实现的各功能中都包含着大量的集成板用来实现各种功能,对于汇编语言,就是一些标记,比如将加法记作 00001,而又将00001记作汇编语言中的“ADD”,只要键盘输入字母“ADD”,就代表加法运算,这就实现了汇编语言的助记符功能,其他类似了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
操作系统开发--什么是操作系统?
操作系统是控制计算机系统的操作及其资源的软件。操作系统的主要功能包括:Ø 管理内存及其他系统资源Ø 制定安全和访问策略Ø 多进程和线程的调度Ø 加载和关闭用户程序并提供基本的系统服务Ø 提供基本的用户界面和应用程序界面并不是所有的操作系统都会提供以上的这些功能。单任务系统像MS-DOS就不会调度进程,嵌入式系统eCOS就没有提供用户界面。但操作系统绝对不是:Ø 计算机硬件Ø 特定的应用程序(如:文...
【开发知识储备】UNIX操作系统和Linux操作系统
对UNIX和Linux系统概念比较模糊,记之。 UNIX操作系统,是一个强大的多用户、多任务操作系统,支持多种处理器架构。 整个UNIX系统可分为五层: 最底层是裸机,即硬件部分; 第二层是UNIX的核心,它直接建立在裸机的上面,实现了操作系统重要的功能,如进程管理、存储管理、设备管理、文件管理、网络管理等,用户不能直接执行UNIX内核中的程序,而只能通过一种称为”系统调用”的指令,以规
操作系统开发--什么是内核?
操作系统内核是你永远看不到的。它基本上允许任何其他程序执行。它处理硬件事件(称为中断)、软件事件(称为系统调用)和管理资源的访问。硬件事件处理(中断)会获取到你刚才按下的键,并将按键转化为对应的字符并存在缓冲区中,某些程序就可以在缓冲区里检索到该字符并判断出你按下的是哪个键。软件事件处理(系统调用)是由用户级的程序触发的,像打开文件,启动程序等。每一次的系统调用都需要判断传递的参数是否有效,然后执...
为什么中国开发不出WINDOWS
为什么中国开发不出操作系统?或者说中国为什么没有操作系统? 因为在PC上,所有的硬件都是老外的,你不信可以把电脑机箱打开。看看里面的东西有哪一样是中国的。所以中国暂时开发不出PC的操作系统。 所谓完全自主开发的操作系统。全都是基于linux的,所以如果有人说开发自主开发国产操作系统。那么该公司或者组织都是骗人的。属于卖国行为骗国家的人民币而已。 
开发一套自己的操作系统
操作系统一般指电脑上使用的系统,比如咱们常用的Windows,Linux,Mac OS 等。在投资圈操作系统是指,一套买卖操作的标准。比如"均线之上做多,均线之下做空"。就是一条非常简单的规则,也可以说是一个操作系统或交易系统。投资圈的人呢,一生都在研究属于他的操作系统,怎么让成功率再提高一些?怎么让操作系统稳定一些? 也可以延伸至一个公司的制度,国家的法律。为什么有的公司发展快,人家有健全的管理
android(Google公司开发的操作系统)
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手
苹果操作系统的历史
2007的4月1日是苹果公司的30周年纪念日,世界上第一台个人电脑是由苹果公司是创建,并且它也是第一个开发了具有图形界面及使用鼠标和菜单的操作系统。那么下面就让我们来回顾一下苹果30年来所使用和开发的操作系统的历史:1978: Apple II DOS 3.01980: Apple III SOS1983: Lisa1984: Mac System 1.01
如何开发自己的操作系统的引导程序
当你打开计算机时发生了什么?   1.电源打开;2.BIOS开始执行;3.引导程序开始执行。   引导程序的规定:你要有一个普通的二进制文件(COM 格式);大小是512个字节;最后两个字节一定是0AA55h;它能被载入到内存地址0x7C00。   工具:   NASM——是一个免费的汇编工具(有DOS/windows/Linux三种版本)   PARTCOPY2.0——DOS下可自由往磁盘拷贝数
操作系统:用户编程接口(概念)
对于计算机系统而言,操作系统充当着基石的作用,它是连接计算机底层硬件与上层应用软件的桥梁,控制其他程序的运行,并且管理系统相关资源,同时提供配套的系统软件支持。对于专业的程序员而言,掌握一定的操作系统知识比不可少,因为不管面对的是底层嵌入式开发,还是上层的云计算开发,都需要使用到一定的操作系统相关知识。
(0)从零开始的操作系统开发日记
ゼロからのOS開発ノート,从零开始的操作系统开发日记其实是个课程设计的坑,打算用于记录学习和开发过程中遇到的一些散点,在着手开干的时候会在github那边开个项目【其实打算博客也直接在那边写,但是我懒得搭博客了,,】 目前主要参考书籍是川合秀实先生的《30天自制操作系统》,关于这本书,一些整理如下: 软盘读盘D3 简单的写显存-图形显示D4 鼠标,键盘驱动D6-D8 内存管理(动态分区+相邻回收)