1、大致介绍:>_asmhead.nas->bootpack.cPS: 这里bootpack.c要调用graphic.c、dsctbl.c、fifo.c、int.c实现功能,其中有些函数还必须汇编来写,所以单独写一个汇编文件naskfunc.nas,为了方便看全部函数和结构体,所以写一个bootpa...
分类:
其他好文 时间:
2014-09-08 05:23:07
阅读次数:
686
1. What is GDT在Protected Mode下,一个重要的必不可少的数据结构就是GDT(Global Descriptor Table)。为什么要有GDT?我们首先考虑一下在Real Mode下的编程模型:在Real Mode下,我们对一个内存地址的访问是通过Segment:Offse...
分类:
其他好文 时间:
2014-08-29 15:55:38
阅读次数:
226
梳理项目结构 项目做到现在, 前头的好多东西都忘了, 还是通过Makefile重新理解一下整个项目是如何编译的: 现在我们拥有这么9个文件: ipl10.nasInitialProgramLoader, 占用了软盘的第一个扇区并符合启动盘的规范, 默认被载入地址是0x7c00 到 0x7e00, 负...
分类:
其他好文 时间:
2014-08-22 12:28:26
阅读次数:
285
保护模式下的段寄存器 由 16位的选择器 与 64位的段描述符寄存器 构成段描述符寄存器: 存储段描述符选择器:存储段描述符的索引PS:原先实模式下的各个段寄存器作为保护模式下的段选择器,80486中有6个(即CS,SS,DS,ES,FS,GS)80位的段寄存器,同时提供6个段左右机器当前运行的地址...
分类:
其他好文 时间:
2014-08-17 17:00:22
阅读次数:
224
在Protected Mode下,一个重要的必不可少的数据结构就是GDT(Global Descriptor Table)。为什么要有GDTReal Mode编程模型我们首先考虑一下在Real Mode下的编程模型: 在Real Mode下,我们对一个内存地址的访问是通过Segment:Offse....
分类:
其他好文 时间:
2014-08-09 18:18:18
阅读次数:
353
1:GDT的第一项总为空,称为空段描述符,其结构如下:G:=0的时候段长度单位为字节 ,=1的时候单位为4096字节,所以段长度可以达到2的20(段接线2+段界限1)次方*4096=4GBDPL:描述符特权级,定义了被引用段的特权级,其值为0-3S和TYPE:确定该段类型,S=1代码段和数据段描述符...
分类:
其他好文 时间:
2014-07-16 21:34:51
阅读次数:
206
上一篇介绍了设置显示器高分辨率的方法。本篇讲一下操作系统实现多任务的方法。操作系统利用CPU的far模式的JMP指令、寄存器TR、GDT、TSS和PIT中断这些功能实现了多任务,可见CPU在设计时就考虑到了计算机要具有多任务处理的能力。也就是说,CPU、PIC等硬件支持什么功能,操作系统才能实现什么...
分类:
其他好文 时间:
2014-06-22 23:30:24
阅读次数:
369
/* * linux/boot/head.S * * Copyright (C) 1991,
1992 Linus Torvalds *//* * head.S contains the 32-bit startup code.
*/.text.globl _idt,_gdt,.globl ...
分类:
其他好文 时间:
2014-06-06 15:11:14
阅读次数:
417
在ia32下,cpu有两种工作模式:实模式和保护模式。在实模式下,16位的寄存器用“段+偏移”的方法计算有效地址。段寄存器始终是16位的。在实模式下,段值xxxxh表示的以xxxx0h开始的一段内存。但在保护模式下,段寄存器的值变成了一个索引(还有附加信息)这个索引指向了一个数据结构的表(gdt/....
分类:
其他好文 时间:
2014-05-28 01:36:29
阅读次数:
417
进程结构
Linux0.12中的每个进程都有如下的结构:
在gdt中占有两项,一项是tss段描述符,一项是ldt段描述符。
在task数组中占有一项,指向一页物理内存,该物理内存低端是进程控制块task_struct(里面包括tss段和ldt段),其余部分是进程的内核态堆栈。
在页目录表和页表中设置有相关项。
Linux0.12中,最多只有64个进...
分类:
系统相关 时间:
2014-05-25 18:19:08
阅读次数:
329