2011年5月16日

进程(转载)

摘要: http://hi.baidu.com/6121017/blog/item/529f3916dae89d54f3de32f8.html【进程】一、 多进程运行 何谓进程。进程就是指某个时刻CPU执行的一个任务。该任务有独立的CPU环境、以及资源内存等数据。 在单任务的DOS系统时,所有任务的资源、内存、CPU环境都是共享的,只要其中某个任务改变了这些共享的数据,那么所有任务的环境就都跟着变了。这样的操作实在不好控制,如果想要每个进程都拥有独立的资源、内存、CPU环境。该如何去实现呢?这里就要对进程进行调度,简称进程调度, 这是多任务操作系统的特性!!!在多大数情况下PC机上只有一个CPU,那么 阅读全文

posted @ 2011-05-16 16:13 wanghj_dz 阅读(311) 评论(0) 推荐(0) 编辑

【进程续】(转载)

摘要: http://hi.baidu.com/6121017/blog/item/529f3916dae89d54f3de32f8.html【进程续】一、进程的启动:现在我们已经熟悉了启动一个进程的需求和主要步骤,它的动作也就是:×准备IDT、TSS、LDT(该LDT描述符在GDT中。但是LDT局部的描述符在进程表的ldts[LDT_SIZE]字段中.)初始化IDT,也就是定义好GATE描述符。将其0门描述符对应IRQ0(VECTOR),也就是按386模式规定的中断异常处理机制。接着自己定义0x20向量对应8259A的主片IRQ0,0x28对应8259A的从片IRQ8.这需要自己对8259 阅读全文

posted @ 2011-05-16 16:02 wanghj_dz 阅读(347) 评论(0) 推荐(0) 编辑

中断与进程分析(转载)

摘要: http://blog.sina.com.cn/s/blog_48ed03c80100mh4u.html操作系统实践之中断程序分析%macro hwint_master 1 call save in al, INT_M_CTLMASK or al, (1 << %1) out INT_M_CTLMASK, al mov al, 20h out 20h, al sti push %1 call [irq_table+4*%1] ;调用真正的处理函数 add esp, 4 cli in al, INT_M_CTLMASK and al, ~(1 << %1) out INT 阅读全文

posted @ 2011-05-16 15:36 wanghj_dz 阅读(437) 评论(0) 推荐(0) 编辑

原来进程是这样切换的(转载)

摘要: http://www.cppblog.com/myjfm/archive/2011/01/09/138216.html/***********************支持原创*************************/下面这个结构就是最简陋不过的一个进程表(又称进程控制块,我更习惯于它)。typedef struct process_struct{ STACKFRAME registers; int16 ldt_selector; DESCRIPTOR ldt[LDT_SIZE]; int32 pid; char pname[32];}PROCESS;这个结构的开始是另外一个结构STA 阅读全文

posted @ 2011-05-16 15:21 wanghj_dz 阅读(378) 评论(0) 推荐(0) 编辑

第六章 :进程

摘要: 第六章 :进程,妈的终于推进到进程了。我们需要一个数据结构记录进程的状态,在进程要被挂起的时候,进程信息就被写入这个数据结构,等到进程重新启动的时候,这个信息重新被读出来。诱发进程切换的原因不只一种,比较典型的是发生了时钟中断。当时钟中断时,中断处理程序将会把控制权交给进程调度模块。这时如果系统认为应该进行进程切换,进程切换就发生了,当前进程的状态就会被保存起来,队列中的下一个进程将被恢复执行。最简单的进程一个进程正在运行,这时候时钟中断发生了,特权级从ring1跳到ring0,开始执行时钟中断处理程序,中断处理程序这时调用进程调度模块,指定下一个应该运行的进程,当中断处理程序结束时,下一个进 阅读全文

posted @ 2011-05-16 08:37 wanghj_dz 阅读(370) 评论(0) 推荐(0) 编辑

一个中断产生和处理的完整流程,以UD2指令产生的#UD中断为例。

摘要: UD2指令,产生一个中断,该中断使处理器把eflags,cs,ip等压入堆栈。ud2指令的bochs调试地址为:0x30430同时产生一个中断向量,根据中断向量在IDT中寻找该向量的选择子,跟据这个选择子找到处理函数。处理之。ud2指令产生中断向量号是0x06,根据0x06,找到inval_opcode()函数,根据函数名跳到inval_opcode跳到inval_opcode:这个地址处,执行:push0xFFFFFFFF; no err code作为exception_handler()的参数使用push6; vector_no= 6作为exception_handler()的参数使用jm 阅读全文

posted @ 2011-05-16 00:03 wanghj_dz 阅读(1658) 评论(0) 推荐(0) 编辑

导航