随笔分类 -  自己动手写操作系统

操作系统
学习新思路
摘要:学习了王爽的汇编语言学习了感觉似乎有了些进步.可是看到如进程,线程的概念时还是很迷糊.感觉在进一步似乎困难重重.这时比较有用的途径是:采用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)

TSS 任务状态段
摘要:TSS(任务状态段)1 什么是TSS TSS 全称task state segment,是指在操作系统进程管理的过程中,任务(进程)切换时的任务现场信息。 2 TSS工作细节 TSS在任务切换过程中起着重要作用,通过它实现任务的挂起和恢复。所谓任务切换是指,挂起当前正在执行的任务,恢复或启动... 阅读全文

posted @ 2014-09-18 17:44 wanghj_dz 阅读(3062) 评论(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)

保护模式 宏观理解
摘要:保护模式:以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)

多进程的进程表初始化
摘要:PUBLICchartask_stack[STACK_SIZE_TOTAL]//在global.c中task_stack其实是一个有着STACK_SIZE_TOTAL大小的数组。task_stack是这个数组名 用这个数组作为堆栈。----------------------------------------------------------TASK*p_task= task_table;PROCESS*p_proc= proc_table;char*p_task_stack= task_stack + STACK_SIZE_TOTAL; //进程堆栈,是一个数组。数组的起始地址+偏移量, 阅读全文

posted @ 2011-05-20 23:00 wanghj_dz 阅读(456) 评论(0) 推荐(0)

丰富中断程序,以及中断与进程运行的关系
摘要:进程A在运行,时钟中断发生。中断会读取TSS中ring0的esp。该esp指向进程A进程表的regs的最后,并且把进程A运行的cs,eip,ss,sp,eflags等信息压入到esp指向的进程表。执行中断程序执行中断程序最后一个iredt指令,因为现在esp指向进程表的cs,eip等参数,所以会把刚刚保存进进程表的进程A的参数压出到寄存器。返回到进程A继续执行。--------------------------------------------------------------------------其实,即便我们打开了时钟中断,时钟中断也只会发生一次,因为我们没有将中断结束位EOI置为 阅读全文

posted @ 2011-05-20 15:17 wanghj_dz 阅读(610) 评论(0) 推荐(0)

进程的进程表、进程体、GDT、TSS的关系,以及进程表的初始化
摘要:关系见P252,图6-9进程表与GDT的关系:进程表里的LDT Selector对应GDT中的一个描述符,而这个描述符所指向的内存空间就存在与进程表内。进程表与进程体的关系:进程表是进程的描述,进程运行过程中如果被中断,各个寄存器的值都会被保存进进程表中。使用到进程表堆栈。但是,在我们的第一个进程开... 阅读全文

posted @ 2011-05-20 08:29 wanghj_dz 阅读(3389) 评论(0) 推荐(0)

restart函数 详细解释
摘要:sconst.inc proc.hP_STACKBASEequ0typedef struct s_stackframe{ GSREGequP_STACKBASE u32 gsFSREGequGSREG+ 4 u32 fsESREGequFSREG+ 4 u32 esDSREGequESREG+ 4... 阅读全文

posted @ 2011-05-19 15:56 wanghj_dz 阅读(911) 评论(0) 推荐(0)

进程代码结构
摘要:sconst.incP_STACKBASEequ0GSREGequP_STACKBASEFSREGequGSREG+ 4ESREGequFSREG+ 4DSREGequESREG+ 4EDIREGequDSREG+ 4ESIREGequEDIREG+ 4EBPREGequESIREG+ 4KERNELESPREGequEBPREG+ 4EBXREGequKERNELESPREG+ 4EDXREGequEBXREG+ 4ECXREGequEDXREG+ 4EAXREGequECXREG+ 4RETADRequEAXREG+ 4EIPREGequRETADR+ 4CSREGequEIPREG+ 4 阅读全文

posted @ 2011-05-19 13:19 wanghj_dz 阅读(322) 评论(0) 推荐(0)

启动进程所需要的基本条件(转载)
摘要:http://blog.csdn.net/RichardYSteven/archive/2008/12/25/3606398.aspx进程是现代计算机系统运行的最小单位,所以没有进程也不能称之为操作系统。当系统启动后,设置了GDT, IDT进入了保护模式后,需要哪些东西才能让进程跑起来呢?其实简单说来进程产生的目的并不是要让程序跑起来,而是要让一个系统上有多个进程一起跑。因为如果一个系统上只有一个所谓的“进程”在跑,那就没有必要保存再恢复进程的运行环境了。 好,来看看都要加哪些东西才能够让进程跑起来。1.TSS 2. 进程体本身3. 进程表 TSS主要用来保存ring0特权级的ss:esp,且 阅读全文

posted @ 2011-05-18 10:23 wanghj_dz 阅读(518) 评论(0) 推荐(0)

导航