随笔分类 -  自己动手写操作系统第二次回顾

学习新思路
摘要:学习了王爽的汇编语言学习了感觉似乎有了些进步.可是看到如进程,线程的概念时还是很迷糊.感觉在进一步似乎困难重重.这时比较有用的途径是:采用linux系统,自己查资料编写关于进程,线程的代码进行实际的感受。 阅读全文

posted @ 2014-10-13 10:00 wanghj_dz 阅读(682) 评论(1) 推荐(1)

第六章 进程总结
摘要:http://blog.csdn.net/begginghard/article/details/7389329进程总结挂起一个进程,需要把程序运行信息保存到进程控制块PCB中进程恢复,运行程序时,需要用到该程序LDT中的段描述符,所以需要在PCB中有LDT描述符,LDT选择子,所以需要对PCB中的... 阅读全文

posted @ 2014-09-25 08:28 wanghj_dz 阅读(520) 评论(0) 推荐(0)

通过调用门进行有特权级变换的转移,详细注解 对pmtest5.asm解释很详细.
摘要:http://www.myexception.cn/operating-system/484288.htmlhttp://www.myexception.cn/operating-system/445331.htmlhttp://www.myexception.cn/operating-system... 阅读全文

posted @ 2014-09-23 09:52 wanghj_dz 阅读(340) 评论(0) 推荐(0)

pmtest1.asm pmtest2.asm pmtest5.asm 这几个比较重要.
摘要:读代码时注意Label后面的文字:desc表示是描述符,seg表示是段pmtest1.asm主要讲进入保护模式http://www.cnblogs.com/wanghj-dz/archive/2011/04/24/2026398.htmlhttp://www.cnblogs.com/wanghj-d... 阅读全文

posted @ 2014-09-23 08:02 wanghj_dz 阅读(578) 评论(1) 推荐(0)

中断发生时寄存器的保存和恢复
摘要:http://blog.csdn.net/zhuichao001/article/details/5686058进程在运行之前TSS.ESP0指向了当前进程表的 REGS 末尾执行中断之前,CPU已经把ESP指向进程表的REGS末尾,并且保存了SS,ESP,CS ,IP ,IF寄存器 ,自动操作的 ... 阅读全文

posted @ 2014-09-22 19:38 wanghj_dz 阅读(1586) 评论(0) 推荐(0)

TSS 内核栈 用户栈的关系
摘要:http://blog.sina.com.cn/s/blog_673ef8130100qaje.html该博客不错,有不少有用的信息中断程序的一开始我们执行一个PUSHALL,把这些积存器保存在核心栈中,中断结束返回前我们执行一个POPALL将保存在栈中的值弹出到各寄存器。 中断发生时会进行一个栈的... 阅读全文

posted @ 2014-09-22 15:55 wanghj_dz 阅读(330) 评论(0) 推荐(0)

TSS 任务状态段 详解
摘要:http://blog.163.com/di_yang@yeah/blog/static/86118492201222210725146/1 什么是TSS TSS 全称task state segment,是指在操作系统进程管理的过程中,任务(进程)切换时的任务现场信息。 2 TSS工作细节 ... 阅读全文

posted @ 2014-09-22 09:50 wanghj_dz 阅读(845) 评论(0) 推荐(0)

linux-0.11内核 任务的堆栈切换
摘要:http://blog.163.com/di_yang@yeah/blog/static/86118492201212534924900/一直缠绕的两个问题:怎样标识的内核栈与用户栈?如何在内核态堆栈与用户态堆栈之间切换?用户态堆栈指针:ss和esp;内核态堆栈指针:ss0和esp0;二者均位于任务... 阅读全文

posted @ 2014-09-22 09:31 wanghj_dz 阅读(591) 评论(0) 推荐(0)

linux0.11下的中断机制分析
摘要:http://orbt.blog.163.com/异常就是控制流中的突变,用来响应处理器状态中的某些变化。当处理器检测到有事件发生时,它就会通过一张叫做异常表的跳转表,进行一个间接过程调用,到一个专门设计用来处理这类事件的操作系统子程序,这张表即中断描述符表IDT。本文将针对Linux0.11代码进... 阅读全文

posted @ 2014-09-22 08:16 wanghj_dz 阅读(730) 评论(0) 推荐(0)

保护模式下 中断处理程序的过程
摘要:选择子==除GDT的所有基地址. 而GDT的基址是由程序一开始就设定好的. 通过lgdt来把GDT表放到程序设定好的位置. 阅读全文

posted @ 2014-09-21 17:38 wanghj_dz 阅读(599) 评论(0) 推荐(0)

保护模式下pmtest1.asm的理解
摘要:整个代码对应内存线性地址分为四段,[gdt] [code32] [video32] [code16]代码先在实模式[code16]下运行,code16中的cs就是系统分配的该程序物理地址的基址.编译器会自动把其他段中的标号,编译成相对这个物理地址基址的偏移量.其他段的物理真实地址就是这个基址+标号所... 阅读全文

posted @ 2014-09-17 11:18 wanghj_dz 阅读(507) 评论(0) 推荐(0)

保护模式下GDTR,LDTR,全局描述符表,局部描述符表和选择器的关系
摘要:这张图要注意:右边两个0-15,其中上面的是LDTR, 下面的是选择子. 图下第五个标线,是两个线交叉的,实际上第五个线是指向右边水平的那个线. 没有箭头的两组线分别表示GDT的区间,LDT的区间 3和3'之间的两个没有箭头的线,是表示分别表示区间的线... 阅读全文

posted @ 2014-09-17 09:35 wanghj_dz 阅读(1847) 评论(0) 推荐(0)

实地址模式与保护模式之间的切换
摘要:9.1 实地址模式与保护模式之间的切换我们知道,IA-32计算机在加电或者Reset信号有效之后,首先进入实地址模式,执行BIOS程序,然后再进入保护模式,执行Windows环境下的程序。因此,IA-32 CPU在工作的时候,需要从实地址模式切换到保护模式。从实地址模式切换到保护模式,通常需要建立描... 阅读全文

posted @ 2014-09-16 15:55 wanghj_dz 阅读(4693) 评论(0) 推荐(0)

汇编 db,dw,dd的区别
摘要:db定义字节类型变量,一个字节数据占1个字节单元,读完一个,偏移量加1dw定义字类型变量,一个字数据占2个字节单元,读完一个,偏移量加2dd定义双字类型变量,一个双字数据占4个字节单元,读完一个,偏移量加4 阅读全文

posted @ 2014-09-15 20:05 wanghj_dz 阅读(62643) 评论(3) 推荐(4)

保护模式 宏观理解
摘要:保护模式:以XXXX:YYYYYYYY的方式来寻址。十六位的XXXX是段选择子,存放在段寄存器中cs,ds,ss,es,fs,gs段选择子在GDT中选择段描述符。GDT的基址在GDTR中。GDTR的基址加上段寄存器中的XXXX段选择子,可以得到该段的段描述符。段描述符中含有该段的32位基址。段描述符... 阅读全文

posted @ 2014-09-15 17:49 wanghj_dz 阅读(305) 评论(0) 推荐(0)

push 栈顶sp=sp-2 可以把立着的栈,向左侧倒下,那么形态就和反汇编时,内存的形态是一样的。小偏移的字节在前, 大的偏移字节在后
摘要:push 栈顶sp=sp-2 可以把立着的栈,向左侧倒下,那么形态就和反汇编时,内存的形态是一样的。小偏移的字节在前, 大的偏移字节在后。1234512345 阅读全文

posted @ 2014-09-13 17:02 wanghj_dz 阅读(248) 评论(0) 推荐(0)

在8086中,[ idata],[bx]表示内存单元时。可能是一个字节,也可能是一个字。
摘要:可能表示一个字节,也可能表示一个字。主要由指令中另一个计算对象决定。如al表示一个字节。ax就表示一个字。这个区别主要体现在循环中,偏移地址的循环变量是加1还是加2,al是偏移地址加1,ax是偏移地址加2.[idata],[bx]表示的是偏移地址。[idata],[bx]是有区别的。在代码中mov ... 阅读全文

posted @ 2014-09-13 15:49 wanghj_dz 阅读(360) 评论(0) 推荐(0)

汇编语言第二版 程序在dos中执行情况.P86-87
摘要:假设程序要被dos系统加载到sa:0000的内存中,在这个地址的内存开始会有256个字节的PSP程序,用于加载程序和dos系统的通信。ds中的地址为sa。真正的程序会在这256个字节之后。所以真正程序的地址是:sa+10H:0000。cs中的地址为:sa+10h为什么是10h,因为段地址要左偏移4位... 阅读全文

posted @ 2014-09-13 11:04 wanghj_dz 阅读(218) 评论(0) 推荐(0)

汇编 堆栈问题
摘要:指令push,pop push,pop的执行单位为一个字。2个字节。 push sp先减2,得到新的栈顶,实际上就是空出一个字,2个字节的空间,以便放入新的数据。 然后将数据调入。 pop先将数据调出,然后sp+2,指向新的栈顶。 记忆方法:push含有s所以先进行sp的操作。 pop... 阅读全文

posted @ 2014-09-12 23:03 wanghj_dz 阅读(454) 评论(0) 推荐(0)

cs ip 通过jmp转移命令间接赋值。无法直接对其赋值。
摘要:jmp寄存器命令对IP间接赋值。 阅读全文

posted @ 2014-09-12 20:44 wanghj_dz 阅读(196) 评论(0) 推荐(0)

导航