首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

《30天自持操作系统》之——第05天

2014-07-16 
《30天自制操作系统》之——第05天1.优化第4天代码:在第四天的bootpack.c中绘制界面部分,都是将一些数字直接写

《30天自制操作系统》之——第05天
1.优化第4天代码:
在第四天的bootpack.c中绘制界面部分,都是将一些数字直接写入程序,这样的程序是没法维护的。所以第五天首先把这些数字用变量代替,后期更改需要更改的时候只需更改一处即可。
如下:


4.GDT与IDT的初始化

GDT: Global(segment) Descriptor Table 全局段号记录表.
IDT: Interrput Descriptor Table 中断记录表

1)为了解决内存范围重叠使用的问题,需要对内存进行分段(即对GDT进行初始化)。

2)IDT记录了0~255的中断号码与调用函数的对应关系。

最终效果:

《30天自持操作系统》之——第05天

4楼hgn2008昨天 20:27
请问,UltraEdit显示的源码中的中文注释为何是乱码?如何解决?
Re: csc2003昨天 21:08
回复hgn2008n人家代码中是日文的。编码问题。
Re: gaohuaid昨天 21:15
回复hgn2008n这个编辑器我没用过,估计是编辑器的编码问题吧。你可以试一下这个方法 http://xiuxian1.iteye.com/blog/680664
3楼csc2003昨天 20:17
以下是我与楼主您持不同观点的地方,不是喷哦,只是探讨技术性问题:nn1. 这些出现数字的地方主要是一些显存的设置,所以索性将它们放到结构体里面。n------因为进入保护模式后不能再用bios中断功能,所以在这个结构体里放入用bios中断获取到的相关参数。nn2. GDT: Global(segment) Descriptor Table 全局段号记录表.n IDT: Interrput Descriptor Table 中断记录表n------叫记录表还是从楼主这里得知的哈,我不管是从清华大学的汇编书,还是于渊的书中看到的都是 描述符表。仅翻译问题,无视哈。nnn3. 1)为了解决内存范围重叠使用的问题,需要对内存进行分段(即对GDT进行初始化)。分段以后,即使两个程序n要同时访问内存地址0xa000,只要不在同一段,就不会产生冲突。n----这段话大有问题。每个进程的编程模型使用线性地址空间,不同进程都有4gb的线性地址空间。分段在实模式和保护模式在是不同的。在实模式下段寄存器参与到线性地址运算中(左移四位加偏移),保护模式下段寄存器只是选择子selector,从gdt中选择。对gdt初始化只是不同模式下分段的必须。这时候两个进程(这个涉及到了操作系统的多进程实现)仍然可能使用同一个线性地址。这时靠的是分页机制来解决内存线性地址重叠的问题。
Re: gaohuaid昨天 20:18
回复csc2003n先谢谢您指出了其中的错误,让您见笑了。您说的1和3的确是有问题/错误的,已更改!我将读书的过程用博客写出来,一是记录一些东西,二是希望有人能够将其中的问题指出来,让我浮躁的心能够沉淀下来。看这本书的同时我也在复习汇编语言的内容,其实看到第五天,我已然发现就我现在的水平想要把书中一些细节看懂,真的是有点力不从心了。
2楼csc2003昨天 18:45
先声明,我也才看到第十天的叠加处理。nn先说下对这本书的感受。诚然作者写得很风趣浅显,但里面内容涉及硬件体系结构、汇编、c语言、数据结构与算法、操作系统原理。n这些每一门都可以写一本厚书,就算作者只提及那些要用时才学的相关内容,但说实话,如果一点也不懂当入门用的话,很多会看不懂。n这本书的优点就是具体、实用,所做的一切用代码表现,可以看得到。不像以上那些专业的内容太抽像了,很难想像。nn对真正想学好计算机技术的人,建议先略读一遍各学科书,再读30天自制os,从这本书里找出各学科里谈及的内容,回头再看那些讲理论的书,一下子就领悟了。nn看到目前,我认为作者最高明的地方是解决问题的办法,还有转成代码里的算法。有的时候不能不说太高明了。自学后分解弄懂容易,但要让目前水平的我自己写出来,我知道我做不到。nnn说下我辅助看30天学好os的相关书: 于渊的自制一个操作系统、 386设计师写的保护方式下的80386及其编程、tanenbaum的现代操作系统第三版、c父的c语言程序设计n感谢以上牛人的书。让我获益多多。
Re: gaohuaid昨天 18:50
回复csc2003n其实我想作者写这本书的初衷,就是想让人们能快速的开发出一个小巧的操作系统,而屏蔽了一些复杂、抽象的东西。但就像您说的那样,对于一个想深入学习计算机技术的人来说,这是不够的。谢谢您分享您的读书心得,感觉您对于这本书看的还是很深入的,为什么不把您的一些读书笔记/心得分享出来呢?
1楼hgn2008昨天 16:49
binfo->cyls 的值为 0x0ff0nbinfo->leds 的值为 0x0ff1n上述两句是不是应该为:nbinfo->cyls 的地址为 0x0ff0nbinfo->leds 的地址为 0x0ff1n??????????????
Re: gaohuaid昨天 18:03
回复hgn2008n恩,应该是地址,我写错了,谢谢你的提醒!*-*

热点排行