上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 15 下一页

2013年3月4日

linux0.12 复制页目录项和页表

摘要: 复制页目录项和页表的函数是 1 int copy_page_tables(unsigned long from,unsigned long to,long size) 2 { 3 unsigned long * from_page_table; 4 unsigned long * to_page_table; 5 unsigned long this_page; 6 unsigned long * from_dir, * to_dir; 7 unsigned long new_page; 8 unsigned long nr; 9 10 ... 阅读全文

posted @ 2013-03-04 10:46 追寻前人的脚步 阅读(437) 评论(0) 推荐(0) 编辑

2013年3月3日

SourceInsight3.5序列号

摘要: SI3US-205035-36448SI3US-466908-65897SI3US-368932-59383SI3US-065458-30661SI3US-759512-70207http://blog.csdn.net/bichenggui/article/details/4697038现在貌似只... 阅读全文

posted @ 2013-03-03 17:09 追寻前人的脚步 阅读(597) 评论(0) 推荐(0) 编辑

2013年3月1日

linux0.12系统调用

摘要: 系统调用是一个软中断,中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。这个中断的设置在kernel/sched.c中443行函数中 1 void sched_init(void) 2 { 3 int i; 4 struct desc_struct * p; 5 6 if (sizeof(struct sigaction) != 16) 7 panic("Struct sigaction MUST be 16 bytes"); 8 set_tss_desc(gdt+FIRST_TSS_ENTRY,&(init_tas... 阅读全文

posted @ 2013-03-01 14:51 追寻前人的脚步 阅读(244) 评论(0) 推荐(0) 编辑

关于中断

摘要: 中断分为两种硬件中断和软件中断硬件中断可分为内部中断和外部中断 ,内部中断如除0错误,外部中断如键盘中断另外在提到和外部中断相关的一个芯片,8259A,该芯片用于管理外部中断软件中断用int实现 阅读全文

posted @ 2013-03-01 09:47 追寻前人的脚步 阅读(168) 评论(0) 推荐(0) 编辑

2013年2月26日

区分进程的逻辑地址空间中段和cpu分段机制中段的概念

摘要: 首先声明这两个东西不是一个概念cpu分段机制中段的概念确定了在线性地址空间中一个段的用途以及被执行或访问的约束,每个段可以设置在4G线性地址的任何地方,它们可以相互独立也可以完全重叠或部分重叠。而进程的在其逻辑地址空间中代码段和数据段则是由编译器在编译程序和操作系统在加载程序时规定的在进程逻辑地址空间中顺序排列的代码区域、初始化和未初始化的数据区域以及堆栈区域,参考elf文件的格式中头文件及文件头表 阅读全文

posted @ 2013-02-26 10:02 追寻前人的脚步 阅读(371) 评论(0) 推荐(0) 编辑

dd写img

摘要: boot代码中指示从0磁头0驱动区号0磁道第2扇区开始读取head代码到0x1000:0处,但是我怎么把编译出来的head代码放到磁盘的该位置呢?dd if=boot of=boot.img bs=32 skip=1此句以BlockSize=32Byte把boot写入boot.img,跳过一个输入Block(32Bytes),也就是跳过boot文件头.dd if=head of=boot.img bs=512 seek=1此句以BlockSize=512Byte把head写入boot.img,跳过一个输出Block,也就是跳过512Byte的boot,写入boot.img 阅读全文

posted @ 2013-02-26 08:39 追寻前人的脚步 阅读(687) 评论(0) 推荐(0) 编辑

2013年2月25日

32位计算机的4G可寻址空间

摘要: 前两天在QQ群里有人问了这么一个问题:在x86计算机中的内存分布中,有一部分是ROM BIOS,请问那块内存可写不能我当时也没有想明白,群里也没有讨论出一个明确的回答,后来思考了下,我想应该是这样吧,4G可寻址空间应该都是可写的,大家不要被ROM BIOS给吓着,虽说这是ROM但是,BIOS是一个芯片,里面有一个可读的程序,又一联想所有程序都要先加载到内存中,所以我想,应该是把ROM BIOS芯片里面的程序加载到4G当中的某个位置不知道对不对,还望大家批评指正 阅读全文

posted @ 2013-02-25 12:55 追寻前人的脚步 阅读(251) 评论(0) 推荐(0) 编辑

2013年2月23日

linux系统中堆栈的使用方法

摘要: 第一遍看书时不明白,今天偶然又看到了这一点,顿时豁然开朗linux0.12系统中共用了四种堆栈1. 系统引导初始化时临时使用的堆栈,此时我的理解是系统还在实模式2. 进入保护模式之后提供内核程序初始化使用的堆栈,位于内核代码地址空间固定位置处,该堆栈也是后来任务0的用户态堆栈,个人理解任务0比较特殊,它的内核态堆栈还是用户态堆栈都在内核中。3. 每个任务通过系统调用,执行内核程序时使用的堆栈,我们称之为任务的内核态堆栈,每个人物都有自己的内核态堆栈,内核态堆栈是和任务数据结构一起定义4.任务在用户态执行的堆栈,位于任务逻辑地址空间的末端处。以前有一段时间还怀疑过linux0.12中内核态堆栈和 阅读全文

posted @ 2013-02-23 13:47 追寻前人的脚步 阅读(381) 评论(2) 推荐(0) 编辑

2013年2月21日

内存之栈与调用管理

摘要: 原本以为栈就那回事,存放一下临时变量,参与一下函数的调用,但是今天看《程序员的自我修养》又让我对栈加深了了解我这里只想说下我不知道的,至于那些调用惯例我就不多说了,理解起来不是很难除了参数的传递之外,函数与调用方的几哦啊胡还有一个渠道就是返回值,eax是传递返回值的同道,但是eax本身只有4字节,大于4字节的采用edx和eax做返回值,而对于超过8字节的返回类型参照下面的例子 1 typedef struct big_thing 2 { 3 char buf[128]; 4 }big_thing; 5 6 big_thing return_test() 7 { 8 big_t... 阅读全文

posted @ 2013-02-21 21:59 追寻前人的脚步 阅读(176) 评论(0) 推荐(0) 编辑

浅析程序的装载

摘要: 在《自己动手写操作系统》中有一段代码,通过这段代码大致可以让人知道装载是怎么回事(静态链接)首先要分析下elf的文件结构,我就简单的说了,elf首先是一个文件头表,顾名思义,这个文件头表里面保存的是文件的信息,其中一个很重要的信息是程序的入口地址,接着还有若干程序头表,这个比较重要,每一个程序头表对应着elf可执行文件中的一段。程序头表中包含有所描述的段要加载到内存的那个位置,还有段的大小。有了上述这些信息,下面就来说下程序的装载的步骤:1. 检查elf可执行文件格式的有效性,比如魔术,程序头表中段的数量2.根据elf可执行文件的程序头表的描述,对elf文件进行映射,比如代码,数据,只读数据3 阅读全文

posted @ 2013-02-21 20:57 追寻前人的脚步 阅读(232) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 15 下一页

导航