当前位置: 技术问答>linux和unix
自己想写个简单内核,有兴趣的朋友来交流下
来源: 互联网 发布时间:2016-08-04
本文导语: 几年前看过0.11版赵牛人的书,最近发现忘记的差不多了,所以想写个简单内核玩玩。考虑了一下X86和ARM,应该用ARM和大家交流会比较方便点,X86稍微复杂了一点。最主要是ARM的指令级模拟器(ARMulator)能提供最底层...
几年前看过0.11版赵牛人的书,最近发现忘记的差不多了,所以想写个简单内核玩玩。考虑了一下X86和ARM,应该用ARM和大家交流会比较方便点,X86稍微复杂了一点。最主要是ARM的指令级模拟器(ARMulator)能提供最底层的硬件模拟,X86上的指令级模拟器我也不是很熟悉,而X86机器级的模拟器又可能会加到理解的难度。X86可能也有指令级的模拟,不过都不是很熟悉。
目前的打算是,基于ARM9,在AXD上跑。第一版,涉及到的所有外设,只提供一个中断控制器,用于模拟一个10ms中断(TICK),其他中断暂时不考虑,以后慢慢模拟。中断控制器用ARMulator模拟。
内核方面,我想写个单内核的,所有的系统服务只提供基本的,比如创建任务,内存分配,定时器等等。至于基于这个内核的程序开发,我打算复用ADS编译器的编译功能,暂时只支持几个常见的C标准库。
所以想找有同样想法的朋友交流下。打算三到六个月出来,由于平时工作也比较忙,时间可能只有周末交流。真诚欢迎各位提出想法。小弟在此感谢大家了!
目前的打算是,基于ARM9,在AXD上跑。第一版,涉及到的所有外设,只提供一个中断控制器,用于模拟一个10ms中断(TICK),其他中断暂时不考虑,以后慢慢模拟。中断控制器用ARMulator模拟。
内核方面,我想写个单内核的,所有的系统服务只提供基本的,比如创建任务,内存分配,定时器等等。至于基于这个内核的程序开发,我打算复用ADS编译器的编译功能,暂时只支持几个常见的C标准库。
所以想找有同样想法的朋友交流下。打算三到六个月出来,由于平时工作也比较忙,时间可能只有周末交流。真诚欢迎各位提出想法。小弟在此感谢大家了!
|
没研究过内核。。
要下点苦功……
要下点苦功……
|
帮顶..
|
友情支持!
|
膜拜!
|
精神支持楼主
|
友情支持
|
去年写过一点点(0.01 version)的是基于x86的http://hi.baidu.com/yixin_huang 后来一直没有时间,最近又开始写了一段时间,估计也要五六月分才能完成。
|
我对ARM不熟悉,不知道楼主的内核的子系统(任务管理,内存管理,文件系统,设备I/O系统,API,...)都支持那些?
任务管理里支持线程吗?我估计调度一定是抢占的,但支持REALTIME吗?
内存管理支持virtual memory 吗,使用MMU吗准备如何使用?
文件管理抽象virtual file switch(vfs)吗?
设备I/O系统方面实现resource管理吗?还有中断优先级管理,是如同NT哪么负载还是向linux?
还有不知道楼主OS是微内核(像Minix),宏内核(像linux),还是如同NT一样的混合内核,或者是外内核?
任务管理里支持线程吗?我估计调度一定是抢占的,但支持REALTIME吗?
内存管理支持virtual memory 吗,使用MMU吗准备如何使用?
文件管理抽象virtual file switch(vfs)吗?
设备I/O系统方面实现resource管理吗?还有中断优先级管理,是如同NT哪么负载还是向linux?
还有不知道楼主OS是微内核(像Minix),宏内核(像linux),还是如同NT一样的混合内核,或者是外内核?
|
帮顶!
|
我也有興趣,但我是研究x86的架構。
我有模仿自己動手寫作業系統這本書寫了一個bootloader,
有興趣的人可以參考http://bboytaiwan.blogspot.com/2008/11/multiboot-usb-bootloader.html
我有模仿自己動手寫作業系統這本書寫了一個bootloader,
有興趣的人可以參考http://bboytaiwan.blogspot.com/2008/11/multiboot-usb-bootloader.html
|
牛啊,我们只能在外围做
|
写出来了 让我看看代码 开源啊
|
能指点一下,都需要购买那些设备,才能开发
|
支持
|
我曾经写过一个类似uc/os的,但是只支持16优先级。。。后来不了了之了,太累,没money没动力
|
目前刚完成了一次类似的rtos,参考了一位以前一个高手的《自己实现一个rtos》的帖子,内核是arm7的架构,不支持mmx,主要参考标准是uc/os2的源码,优先级实现也采用uc/os2的方案,信号量和通信机制简化了uc/os2的结构来实现,还加入了内存管理,自己实现了一个malloc和free,目前还有点bug,由于uc/os2没有专门的文件管理系统,所以看了赵同志的0.11内核,决定把minix1.0的文件系统简化下移植到新系统中,也算有了文件管理系统,我用的是arm的comtex-m3cpu,控制台程序我主要通过串口实现,专门开一个任务进程进行管理,连接到pc的超级终端上,这样,就可以通过pc进行系统的操作,大致实现就是这样,目前,文件系统还在移植中,别的还有点bug,需要进一步修改,不过都是业余实现的,平时比较忙,很多东西都考虑的不是很周全,还需要多看些资料充实下。我的开发板直接用公司的产品代替了,如果楼上的想自己学,建议直接用2410或者2440的开发板吧直接进入到2.6内核的linux进行学习,效果也是不错的。
|
我上博士时,写过一个内核,后来零零星星地也算是改进过几次,个人认为还是蛮好的.但是写一个内核,有什么用呢?除了自己练一练手以外,实在没有什么用途,而且太累人.
真羡慕Ken Thompson的工作环境和社会环境,在现在的社会环境下,写写一个内核除了把自己弄得很累外,不会有什么收获的.
如果非要说出来有什么用处,我只能说:写一个操作系统,可以使我们对操作系统的理解,更深入一些.操作系统是计算机系统的核心,理解操作系统,对于理解计算机系统,具有非常重要的意义.不理解操作系统,就不可能理解什么是计算机.从这一点来说,尝试写写操作系统,也许有些用吧?
真羡慕Ken Thompson的工作环境和社会环境,在现在的社会环境下,写写一个内核除了把自己弄得很累外,不会有什么收获的.
如果非要说出来有什么用处,我只能说:写一个操作系统,可以使我们对操作系统的理解,更深入一些.操作系统是计算机系统的核心,理解操作系统,对于理解计算机系统,具有非常重要的意义.不理解操作系统,就不可能理解什么是计算机.从这一点来说,尝试写写操作系统,也许有些用吧?
|
支持楼主,现在有理想的人不多哦
希望你能找到你的团队和支持你的BOSS
希望你能找到你的团队和支持你的BOSS
|
楼主看到"0.11版赵牛人的书",就想写操作系统,说明楼主对操作系统的了解,知识面太窄了一些.还是多了解一些操作系统的研究进展,再写操作系统更好一些.
linux虽然出现在90年代初,在结构上,还是一个unix的clone而已.而操作系统,可不是unix. unix的鼎盛时期,是在上世纪八十年代,已经过去20多年了.甚至在八十年代,关于操作系统的研究,就已经突破了unix的结构,例如Ken Thompson本人,就终止了unix的开发,而开始开发plan -9.九十年代中期以前,研究的重点,主要在微内核,出现了mach,chorus,amoeba,plan-9,spring OS等系统,但是微内核性能低下的问题,一直没有很好地解决,也影响了这些系统的商业化.九十年代中期以后至两千年左右,研究的重点在扩充内核,也可以说是第二代微内核,这是出现了L4,spin OS, scout, exokernel,x-kernel,QNX等系统;两千年左右,出现了几个和互连网相关的操作系统研究项目,例如, 2K, webOS等;近年来,微软有一个研究项目singularity,坦尼鲍姆对操作系统可靠性的研究,IBM Blue gene计算接点上的操作系统,以及和多核相关的一些研究等,都值得我们关注.
还是要了解同行的研究工作,闭门造车总是不好的.0.11版的linux,好象是参考的86年的一本unix写的吧.个人认为0.11版的linux对操作系统的理解,实在是太UNIX了,就连Ken Thompson在八十年代就抛弃了unix,我们现在写操作系统,如果还在受0.11版的linux的影响,我们的思想实在是太古老了.这怎么能行呢?
个人意见,仅供参考.不当之处,还望见谅!
linux虽然出现在90年代初,在结构上,还是一个unix的clone而已.而操作系统,可不是unix. unix的鼎盛时期,是在上世纪八十年代,已经过去20多年了.甚至在八十年代,关于操作系统的研究,就已经突破了unix的结构,例如Ken Thompson本人,就终止了unix的开发,而开始开发plan -9.九十年代中期以前,研究的重点,主要在微内核,出现了mach,chorus,amoeba,plan-9,spring OS等系统,但是微内核性能低下的问题,一直没有很好地解决,也影响了这些系统的商业化.九十年代中期以后至两千年左右,研究的重点在扩充内核,也可以说是第二代微内核,这是出现了L4,spin OS, scout, exokernel,x-kernel,QNX等系统;两千年左右,出现了几个和互连网相关的操作系统研究项目,例如, 2K, webOS等;近年来,微软有一个研究项目singularity,坦尼鲍姆对操作系统可靠性的研究,IBM Blue gene计算接点上的操作系统,以及和多核相关的一些研究等,都值得我们关注.
还是要了解同行的研究工作,闭门造车总是不好的.0.11版的linux,好象是参考的86年的一本unix写的吧.个人认为0.11版的linux对操作系统的理解,实在是太UNIX了,就连Ken Thompson在八十年代就抛弃了unix,我们现在写操作系统,如果还在受0.11版的linux的影响,我们的思想实在是太古老了.这怎么能行呢?
个人意见,仅供参考.不当之处,还望见谅!
|
严重支持。