自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 资源 (1)
  • 收藏
  • 关注

原创 大家一起写操作系统(4)-简单的任务切换

下面这段程序定义了两个任务,每个任务都有自己的TSS,LDT。任务0打印字符‘a’,任务1打印字符'b'.任务切换通过时钟中断处理过程完成。时钟到达时,判断当前任务号,切换到另一个任务,并用jmp tss:0的方式实现任务切换。任务中通过0x80系统调用打印字符。任务切换时,cpu会自动把当前任务的上下文(主要是各种寄存器,ldt)等保存当当前任务的TSS段中,并加载目标任务的TSS段相关信息,切

2013-01-26 21:15:54 2392 1

原创 大家一起写操作系统(3)-时钟中断

大家都知道操作系统利用中断来与外设进行交互。80xx86兼容机使用两片级联的8259A可编程中断控制芯片组成一个中断控制器,用于实现与I/O设备的交互。可编程意味着我们可以为不同的外设(时钟,键盘,鼠标等)分配不同的中断号,从而执行不同的中断处理过程。  BIOS初始化这个中断控制器时将中断号8分配给了时钟控制器,因而下面我们通过将中断向量表中的8号描述符设为我们的中断程序地址,进而实现时钟中

2013-01-26 12:36:11 2374

原创 大家一起写操作系统(2)-简单的内核

KERNEL_DS equ 0x10VIDEO_DS equ 0x18[SECTION kernel][BITS 32]kernel:    mov ax,VIDEO_DS    mov gs,ax  ;显存数据段选择符    mov ax,KERNEL_DS    mov ds,ax  ;数据段选择符    mov es,ax  ;数据段选择符     m

2013-01-20 20:57:41 1510

原创 大家一起写操作系统(1)-引导程序

上一节我们知道bios会把启动设备第一扇区的512B程序加载到0x7c00处执行.由于512B程序大小所限,所以这段程序一般用于引导,就是说将内核程序从启动设备中读出并复制到一个合适的位置,然后引导程序把控制权将给内核。这一节我们就实现这样一个引导程序。实验环境:编译器:NASM 虚拟机vmware8.0二进制编辑器winHex:用于将引导程序和内核写入软盘映射文件img.

2013-01-20 19:53:03 4406

原创 大家一起写操作系统-准备知识(1)--计算机的启动过程

对于一个没有安装任何软件的裸机,我们想要利用它,就要给它写一个操作系统来充分发挥它的性能。所以想要写操作系统,首先就要知道裸机上电后会做些什么,会执行哪些指令,从而知道我们的操作系统应该放在哪儿,应该如何写,所以先介绍计算机的启动过程。    当计算机上电后,物理内存被设置成从地址0开始的连续区域。除了地址从0xA0000-0xFFFFF(640KB~~~1M共384KB,DOS中的经

2013-01-19 19:35:01 1777

原创 x86处理器几个控制寄存器的作用

1.CR0寄存器(1)PE:CR0的位0是启用保护(Protection Enable)标志。当设置该位时即开启了保护模式;当复位时即进入实地址模式。这个标志仅开启段级保护,而并没有启用分页机制。若要启用分页机制,那么PE和PG标志都要置位。(2)PG:CR0的位31是分页(Paging)标志。当设置该位时即开启了分页机制;当复位时则禁止分页机制,此时所有线性地址等同于物理地址。在开启这个

2013-01-12 20:19:52 1969

原创 AT&T汇编语法中的指令

AT&T中的节(section)    在AT&T的语法中,一个节由.section关键词来标识,当你编写汇编语言程序时,至少需要有以下三种节:    .section .data: 这种节包含程序已初始化的数据,也就是说,包含具有初值的那些变量,例如:            hello        : .string "Hello world!\n"            he

2013-01-06 21:33:27 1335

转载 Linux下的lds链接脚本基础

1. 概论    每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情.连接器有个默认的内置连接脚本, 可用ld –verbose查看. 连接选项-r和-N可以影响默认的连接脚本(如何影响?).

2013-01-06 21:30:39 868

openstack资料

openstack相关资料

2017-01-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除