2008-7-28
系统运行之我见
学了很久的电脑才把电脑摸透了一点皮,常在茶余饭后想起系统运行流程来还有点模棱两可,怎样
才能用更形象的概念把要记的记住并印入脑海中去呢,这可是个大问题啊。
一台电脑的运行总是先从硬件着手,然后才一步步地走向软件,就是底层到高层,这个好懂,一切
都是基于物质基础嘛,没有物质支持,一切都是空泛的。
先是上电,硬件启动,cpu开始工作,它是由厂家指定由一个固定的位址开始运行第一条指令,所以
最底层的引导指令就要放在这个地方,以便硬件从这个地方读取指令,实现硬件与软件的洽接。这第一
个寻找指令的动作其实就是cpu中的数字电路控制的初始状态,这个状态可以改变,不过一般由生产者改
变,如果改变了,那么引导第一个指令的存放位置也得改变。
从初始位置开始,是一个跳转指令,跳转到最基本的初始化指令处,然后好像是导入一个驱动指令
,这好像是bios吧,这些是底层的初始化指令(忘了说了,所有的程序都是指令,数字电路能够识别的
指令。)最后是初始化完毕了,然后是导入硬盘引导区的512字节大小的引导指令吧,为的就是要识别这
个硬盘上的东西,然后加载fat,这是文件分区表,再然后是根目录了,目的是识别存放在硬盘上的文件
结构,如果有操作系统,要在引导这些数据结构后导入操作系统常驻内存部分,最后把控制权交给操作
系统,以便操作系统来管理所有的资源并控制所有的程序,相当于要操作系统来管这个家,操作系统担
当起大任后就开始控制内存分配的重任了,如果内存不够大,那么线性地址等于物理地址,操作系统花
在这方面的工作不是很大,只有分段,就是把内存划分为很多个段,并规定每个段的功能,就像一座院
子,主人分了很多的房间,并规定其功能,健身房只能健身,浴室只能洗浴,卧室只能睡觉一样,要是
你乱来,主人就告诫你,要不会把你踢出去,段就这么简单。到后来内存大了,相当于主人有了很多的
房子,这样再单一地分段就不好管理了,主人就建一个表,把所有的房子编号统计起来,并作了详细说
明,有些房子里又有很多小房间,于是在这个房子里再编个统计表,并编号以便查各个小房间的位置和
功能,这样,就有了几层的关系了,主人就是操作系统,他为所有的房子编了个统计表,相当于gdt,如
果要查哪个房子在哪里,只要知道第几条记录,也就是gdtr是多少就可以查到了,在这个记录的后面还
加了个标记,是告诉主人这个记录是否还有详细的划分,如果有就要循着gdtr所指找到ldtr,然后找出
所要找的地址,这时的内存还不是很大很大,只要这两个记录就可找到了,但是如果是多线程,这样分
就麻烦了,因为大家认为这些东西都是他私有的,不喜欢与别人共用,于是主人想了个好办法,那就是
虚拟内存分页,这就用到了页表了,主人占的房子不动,如果他准备打算请很多客人,这时他把所有的
客人登记起来,存放在一个叫页表的本子上,主人再把自己所占有的所有编号(相当于线性地址,有时
等于物理地址,如果是分页,就要通过页表查找到物理地址。)和客人拥有的编号连起来存放,每次主
人只能请一个客人,也就是说所有的编号只有主人和客人的了,而客人的编号可以找到客人所拥有的所
有房子,客人走后,他用过的编号不再撤散,如果下次请别人的时候,只要把这些编号指向他就可以把
他的所有信息包括进来了。就这样,每个客人来时都要看看主人对他是否重视,所以他们要看从头到尾
的编号是否有别人共享,当然他们看到的只有主人需要的和自己需要的编号,当然他没有在意页表,因
为页表是不可能给客人看的,页表里记录的是每个客人对应的编号分配情况,相当于内存映射,这样,
主人每次操作客人的编号都能直接指向对应的客人的房子,所有这一切都是主人在操纵。至于pe文件格
式,只是一种数据结构,win32下的一种可执行文件的登记信息,就像现在你想开公司,必须登记一样,
这样主人可以从登记上找到你的信息从而加以管理,当然你可以作假,只要你水平够高,我现在没有这