鱼C论坛

 找回密码
 立即注册

操作系统自学笔记20130917——分割与中断处理

已有 613 次阅读2013-9-17 23:55

        今儿的第一个内容就是学习如何去分割源文件,当然这个分割源文件的目的就是便于管理啊修改啊,看起来很酷啊等等。但是这么做的话源文件数会增加,而且要是改的不好的话就容易找不到要改的东西了。
        如果准备好分类的话下面就是注意分类标准了。
        我们把bootpack.c文件分成三类:graphic.c、dsctbl.c、bootpack.c这三个。分表用来处理插画、GDTIDT、其它处理。
        对应的源文件的分割图书本上有简洁且清晰的图片。
        下面整理Makefile的时候将6个独立的文件生成规则归纳成一个一般的规则。
         下面就是整理头文件了。
         这里就是开始主要讲头文件的事情:头文件是由函数声明和#define组成的文件,这里头文件需要预编译,预编译之后再下面的程序中内容就可以被预编译文件的内容代替,也就是预编译的内容都间接得被写到了程序里。
       之前的#include""和<>的区别就是""代表的是头文件和源文件处在同一个文件夹里,但是<>的含义就是头文件位于编译器提供的文件夹里面。
     
       继续讲昨天没说完的问题:
      昨天看到了GDT部分数据例如段上线和地址是存放在CPU的一个叫GDTR的特殊寄存器里的,这个寄存器是48位的。不可以直接用MOV赋值,而必须指定一个内存地址然后赋值给GDTR寄存器。完成这个任务的指令就是LGDT。
     GDTR寄存器的低16位存放的是段的上限,剩下的32位存放的是GDT的开始地址。
 下面要开始讲到一个函数set_segmdesc,这个函数的用处就是将段的信息归结成8个字节写入内存。
    8个字节的信息就是段的大小、起始地址、段的属性。为了写入这些信息就准备了一个结构体。下面说明这个结构体。
struct SEGMENT_DESCRIPTOR {
 short limit_low, base_low;
 char base_mid, access_right;
 char limit_high, base_high;
};
         段的地址是32位来表示的。这个地址对于CPU来说是段的基址。
        这个段就命名为base,然后这里的base又分为2个字节的low一个字节的mid和一个字节的high。分别将三个信息存到这里就可以了。共32位。分为3段是为了和80386时代的CPU兼容。
      
        下面说道段上限,断上限表示的是每个段的大小。断上限最大是4GB。就是32位的数值。如果直接将地址放进去就放不进管理信息了。于是定义只可以使用20位。于是断上限最大指定到1MB。但是太小了,就引进了一个Gbit在段的属性里。它表示的是当它是1的时候段上限不解释为字节。而是page,页。CPU的话1page=4KB.这样4KBX1MB就是4GB了。Gbit就是granularity.的缩写,含义就是单位的大小。
       下面将20位的段上限写进low和high里面。下面是12位的段属性。段属性的含义就是段的访问权属性。程序中用access_right或者ar表示。因为12位的段属性中的高四位放在high的高四位里,所以程序吧ar当做16位的构成来处理
       ar的高四位成为扩展访问权。
       因为它分为低八位和高四位,看了高四位下面就是低八位。00000000,10010010,10011010,11110010,11111010这几个都做了分类,什么未使用的记录表,系统专用并且可读写不可以执行。系统专用可执行,但是可读不可以写啊等等的分类~
      因为在32位模式之下,CPU有系统模式和应用模式之分,分别叫ring0和ring3.各个部分对硬件控制的权限也就不一样。CPU处在系统模式还是应用模式的话看程序位于访问权的0x9a还是0xfa段。
      
        下面的内容背景:要移动鼠标的光标要实现GDT和IDT的准确无误的初始化,还有下面就是要使用中断,但是在使用中断之前必须要初始化PIC,就是programmable interrupt controller的缩写。可编程中断控制器。
       下面就是结构了,主PIC和从PIC,从PIC连在主PIC的2号口IRQ1,interrupt request.0~7是标号顺序。这个是硬件部分设计的,软件无法改变。
       OK,下面的明儿再看吧。今晚作业写得晚了,耽误了不少时间。晚安~
     
    
                                                    

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-13 01:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部