操作系统相关
mycybyb
这个作者很懒,什么都没留下…
展开
-
关于微内核的一点思考
操作系统一般分为宏内核与微内核两种。其中宏内核具有执行效率较高的特点,而微内核具有很好的可移植性。 宏内核中对于系统调用由于是直接调用相应服务的函数,不存在进程间通信及进程切换的开销,因此效率较高。但正由于各个模块之间的直接调用,导致模块之间出现了紧耦合,不利于模块之间的独立。虽然Linux已经移植到了现今绝大多数的平台之上,但仅从系统结构的角度来说,微内核无疑更好一原创 2005-11-29 18:33:00 · 2611 阅读 · 1 评论 -
MyOS支持内核线程
经过几天的修改与测试,MyOS现在已经支持内核线程。接下来的计划是完善任务管理及GUI。原创 2006-04-28 20:29:00 · 915 阅读 · 0 评论 -
bootloader修改
MyOS的bootloader原先只能加载小于64K的内核,结果今天把PCI相关的信息加入MyOS中后,MyOS内核的大小一下从48K上升到了128K,于是在不得已的情况下,修改了bootloader,很容易呵呵。代码如下: cmp bx, 0 jne OK push ax mov ax, es add ax, 0x1000 mov es,原创 2006-05-12 16:09:00 · 2822 阅读 · 0 评论 -
网卡驱动移植成功
这礼拜一直在作网卡驱动的移植,到昨天晚上驱动本身已经移植成功,并且实现了ARP协议作为测试。今天又移植了一些代码,实现了ip和udp协议,并在此基础移植了一个DNS检索程序。呵呵。接下来需要对代码进行一些整理。在移植的过程中,自己也学到了很多东西。昨天实现了ARP协议后,发现无法获得不同网段的机器的物理地址,上网查了一下,知道了还有个Proxy ARP的东西。今天移植DNS的时候,需要向DNS服务原创 2006-05-25 15:50:00 · 1503 阅读 · 1 评论 -
初始化的全局变量一定放在.data段中吗?
学过C语言的都知道,已经初始化的全局变量是放在.data段中的,没有初始化的全局变量是放在.bss段中的。一直以来我也是这么认为的,但在开发MyOS的过程中,一些明明已经初始化的数据在执行时得到的却是随机值,使我对这个说法产生了怀疑。例如,在MyOS的VBE驱动中,背景色明明设成了黑色,可系统启动后屏幕却是红色的。昨天,在真机上调试最新的MyOS代码时,任务调度老是调度不到别的线程去,只有一个Id原创 2006-05-28 21:33:00 · 4871 阅读 · 2 评论 -
lwIP移植初步成功
经过几天的努力(从5月30号晚上,到今天,6月2号下午3点半),lwIP已经在MyOS上成功编译并运行,可以ping通了。比我预期的提前了很多。接下来的时间,应该会整理一下代码。把网卡驱动的接口定下来,减小协议栈与网卡驱动之间的直接依赖,而是由系统自动检测和配置。同时,还要测试一下UDP、TCP协议。然后,设计系统的BSD风格套接字。等网络部分完成之后,应该会实现一个虚拟文件系统。好像还很遥远。呵原创 2006-06-02 15:44:00 · 3834 阅读 · 1 评论 -
和老大的一次对话,关于linux的
雪之舞 18:21:11 请问文件系统、设备驱动之间是怎么联系起来的? 小锋 18:24:43驱动就是一个文件 小锋 18:25:45驱动有老的方法和新的方法,老的方法要指定主设备和设备号,新的方法就是一个文件 小锋 18:26:59你看一下devfs 雪之舞 18:24:45不是,我是说,比如你有一个硬盘,是Fat32的,那应该有一个硬盘的驱动,还有一个Fat32的文件系统,对吧原创 2006-06-08 21:07:00 · 1478 阅读 · 1 评论 -
MyGUI支持透明窗口
今天对myGUI的代码作了少许的修改,使其可以支持窗口透明。以前由于担心性能和内存占用的问题,MyGUI不支持窗口透明,但同时又觉得这是一个比较有用的特性,因此后来渐渐又想加入这个特性。今天,对代码作了很简单的修改,窗口透明已经实现,但同时性能也非常的低。主要是没有进行任何的优化。等这几天做一些优化,情况应该会好很多。原创 2006-06-11 21:53:00 · 1357 阅读 · 0 评论 -
MyOS最近的进展
第一,MyOS有了一个简单的虚拟文件系统,还有待完善。第二,MyOS的可执行文件从binary升级到了ELF格式。 第三,linuxforum.net终于可以上去了。原创 2006-06-28 22:08:00 · 1120 阅读 · 4 评论 -
MyOS支持VM86
花了两天时间,MyOS终于可以支持VM86了,这样以后就可以在保护模式下实现一些以前只能在实模式下实现的功能。其实,按照我的预期,MyOS是不准备支持16位的程序的,所以刚开始也就不打算支持VM86模式。不过,为了在系统运行过程中可以随时修改系统的分辨率,所以现在还是加入了对VM86的支持。这样,系统就可以通过VM86来调用int 10h,通过VESA来设置显卡的工作模式。以前,MyOS只原创 2006-07-08 23:45:00 · 1827 阅读 · 0 评论 -
MyOS中鼠标的问题
今天在Qemu和Bochs上测试了一下MyOS,结果在这两个虚拟机上鼠标初始化的代码都有问题,可是在Virtual PC和VMWare和真机上都没有问题啊,真奇怪,有时间好好研究一下。原创 2006-07-13 16:59:00 · 863 阅读 · 0 评论 -
关于可移植性的一点唠叨
最近,一直在作libc的移植,上网查了很多资料,找到很多libc,如glic,uclibc,diet libc,newlib等,但除了newlib以外,都和linux等系统紧密联系,移植的工作量太大。newlib可以在很多的平台和操作系统中使用,移植的时候只要提供十几个必须由操作系统才能实现的函数即可。关于newlib的资料,大多数都是和交叉编译相关的,因此我照着资料,用了很多方法,最后终于在cy原创 2006-08-28 17:30:00 · 2399 阅读 · 1 评论 -
为MyOS实现了一个内存分配函数,并修正了GUI分配窗口的一个Bug
#include "KMalloc.h"#include "PageAlloc.h"static int has_initialized = 0;struct page_control_block{ int useCount; unsigned long freeSize; struct page_control_block *prev; struct page_contr原创 2006-04-27 15:20:00 · 1045 阅读 · 0 评论 -
MyOS截图
原创 2006-09-05 20:31:00 · 1879 阅读 · 1 评论 -
MyOS最近进展
昨天逛完书店,直接就回公司去了,因为周五晚上突然想到了修改MyGUI的方法,使其可以完美支持窗口边框和标题栏这样的效果。今天,继续昨天的工作,修改了MyGUI用户空间的代码,确信已经没有问题。移植了zlib和libpng两个库,毫无障碍就编译通过了。不过还没来得及测试。以后还要移植libjpeg、freetype和sdl等库,总之很多了。今天,在使用MyOS的过程中,一不小心把同步的问原创 2006-09-03 21:39:00 · 1627 阅读 · 0 评论 -
gcc优化导致的错误
在MyOS中,有这样一段系统调用代码:void sys_win_draw(regs_t reg){ HWND hWnd = (HWND)reg.ebx; unsigned long* buffer = (unsigned long*)reg.ecx; DrawWindow(hWnd, buffer);}平时都很正常,今天想测试一下效率,就写了个循环调用,结果调用次数老是不对,令我十分奇怪。原创 2006-01-07 19:06:00 · 2289 阅读 · 1 评论 -
软盘驱动终于在真机上成功运行
MyOS的软盘驱动写了好久了,但由于没有软驱,只能在虚拟机上调试,也不知道在真机上好不好用。最近Beans终于决定要写软盘驱动了,呵呵,正好把MyOS的镜像给它,用他的软驱来运行一下。结果,上周五的时候他告诉我不好用,我这个郁闷啊。周六,用了几个小时的时间,按尽可能正规的方式对代码进行了修改,今天发给他,居然好使了,哈哈。运行其上的Fat12也好使,嘿嘿。看来以后就可以安心的完善Fat12了。然后原创 2006-01-16 16:14:00 · 1321 阅读 · 4 评论 -
SS的基地址要等于DS的基地址
SS的基地址要等于DS的基地址.举例说明为何要这样.这是一循环C代码:while(i!=100){ demo_function() i++;}对应的汇编代码:lea eax,dword ptr[ebp+10]inc dword ptr [eax]cmp dword ptr[ebp+10],100je end_loopcall demo_functionjmp l转载 2006-03-28 09:48:00 · 1488 阅读 · 0 评论 -
又是一个半月了
从2月10日开始上班到现在,已经一个半月了。和去年一样,一个半月的时间除了机械般的上班以外什么都没作。今天晚上就可以把《神雕侠侣》看完,明天起就可以开始继续学习操作系统了。一直有重写MyOS的想法,只是自己的理论基础还不是很牢,恐怕写了一半,又觉得不好,还得重写。看来,还是先学习基础知识要紧,不过可以抽空把代码整理一下,比如关于GUI的系统调用。这样,GUI就可以单独开发了,基本不会受内核的影原创 2006-03-28 12:29:00 · 894 阅读 · 0 评论 -
MyOS支持Fat12子目录下文件的读取
经过一个多小时的努力,MyOS终于支持Fat12文件系统中子目录及其文件的读取。下一步的计划是继续完善文件系统,准备开发一个网卡驱动。原创 2006-02-27 20:18:00 · 1171 阅读 · 0 评论 -
MyOS采用gcc 4.10编译
早些时候,在CSDN看到gcc出了4.10版,就想下个回来看看MyOS能不能在下面编译。由于我是在windows开发的MyOS,用的是DJGPP,于是到DJGPP的网站看看,结果DJGPP用的gcc还是老版本的,记得好像是4.02。昨天又到DJGPP的网站,看看DJGPP已经更新了,于是就down了一个回来。编译MyOS时出了很多警告,但没有错误。但一运行就出错了,该出来的图形界面没出来。用pri原创 2006-04-02 15:48:00 · 1105 阅读 · 0 评论 -
MyOS系统简图
终于把图传上来了,原来CSDN的blog中上传图像是区分扩展名的。最初是以png格式上传的,没成功。后来传了一幅jpg的图片,居然成功了。(图片挺不错的,虽然里面的人我不喜欢)。于是,就把图片另存为jpg格式的,还是不行。后来灵机一动,看了看图片的扩展名,结果一个是小写的jpg,一个是大写的JPG。赶紧把扩展名改成小写,上传,OK。原创 2006-03-31 11:05:00 · 1401 阅读 · 0 评论 -
spinlock学习心得
1: 在UP下,spinlock为空,为什么可以起到保护临界资源的作用?这时来中断的怎么办?因为内核不可中断,即使这时发生了中断,中断处理完后,还会回到该处继续执行,而不会调度到别的进程。因此,即使spinlock为空,也不会出错。但这里有一个约束条件,那就是在中断处理代码中,不可以访问该临界区。如果该临界区需要在中断中访问,我们就不可以用spin_lock了,需要用spin_lock_irq原创 2006-04-03 10:40:00 · 1158 阅读 · 0 评论 -
MyGUI类库
原创 2006-04-05 14:11:00 · 1611 阅读 · 1 评论 -
让gcc气死了
上星期用gcc 4.10编译了MyOS,很顺利。由于MyGUI一直是用Dev-Cpp编译的,一直想用gcc来编译它。这样只要一套环境就可以了。结果编译的时候,发现了两个问题。首先,void* ::operator new(size_t size)中的::必须去掉才能编译。其次,有4个文件一直编译不了,刚开始怀疑是自己的代码不规范。后来一看,CCheckBox可以编译,而直接从CCheckB原创 2006-04-06 15:26:00 · 1502 阅读 · 3 评论 -
MyOS键盘LED灯设置工作正常
代码很简单,但如果每次键盘中断都调用一次的话,则系统反应极慢(有点不明白为什么,键盘中断并不是经常发生啊)。后来改成只在必要时调用,则一切正常。晚上再试一下好了。原创 2006-04-12 14:09:00 · 1013 阅读 · 0 评论 -
国内操作系统项目销声匿迹
两年多不碰操作系统了,最近又重新开始了。以前经常上的操作系统网站都记不住有哪些了,于是不断的在baidu里面搜索,慢慢的回忆起来很多东西。可惜的是,国外的一些系统还在,虽然可能也没有什么发展,但国内的项目基本都消失了,连网站都打不开了。感慨良多,特此记录。原创 2009-02-22 00:36:00 · 1565 阅读 · 2 评论