Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1104438
  • 博文数量: 53
  • 博客积分: 1165
  • 博客等级: 下士
  • 技术积分: 1807
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-19 14:56
个人简介

专注于操作系统内核的实现

文章分类
文章存档

2015年(2)

2014年(16)

2013年(18)

2012年(17)

分类: IT业界

2013-01-01 10:43:02

       首先祝大家元旦快乐! 
       这个版本原本定于12月初发布的,但是由于“设备模型”工作量巨大,我一个人不可能这么快完成,就是今天也才完成了一小部分。我常常这样安慰自己,不要急,慢慢来,急也急不成啊,我可能是懒散惯了。但是一个人搞OS真不那么容易的。虽然这次加入的新特性对于整个操作系统“进程”来说,只是一小步,但是对于我,对于我的LMOS,却是一大步……
       我以前就说过操作系统一个重要的职责,那就是要以对计算机内的那些个杂七杂八的设备,进行管理和控制,并给应用软件提供接口。我不敢想像每个应用软件各自控制硬件,那会是个什么样子。
       我们要对其管理,首先就要了解它,各种各样的设备,其实和操作系统相关是各设备的设备控制器,这些个控制器控制设备和CPU、内存、其它设备进行通信。要互相通信当然要用“电线”(呵呵)把它们之间连接起来,这种“电线”叫总线。然后把这些“电线”和这些设备控制器都固定到一块板子上,这个板子叫主板,为了扩充,还预留一些插口。一台PC机就这样基本做好了,呵呵。但是,是不是这样做了,就完美了?不,事物总是发展的,PC机的总线到现在以有十几种了吧。比如最开始的ISA,什么EISA……我就不一一列举了,为了兼容直到现代意义的PC机内还有ISA总线,当然它是用一个PCI桥实现的。ISA有很多缺点,第一速度慢,第二扩展差,等等……由于这些缺点导致PCI总线的产生,由英特尔(Intel)等公司1991年推出的用于定义局部总线的标准。此标准允许在计PCI算机内安装多达10个遵从PCI标准的扩展卡。还支持即插即用:是指当板卡插入系统时,操作系统会自动对板卡所需资源进行分配,如基地址、中断号等,并自动寻找相应的驱动程序。而不象旧的ISA板卡,需要进行复杂的手动配置。
       所以现代的PC机是这样的,我画了个丑而陋的图,如下:
        所以LMOS为了支持更多,更先进的设备,加入PCI总线的初级支持。总不能只能运行在20年前ISA总线吧。其实对于系统开发人员来说,ISA总线比PCI总线还要简单,因为那些设备的寄存器地址,中断号,都是固定的,计算机在运行中也不会有新的硬件加入到计算机中。更不需要对设备总线地址,寄存器地址,内存分配。LMOS在启动过程中会自己进行配置每条总线上的每个桥、每个设备,并为之分配一个pcidsc_t,device_t,drive_t,objnode_t.并建立好它们之间的关系。以便对其控制和管理。也就建立了一个初级的设备模型,分为总线驱动-》类驱动-》设备驱动-》功能驱动,建立了这样的层次关系。这个也没什么好说的,必然这个东西,这种机制,在内核中,大家看不到也不摸不着,非常的抽象,这有个不好的图,大家看看吧:
    
        当然大家可以在命令行下输入:‘p’,检测,LMOS会显示你计算机里所有的总线,设备,但是不会显示PCI桥。大家可以看我的物理机上的LMOS,如图:
    
       这就是我两个月来干的事,今年也完了,祝大家新年快乐!!
       虽然今年是完了,但是LMOS没完,我会继续的,下一步将继续完善设备驱动模型,进一步强化和优化内存池分配器,争取加入虚拟内存机制。让LMOS一步一步的完善。当LMOS应用程序环境建立之后,我就会暂停LMOS开发,转而开发LMOS的编译工具链。到那时,大家就可以任意扩充LMOS内核,开发图形环境,开发硬件驱动,开发应用软件了,移植内核到ARM,龙芯等平台。不过在这之前我还有好长的路要走。

     由于LMOS尚未开源,所以大家不要以任何手段及逆向工程,研究其实现细节。因此而产生的法律问题及一切后果,大家自己负责。

      安装测试
      安装测试有两种方式,大家可以任选其一:
     (1)虚拟机中安装。
     (2)物理机中安装。
      虚拟机中安装,我推荐大家使用这种方式,这样既不需要另的一块空硬盘,也不需要大家的宿主操作系统是LINUX。大家首先确保你的宿主操作系统中安装有Oracle VM VirtualBox 虚拟机软件。如果没有请大家自行下载相关操作系统版本的Oracle VM VirtualBox并安好。安装好后,先新建个虚拟机,然后下载()本人提供的虚拟机硬盘镜像。并挂载在虚拟机上,启动虚拟机即可运行LMOS。由于本人提供的是VDI格式的硬盘镜像,所以大家必须安装Oracle VM VirtualBox虚拟机。
      物理机中安装,非专业人士不推荐使用。首先大家找一块空白硬盘,我用的一块160GB的希捷硬盘。本人严重提醒,请大家确保,请大家在次确保,这块硬盘中没任何重要数据,LMOS会清除这块硬盘上的分区表和所有数据。请大家务必注意!!!!大家把这块硬盘连接在计算机主板上的SATA接口(一搬主板最少有两个SATA接口)。接好之后,这时你的计算机上一定了两块硬盘,并且是这样的,一块空白硬盘用于测试,一块硬盘中安装有linux操作系统并且能启动运行你的计算机。这一切准备好之后,就启动你的另一块硬盘上的linux操作系统。linux系统启动之后在 /dev/sd(x) 这个“x”代表a、b,例如你的计算机中有两硬盘的化,你一定能发现 /dev/sda ,/dev/sdb,这两个分别代表两块硬盘的设备文件。到这里一切正常的化,大家就可以下载()本人提供的内核文件包,解压后会得到4个文件:lmhdboot.bin、lmosldr.bin、lmoskrnl.bin、Makefile。然后打开Makefile文件,按照文件中的注释说明,根据自己的计算机硬件环境,修改相关的参数宏。然后保存Makefile文件。确保这连串的操作没有任何差错之后,执行make命令。执行成功之后,请重启计算机进入BIOS设置从先前连接的那块空白硬盘最先启动就OK了。
LMOS下载地址:
阅读(11482) | 评论(33) | 转发(3) |
给主人留下些什么吧!~~

lmnos2013-02-14 16:26:24

fanhed:借地问一下楼主,最近我在看linux-0.00,看到这个中断处理程序有点不明白
/* Timer interrupt handler */ 
.align 4
timer_interrupt:
 push %ds
 pushl %eax
 movl $0x10, %eax
 mov %ax, %ds
 movb $0x20, %al
 outb %al, $0x20
 movl $1, %eax
 cmpl %eax, current
 je 1f
 movl %eax, current
 ljmp $T

您想问什么啊,不好意思,今天才看到您的评论……

回复 | 举报

fanhed2013-02-12 16:21:30

借地问一下楼主,最近我在看linux-0.00,看到这个中断处理程序有点不明白
/* Timer interrupt handler */ 
.align 4
timer_interrupt:
 push %ds
 pushl %eax
 movl $0x10, %eax
 mov %ax, %ds
 movb $0x20, %al
 outb %al, $0x20
 movl $1, %eax
 cmpl %eax, current
 je 1f
 movl %eax, current
 ljmp $T

lmnos2013-01-21 12:03:43

gfree_wind:能做OS的,一个是有毅力,二还得有时间。

谢谢 gfree_wind大神,我刚好具备这两个条件,嘿嘿

回复 | 举报

gfree_wind2013-01-21 11:52:57

能做OS的,一个是有毅力,二还得有时间。

lmnos2013-01-19 16:02:32

2007robot:精神可贵,我折腾了几年,断断续续,云里雾里的,惭愧啊!

呵呵 没啥可贵的,我在家没有工作,就爱玩这个

回复 | 举报