- 博客(19)
- 资源 (7)
- 收藏
- 关注
原创 大家好, 有人还记得我吗?
很久没有更新了, 大家是不是认为我已经放弃了呢! 呵呵因为我在研究编译器, TinyCC, 不知道有没有用. 我把它改编为支持中文标识符的C语言编译器了, 哈哈, 想以后用在我的系统中, 它有一个最大的优点就是可以直接运行源代码的功能, 是不是很牛啊!我的网站关闭了, 555....不过这个是开的, 嘻嘻 http://code.google.com/p/xl-os/包括我上面说的
2011-12-26 09:07:28
466
原创 我的操作系统论坛!
我的操作系统论坛!今后在这里进行开发上传及通告!http://x12143.t34.s3s5.cn/yxbbs/Default.Asp
2010-08-04 12:21:00
672
原创 关于互斥的问题
<br />在写关于鼠标的驱动时就遇到互斥的问题,几个进程同时对鼠标进行隐藏和显示操作时,就会产生明明隐藏了却又显示出来,造成了图像的错误,后来增加了判断的代码,但都不太满意,虽然看了一些资料,但都是一些理论上的东西,实际的流程、代码实现很少,自己也画一个关于解决互斥的流程,应该是有用点,希望有高人指点一下。<br /> <br />
2010-07-08 13:53:00
449
原创 发现软盘驱动有问题!
<br />最近这两天才发现软盘的驱动有问题,以前只测试了目录的读取,虽然显示出目录数据,现在调试检查的结果是软盘读取居然是失败的,这当时居然没有测试返回值。<br />偷懒了!代价就是找了几天,并且不知道如何修改。又发现一个问题,读取软盘数据时用的是内核的内存,如何是几个进程同时申请软盘操作,就会发生数据混乱。所以只能是以消息的方式来响应!<br />代码又要修改。看来这次又要将代码进行全面整理了!<br />包括子程序的格式,整体的构架都要调整!还是要以消息响应为主,不能直接调用服务程序。以防止进程间的
2010-06-12 17:13:00
528
原创 消息处理初步完成!
映像文件下载: http://sea68.com/x12143/目前状态:自动寻找并判断是否模式所需要的图形模式:1024 * 768 24位自动判断是否是3键带滚轮鼠标,(bochs下要在配置文件中更改一下鼠标的配置)全中文内核,进程调试:目前只是简单的顺序执行。消息处理:仅开始编写,目前开发中。现有简单内核消息处理。图形处理:目前仅支持 1024*768 24位模式,相对比较完善,用户调用函数不断增加中。支持中英文混合输出。窗口处理:建设中...内存管理:分页、分段。每个进程都有独立的页表,进程崩溃不影
2010-06-09 14:55:00
508
原创 在实模式下取物理内存数!
用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
502
原创 关于后续...
Boot.bin引导扇区代码生成后,应该就是加载模式的代码了,加载模块主要功能是加载一些必要的数据,如:中英文字体字库、内核代码等等,到底是在保护模式下进行加载还是在加载后再进入保护模式,应该讲都是可以的,如果之前加载数据可以用bios中断来实现,如果进入保护模式后再加载,那么要完善保护模式下的时钟中断与软盘中断、软盘驱动后才能实现,这样的话,加载代码与内核代码就重复了,或者是被分割。进入保护
2010-05-28 17:27:00
446
1
原创 关于利用任务状态段TSS进行进程切换的一点说明
关于利用任务状态段TSS进行进程切换的一点说明:由于在时钟中断里进行任务切换,也就是用JMP指令跳转到新的任务中去,这时的时钟中断是屏蔽的,但任务切换是直接进入新任务,没有将时钟中断屏蔽打开,所以造成了任务无法切换的情况,所以在对时钟中断任务切换编程时,不能简单的跳到新任务中去,要将中断屏蔽打开后再跳入新任务,而当任务再次切换回来时,会继续上次中断时的地方继续执行,而此时的时钟中断屏蔽已经打开
2010-05-04 15:55:00
2616
5
原创 内存管理随想
内存管理分为两个层面,一个是内核级的,一个是用户级的。内核级的内存管理主要响应进程的内存申请与扩展、注销。每个进程应当准备满足4G的空间要求,当然不可能一开始就安排4G的,那应该准备多少呢?1、代码。当准备加载一个进程前,需要知道该进程代码长度,这个代码长度包括已定义的数据,未定义的数据暂时不安排内存。2、堆栈。堆栈是一个可扩展的内存段,所以安排内存时要注意以后的扩展问题。堆栈是向前扩
2010-04-20 12:23:00
506
原创 关于描述符
保护模式的基础就是段描述符,分为全局描述符、局部描述符。在16位实模式下,寻址方式为:段*16+偏移,而在32位保护模式下,段寄存器仍然是16位,但它是一个指向值,指向一个8字节的描述符,在描述符中确定了所要寻址的开始地址,以及这段内存的长度、权限、属性等。 全局描述符在使用时没有什么明显的区别,只不过全局描述符表一般只有一个,(嗯~!也许能定义多个,然后重新加载,在多个全局描述符集之
2010-04-14 22:05:00
709
原创 进程的思考
操作系统的一个核心功能就是进程的调度,进程是什么呢?很多书上已经给出了标准的解释,我自己理解的是一个特定环境下的函数,进程可以是用户的任务,也可以是系统的某个服务程序。进程的环境主要有:通用寄存器、控制寄存器、一块私有的内存与代码、对应的GDT、LDT、TR、TSS、中断环境、内存页表。GDT:(全局描述符)空描述符 ;必须的。代码描述符;前8M数据描述符;4G堆栈描述符;
2010-04-13 10:49:00
576
原创 关于函数的默认格式
函数名: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
388
原创 第四天 找到加载文件,引导成功
第一章 引导程序第四天 找到加载文件,引导成功今天再讲一个子程序,这个程序的功能为:给定一个簇号,查找在FAT区该簇号对应的值,即下一簇号。在我们读取文件数据时要经常用到,所以把它做为一个子程序。这个子程序的流程如下:1、 准备一块内存,用于临时存放读取FAT区的数据,不小于1024 byte;2、 计算簇号对应FAT区开始处的总偏移量,同时保存簇号奇偶标志,以备后面取
2010-04-12 13:42:00
1065
2
原创 第三天 能读取软盘了!
第三天 能读取软盘了!先介绍一个BOIS磁盘服务中断:INT 13H。因为我们只需要读软盘数据,所以只重点介绍2号读扇区子功能。参数:AH 功能号=02HAL 需要读取的扇区数CH 起始磁道数CL 起始扇区数DH 盘面号DL 驱动器号ES:BX 目标地址,读取出数据保存到内存的地址。返回值:当CF=0时,操作成功。AH=0,AL为已读取的扇区数。操作失败时A
2010-04-08 17:21:00
1080
原创 第二天 开始执行我们的程序
第二天 开始执行我们的程序 我们先看一段代码。 ; 文件名:boot_A.asm ;########################################################################## org 07c00h ; Boot 状态, Bios 将把 Boot Sector 加载到 0:7C00 处并开始执行 [bits 16] ; 定义以下代码
2010-04-08 08:34:00
819
原创 第一章 引导程序 第一天 耐心的准备
第一章 引导程序我们马上进入正题!开机!启动!等等,我们的操作系统是怎么开始运行的呢?这个问题一定是你马上就想知道的吧!第一天 耐心的准备所有计算机开机后,即打开电源,首先是BIOS的自检等等,确保每个必要的部件都能正常工作,这个过程我就不再详述了,反正与我们的工作没多大关系。BIOS在找到你的计算机可以进行启动的管道时,就将控制权转移。例如:我们现在大多数电脑都有这几种常
2010-04-08 08:25:00
878
转载 ld参数解释
本文档介绍GNU连接器ld的2.14版本.本文档在GNU自由文档许可证下发行.在"GNU自由文档许可证"一章中有关于本许可证的一份拷贝. 概述********ld把一定量的目标文件跟档案文件连接起来,并重定位它们的数据,连接符号引用.一般,在编译一个程序 时,最后一步就是运行ld.ld能接受连接命令语言文件,这是一种用AT&T的连接编辑命令语言的超集写成的文件,
2010-04-03 08:59:00
3520
转载 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
577
原创 系统引导代码
;##########################################################################; 这是一段引导程序,本程序是将加载程序加载至 9000:0100 处,; 并将控制权转移到加载程序。; 本代码使用 NASM 进行编译。;###############################################
2010-03-23 14:00:00
2151
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人