大运天成赖搏击

进步最重要

导航

2012年4月14日 #

linux0.11学习笔记-技术铺垫-简单AB任务切换程序(5)-实现三个任务切换

摘要: 上篇我们实现了时钟中断的响应,以及输出简单的字符功能。本篇我们实现系列文章的最终目的:任务切换。任务切换在x86上,硬件给提供了硬件支持,简单可行。涉及到tss切换,并自动实现了ldt切换。非常简单。1. 看代码head.sSCRN_SEL = 0x18 TSS0_SEL = 0x20 LDT0_SEL = 0x28 TSS1_SEL = 0X30 LDT1_SEL = 0x38 TSS2_SEL = 0X40 LDT2_SEL = 0x48 .globl startup_32 .text startup_32: movl $0x10,%eax mov %ax,%ds mov %ax,... 阅读全文

posted @ 2012-04-14 14:36 linucos 阅读(1353) 评论(0) 推荐(0)

linux0.11学习笔记-技术铺垫-简单AB任务切换程序(4)-向现存写数据并响应时钟中断

摘要: 上几节的介绍中,我们能够用bootloader加载32位代码,进入保护模式,并且跳转到了保护模式下的程序里,本篇我们实现在32位模式下完成写显存输出字符,并且在时钟中断中完成显示字符的程序。此后的代码,我们会略去bootloader不说,只说明32位程序head.s1. 看代码head.sSCRN_SEL = 0x18 .globl startup_32 .text startup_32: movl $0x10,%eax mov %ax,%ds mov %ax,%es mov %ax,%gs mov %ax,%fs lss init_stack,%esp call setu... 阅读全文

posted @ 2012-04-14 13:41 linucos 阅读(999) 评论(0) 推荐(0)