|
|
第二次装linux。。已经可以QQ,上网,安装删除软件了,基本一般办公用没有问题。但是我还是有很多疑问的。
首先,因为我学习并使用过89C51系列单片机。肤浅的了解过FPGA,不过都明白,需要在windows下面通过专门的编译器将C语言(或汇编)编程的程序转换成最起码的HEX文件,然后通过烧写器烧写进芯片的存储器中。学习单片机了解,所有的芯片(包括CPU)就只认识0,1。通过晶震一遍又一便的循环扫描程序。
在单片机情况下,可以通过烧写和编译器搞定转换,至少转变成HEX。
但是操作系统是如何被装进裸机的呢?我也看过linux的发展介绍,说linux本人是在GCC1.4的编译器环境编译的linux操作系统,这个我还是比较好理解的,内核源代码是用C语言写的。但是我的疑问我相信大家很多人肯定都有,不过是没有发现罢了。。
首先,我们装操作系统,要么是通过光盘启动,或者通过DOS引导进硬盘找到驱动文件。我们进入安装界面,或用鼠标或键盘的操作安装操作系统,但是,各位有没有想过,CPU在没有任何底层的情况下(即裸机状态),是怎么识别出操作系统的?在安装不论是windows还是linux还是什么,就会发现首先是找到各个硬件,然后配置,书本说操作系统是最底层的,再下面就是物理层了。我们现在安装操作系统,鼠标点点,图形界面,但是我们安装的本身的存储器(光盘,硬盘)都是用2进制码存储的,然后机器在一上电开始,通过BIOS(有人说BIOS是最底层的操作系统),指定存储器,然后CPU通过扫描光盘或硬盘的存储单元(应该是从第一个单元开始扫面起吧?)但是那些存储单元都是2进制的,我们看到的是图形的,这里面肯定需要编译器吧。那这个编译器是在什么地方呢?
如果说linux本人是通过GCC编译器写的C语言内核,那他又是在什么环境下写的这些代码并成功转换成2进制代码的呢?
这里好像陷入了一个先有蛋还是先有鸡的问题,首先,我们写的程序需要编译器,但是编译器又是需要有操作系统做底层的,这里,那世界上第一个操作系统是拿什么语言写的呢?如果是C或者汇编,也是需要编译器的啊,那些编译器又是怎么在没有操作系统的机器上面运行的呢?
乱谈一通~~~希望达人帮忙解决
---------------------------------------------------------------------------------------------------
既然这么多人来一起晕~~那我就都编辑到一起好了~~
首先来回答2楼的...
我个人觉得2楼说得比较有理,首先,计算机的发展最初就是为了方便计算的.这个我们现在还在使用的小型计算器我想就是最初的计算机了..所以没有什么操作系统..不过同样没有一起讨论到细节..呵呵..我也不知道什么是细节~~
接着是3楼.....
你说的我似乎有一点明白,,不过..存储器里面只有一堆一堆的代码,,你说的情况,以前只是执行数学操作还是可以的,通过纸带形式.但是现在,有的是要输出图像,有的要输出声音,有的要打印..CPU是只认识0,1的不需要编译的话,他怎么知道什么代码需要执行哪些?还有,我个人有个想法,可能编译器就好比一本电子词典,你输入英文-他就变成2进制码?不知道对不对
然后是5,6楼....
兄弟说出了汇编..可是我就是用汇编的,将单片机的时候,我们老师就讲过:"你只需要知道汇编就行了,至于汇编怎么变成2进制并运行在单片机上面,是intel的事情..我们也不知道怎么变的.."你说的编译器的不断演变,,还是蛮有意思的...我还不知道这个呢...我听说一个关于编译器的是一个编译器花了18年时间做成,可见编译器很难做啊~
回7,8楼......
CPU只知道执行命令是这样的..不过我了解过一点点FPGA,也听老师说,通用CPU和FPGA ,CPLD,其实是一个构架(大概这么说的..说错了不要骂我老师就行),也就是说CPU也是逻辑门阵列..那么我们用CPLD或者FPGA就是使用VHDL硬件描述语言来指定它的内部与非门的状态,然后达到引脚的输入输出的功能实现..操作系统大概就是让CPU在不同的时间进行不同的门阵列的状态变化吧~
就算说VHDL,也是一种语言,还是需要编译器的...你说的图形,我问问,既然CPU只知道执行2进制码.它怎么知道什么码段要送到什么地方?
回9楼..
我自己也是这么觉得..感觉我们在装操作系统的话,一切的编译和协调大概就是由BIOS来完成的..也就是说.介于物理层和底层的操作系统应该是存放在BIOS里面的,不知道各位是否认同?
回11楼..你说的我也不了解啊~~~不过有一点请各位了解..所有的芯片不过是一群一群的与非门~~所谓的安装可能是CPU先进入光盘或者硬盘某位置,读取2进制码.然后通过门阵列输出有的输出到打印机,有的输出到硬盘,有的输出到显卡...所谓的指令不识别大概就是输入指令经过CPU运算得出输出不是想要的输出吧?
回12楼..
你说cpu把自己认为是显示数据的2进制码~~~
我给你一串2进制码..你能告诉我哪部分要给显卡吗?没编译器或者什么器的..CPU哪里知道哪段码该给哪个哦~~
好了..大致先看到这么多..真累啊~~~呵呵~~只是乱弹啊~~大家一起来迷糊~~ |
|