04 2012 档案

摘要:终于克服了中断这一关,来到了进程了。这是我多么盼望的,因为有了进程,我就可以和我的操作系统课的内容结合起来了,这就真是实现了我的目的,让上课真正的与实践结合。 我应该努力走自己的路线,虽然按照作者的做遇到的问题可能少,有问题也好解决,但是我感觉还是自己做更好,当然,还是要借鉴作者的,minux或linux的,有这个平台来让我完全按照自己的想法来做真是太好了。这里真的感谢《自己动手做操作系统》的作者于渊。 阅读全文
posted @ 2012-04-16 14:53 金国梁 阅读(159) 评论(0) 推荐(0) 编辑
摘要:前两天很是痛苦,黎明之前最黑暗,真的太对了。因为进程来了,而我的操作系统的文件也有点多了,已经很难控制了,再加上前面很多东西都是用的作者的,甚至有些文件直接拷过来的,所以不是很清楚,导致困难重重,今天决心重构,按我自己的想法来安排文件。尤其是头文件,一定要弄明白,每个都要包含自己需要的头文件。好,开始,今天就这工作。 阅读全文
posted @ 2012-04-13 13:43 金国梁 阅读(185) 评论(0) 推荐(0) 编辑
摘要:因为一个类型错误,困扰了我两天,只是本来因该是个16位的int,定义成了8位的。还是对汇编不熟,对一些敏感地方不注意。从昨天,就调试,怎么都不行,今天用debug,发现中断调用了,但就是重启,现在虽然发现了错误的地方可还是不明白为什么,汇编呀汇编,定要好好研究一番。今天本来要放弃了,要跳过去呢,但还是不甘心,于是一个文件一个文件的排除,终于定位到了,这是有作者的源码啊,不然怎么办呢? 阅读全文
posted @ 2012-04-11 18:13 金国梁 阅读(224) 评论(0) 推荐(0) 编辑
摘要:中断和异常相似,都是暂停正在执行的程序去执行其他的,以后还要再转回来。这里要解决两个问题,一个是如何来设置响应的事件类型,另一个是响应某个事件来干什么。中断有两种,一种是内部中断,有int 调用。另一种是外部中断。外部中断分为可屏蔽中断和不可屏蔽中断。不可屏蔽中断要于IF(interrupt flag)无关,直接由cpu来接收。对应的向量号为2.可屏蔽中断由8259A可编程中断处理器接受然后转给cpu。可根据优先级选择响应某个中断,可设置打开关闭某个中断。8259A有两片,每片有8根中断信号线。两片是级联连接的。也就是一个连在另一个上,所以共有15个中断信号线。好,如何来响应事件类型,就好似解 阅读全文
posted @ 2012-04-10 17:43 金国梁 阅读(261) 评论(0) 推荐(0) 编辑
摘要:int 15hax=0e820h 用来获取内存信息ebx=0 int 15h每次会設它的值,来继续找下一个ARDS,我们要在首次调用是置0,以后注意不要对它操作。es:di int 15h会返回ARDS到es:di,所以我们要每次设定好,以使ARDS保存在我们想要保存的地方ecx=20 有些bios会根据ecx的值来填充es:di,有些则默认填充20,所以统一起见ecx=20edx=0534d4150h bios会使用此值来对信息校验设定好上述值然后调用中断就可以了如果我们想读出所有的内存信息只要通过循环每次di+20就可以,为了判断信息结束,要判断cf是否为1并且ebx=0.ARDS是一个数 阅读全文
posted @ 2012-04-10 16:04 金国梁 阅读(1220) 评论(0) 推荐(0) 编辑
摘要:昨天研究从磁盘磁盘读文件,上午把原理弄明白了,然后下午就开始编代码(还是抄作者的,对汇编还不熟),一下午编完了,晚上调试怎么都不对,照着作者的代码找不同,找出几个,但还是不对,今天依然在找,最后想到,把作者的代码粘一部分,来慢慢排除,最后终于找到了,是少了个h,本来是十六进制,少了h就成10进制了。当然,我也不怀疑作者的代码有问题,但然是先试好了的。 阅读全文
posted @ 2012-04-08 12:41 金国梁 阅读(395) 评论(0) 推荐(0) 编辑
摘要:中断各种多,中断种类很多,13h是有关软盘硬盘读写的。13h中断又分为很多模式,不,应该叫包含很多更能函数,由ah来选择,如ah=00h是复位磁盘(不懂),此时dl选择复位那个磁盘。我用到了读软盘内容,是ah=02h。此时我需要设置寄存器不少:al是要读的扇区数,ch是磁道号,cl是扇区号,dh是磁头号,dl是驱动器号读出的数据存哪呢,由es:bx来记录首地址。就这些把,还是欢迎指正,指导,呵呵 。 阅读全文
posted @ 2012-04-07 21:21 金国梁 阅读(480) 评论(0) 推荐(0) 编辑
摘要:int 10h 是16号中断。作用是设置显示器显示相关的设置,来显示要显示的东西,如字符模式,字符串模式,像素模式中断我刚刚了解到原来就是当我调用某个中断,如int 10h。cpu自己就会去操作各种寄存器中的值,根据那些值来作一些操作。所以我们在调用之前就要把相应的设置提前放到相应的寄存器里边。ah 用来选择是什么模式,00h是vedio模式,01h是字符模式,16h是写字符串模式我用到了16号中断的写字符串模式,这一模式是把es:bp所指向的字符串输出,长度存在cx里,bh设置页,bl设置颜色,dh设置行,dl设置列。al设置写字符串模式的字模式(不了解,以后再补吧)。又用到了滚屏的函数(模 阅读全文
posted @ 2012-04-07 15:37 金国梁 阅读(709) 评论(0) 推荐(0) 编辑
摘要:首先看组成:1.引导扇区,2.fat表1,3.fat表2,4.数据区引导区:放引导代码的,包括了一些文件系统的信息,包括:卷标,根目录文件最大多少,文件系统类型,磁头数等等。最后要以0xAA55结束。fat表有很多fat项组成,每项代表了一个文件所占用的下一个簇。也对应了一个簇。如第二项对应第二个簇,但它的值指向文件占用的下一个簇。另外,如果fat项值>=0xff8则表示文件结束。数据区:又分为根目录区和其他的。我们存在根目录里的文件会以32字节来保存它的信息,不包括内容。其中有首簇位置。由此我们知道:运找一个文件的步骤,从根目录里找到文件名,根据首簇位置找到文件内容,读完一个簇,查看f 阅读全文
posted @ 2012-04-06 16:51 金国梁 阅读(408) 评论(0) 推荐(0) 编辑
摘要:用到了xxd,了解了一下:xxd用来把文件或标准输入的文件转化成16进制或者二进制(-d参数)-u 用大写显示,默认用小写-a 将全是0的行用*表示-g num 以几个字节为一组,如果是16进制就是两位数字,如果2进制8位-c num 一行显示几组-s num 要显示的开始地址-l num 要显示的共显示多少字节如:xdd -u -g 1 -c 10 -s 0x2600 -l 10 x.img显示:0002600:52 49 56 45 52 20 20 20 54 58RIVERTX只显示了一行,因为一行显示10个字节,长度位十字节。行首是每行的起始地址最后右半部分显示的是对应asc码的字符 阅读全文
posted @ 2012-04-06 12:58 金国梁 阅读(650) 评论(0) 推荐(0) 编辑
摘要:文件系统是个重要的概念,我了解了一下。文件系统是什么,它是一个数据结构。文件系统有什么用,它用来组织文件如何存储在存储器上,对于文件的读写,存储都会有影响。如:会影响读写速度,会影响文件的大小,文件名字的长度,文件的大小,分区的大小。文件系统都有哪些:他多了,windows上一般是fat32,ntfs,exfat。linux/unix就多了,ext2,ext3,ext4等等还有个raw文件系统,我的理解就是没有文件系统,因为当你没格式化,格式化中途停止,或者有坏道什么的,有病毒破坏是产生。只是些表面的理解,还有待以后更深入的理解,以后再来补充吧。 阅读全文
posted @ 2012-04-06 11:52 金国梁 阅读(147) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示