今天差点被骗去签卖身契做对日软件外包,一师兄告诉我真相才捡回一条命
下午丢的手机也送回来了,心情不错上来回个贴。
有些人可能没学过操作系统原理,对OS的内核没有概念,也不知道操作系统用来干什么的。
操作系统是计算机软硬件资源的管理者,向下直接驱动硬件,向上提供接口为应用程序服务。
现在可以驱动硬件的编程语言有那些? 有点常识的应该知道是C和汇编。汇编是直接用机器指令驱动计算机中的电路,C语言是提供指针可以驱动硬件,故而C被称为中级语言,宏汇编。汇编的优点是面向机器直接驱动效率高,缺点是不同的处理器芯片的指令集不一样汇编当然也不一样,所以移植性非常差。C提供低级语言才有的指针概念,经过了ASIC/ISO的标准化后有了统一的语法,用不同的编译连接工具可以生成适应各种处理器的指令(交叉编译),所以移植性好。C最初就是设计用来开发操作系统的。
看看C的历史:Ken.Thompson,Dennis.Ritchie在1969从MIT,GE,AT&T三方合作最终失败的Multics 项目中退出来,这个闷热无聊的夏季Thompson找来实验室里没人用的当时已经落后的PDP-7,给写了个游戏“空间旅行”,为了使PDP-7方便游戏的开发,Ken.Thompson和Dennis.Ritchie这对好朋友做了大量工作直至写出了一个操作系统UNICS,后来改名为UNIX。在UNIX获得成功后Thompson开发了B语言,后来在B的基础上开发了C,然后用C重写了UNIX使UNIX获得了可移植性。
C之所以会设计成这样完全是为了开发操作系统方便的。以前开发操作系统都用汇编,Ken.Thompson最初打算设计一种高级语言用来开发OS,当时的人以为是天方夜谭,后来事实证明这天方夜谭成真的了。后来的OS就都用C加汇编写了,主体部分用C写,硬件操作密集部分用汇编,用C嵌入或调用汇编写的函数就OK了。WINDOWS系统中约90%的代码是C写的,API也完全用C写的。如果你想找其他的语言来开发操作系统,对于现在的CPU,这种语言必须有指针的概念。以后或许会在硬件上支持某种高级语言,有人提到的将JAVA的JVM做到硬件中去的建议,这样当然可以不用C,不过这不知道要等到那天硬件技术才能发展到这一水平。
Basic很简单,我小时候玩的超级玛丽的红白机就有把BASIC做到ROM中的,能在那种低级的硬件中实现和Basic的简单有关。正是由于Basic的简单,想用这个开发OS内核是不可能的,了解X86的也知道没有在硬件上支持Basic。
写了这么多也不知道有没有意义。计算机专业的对我的观点不赞同可以和我讨论,不是这专业就算了。
对OS的kernel感兴趣可以去这里看看http://www.linuxforum.net/
国内研究linux的kernel水平最高的地方。
想了解OS的原理可以看Andrew.Tanenbaum(Minix之父,导致linux的诞生)的<<Modern Operating System>>,机械华章给翻译出版了。
下午丢的手机也送回来了,心情不错上来回个贴。
有些人可能没学过操作系统原理,对OS的内核没有概念,也不知道操作系统用来干什么的。
操作系统是计算机软硬件资源的管理者,向下直接驱动硬件,向上提供接口为应用程序服务。
现在可以驱动硬件的编程语言有那些? 有点常识的应该知道是C和汇编。汇编是直接用机器指令驱动计算机中的电路,C语言是提供指针可以驱动硬件,故而C被称为中级语言,宏汇编。汇编的优点是面向机器直接驱动效率高,缺点是不同的处理器芯片的指令集不一样汇编当然也不一样,所以移植性非常差。C提供低级语言才有的指针概念,经过了ASIC/ISO的标准化后有了统一的语法,用不同的编译连接工具可以生成适应各种处理器的指令(交叉编译),所以移植性好。C最初就是设计用来开发操作系统的。
看看C的历史:Ken.Thompson,Dennis.Ritchie在1969从MIT,GE,AT&T三方合作最终失败的Multics 项目中退出来,这个闷热无聊的夏季Thompson找来实验室里没人用的当时已经落后的PDP-7,给写了个游戏“空间旅行”,为了使PDP-7方便游戏的开发,Ken.Thompson和Dennis.Ritchie这对好朋友做了大量工作直至写出了一个操作系统UNICS,后来改名为UNIX。在UNIX获得成功后Thompson开发了B语言,后来在B的基础上开发了C,然后用C重写了UNIX使UNIX获得了可移植性。
C之所以会设计成这样完全是为了开发操作系统方便的。以前开发操作系统都用汇编,Ken.Thompson最初打算设计一种高级语言用来开发OS,当时的人以为是天方夜谭,后来事实证明这天方夜谭成真的了。后来的OS就都用C加汇编写了,主体部分用C写,硬件操作密集部分用汇编,用C嵌入或调用汇编写的函数就OK了。WINDOWS系统中约90%的代码是C写的,API也完全用C写的。如果你想找其他的语言来开发操作系统,对于现在的CPU,这种语言必须有指针的概念。以后或许会在硬件上支持某种高级语言,有人提到的将JAVA的JVM做到硬件中去的建议,这样当然可以不用C,不过这不知道要等到那天硬件技术才能发展到这一水平。
Basic很简单,我小时候玩的超级玛丽的红白机就有把BASIC做到ROM中的,能在那种低级的硬件中实现和Basic的简单有关。正是由于Basic的简单,想用这个开发OS内核是不可能的,了解X86的也知道没有在硬件上支持Basic。
写了这么多也不知道有没有意义。计算机专业的对我的观点不赞同可以和我讨论,不是这专业就算了。
对OS的kernel感兴趣可以去这里看看http://www.linuxforum.net/
国内研究linux的kernel水平最高的地方。
想了解OS的原理可以看Andrew.Tanenbaum(Minix之父,导致linux的诞生)的<<Modern Operating System>>,机械华章给翻译出版了。