
知识点
文章平均质量分 51
x12143
个人爱好
展开
-
进程的思考
操作系统的一个核心功能就是进程的调度,进程是什么呢?很多书上已经给出了标准的解释,我自己理解的是一个特定环境下的函数,进程可以是用户的任务,也可以是系统的某个服务程序。进程的环境主要有:通用寄存器、控制寄存器、一块私有的内存与代码、对应的GDT、LDT、TR、TSS、中断环境、内存页表。GDT:(全局描述符)空描述符 ;必须的。代码描述符;前8M数据描述符;4G堆栈描述符;原创 2010-04-13 10:49:00 · 565 阅读 · 0 评论 -
关于函数的默认格式
函数名:push ebpmov ebp, espsub esp, xx...leaveret 第一,前3句虽然可以用enter x,0来替代,但enter指令的开销比较大,没有这几个指令的效率高,而且enter指令中的嵌套我们是用不到的。第二,leave指令就是 mov esp,ebp ; pop ebp 这个条指令,这个指令一条就有两原创 2010-04-12 20:00:00 · 383 阅读 · 0 评论 -
关于描述符
保护模式的基础就是段描述符,分为全局描述符、局部描述符。在16位实模式下,寻址方式为:段*16+偏移,而在32位保护模式下,段寄存器仍然是16位,但它是一个指向值,指向一个8字节的描述符,在描述符中确定了所要寻址的开始地址,以及这段内存的长度、权限、属性等。 全局描述符在使用时没有什么明显的区别,只不过全局描述符表一般只有一个,(嗯~!也许能定义多个,然后重新加载,在多个全局描述符集之原创 2010-04-14 22:05:00 · 703 阅读 · 0 评论 -
GCC参数解释
gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld] [参数详解] -x language filename 设定文件转载 2010-04-03 00:43:00 · 574 阅读 · 0 评论 -
ld参数解释
本文档介绍GNU连接器ld的2.14版本.本文档在GNU自由文档许可证下发行.在"GNU自由文档许可证"一章中有关于本许可证的一份拷贝. 概述********ld把一定量的目标文件跟档案文件连接起来,并重定位它们的数据,连接符号引用.一般,在编译一个程序 时,最后一步就是运行ld.ld能接受连接命令语言文件,这是一种用AT&T的连接编辑命令语言的超集写成的文件,转载 2010-04-03 08:59:00 · 3502 阅读 · 0 评论 -
关于利用任务状态段TSS进行进程切换的一点说明
关于利用任务状态段TSS进行进程切换的一点说明:由于在时钟中断里进行任务切换,也就是用JMP指令跳转到新的任务中去,这时的时钟中断是屏蔽的,但任务切换是直接进入新任务,没有将时钟中断屏蔽打开,所以造成了任务无法切换的情况,所以在对时钟中断任务切换编程时,不能简单的跳到新任务中去,要将中断屏蔽打开后再跳入新任务,而当任务再次切换回来时,会继续上次中断时的地方继续执行,而此时的时钟中断屏蔽已经打开原创 2010-05-04 15:55:00 · 2557 阅读 · 5 评论 -
关于互斥的问题
<br />在写关于鼠标的驱动时就遇到互斥的问题,几个进程同时对鼠标进行隐藏和显示操作时,就会产生明明隐藏了却又显示出来,造成了图像的错误,后来增加了判断的代码,但都不太满意,虽然看了一些资料,但都是一些理论上的东西,实际的流程、代码实现很少,自己也画一个关于解决互斥的流程,应该是有用点,希望有高人指点一下。<br /> <br />原创 2010-07-08 13:53:00 · 438 阅读 · 0 评论 -
在实模式下取物理内存数!
用BIOS中断 int 15h输入:eax 0000e820hebx 放置"后续值", 第一次调用时必须为0ecx 返回数据填充长度,单位字节. 无论ES:DI指向何处,BIOS最多将会填充ECX个字节.不过,通常情况下无论ECX为何值,BIOS只填充20个字节,有些BIOS忽略ECX的值,总是填充20个字节.edx 0534d4510h ('SMAP')标志值,固定ES:DI 为返回数据保存地点输出:CF=0 为无错误,否则存在错误eax 0534d4150h ('SMAP')ebx 为后续值,如果为0则原创 2010-06-06 18:28:00 · 492 阅读 · 0 评论