当前位置:  技术问答>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标准库。
所以想找有同样想法的朋友交流下。打算三到六个月出来,由于平时工作也比较忙,时间可能只有周末交流。真诚欢迎各位提出想法。小弟在此感谢大家了!

|
没研究过内核。。
要下点苦功……

|
帮顶..

|
友情支持!

|
膜拜!

|
精神支持楼主

|
友情支持

|
去年写过一点点(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一样的混合内核,或者是外内核?

|
帮顶!

|
我也有興趣,但我是研究x86的架構。
我有模仿自己動手寫作業系統這本書寫了一個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的工作环境和社会环境,在现在的社会环境下,写写一个内核除了把自己弄得很累外,不会有什么收获的.

如果非要说出来有什么用处,我只能说:写一个操作系统,可以使我们对操作系统的理解,更深入一些.操作系统是计算机系统的核心,理解操作系统,对于理解计算机系统,具有非常重要的意义.不理解操作系统,就不可能理解什么是计算机.从这一点来说,尝试写写操作系统,也许有些用吧?




|
支持楼主,现在有理想的人不多哦
希望你能找到你的团队和支持你的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的影响,我们的思想实在是太古老了.这怎么能行呢?

个人意见,仅供参考.不当之处,还望见谅!





|
严重支持。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux内核中影响tcp三次握手的一些协议配置
  • Fedora Core 2自带的内核升级程序下载下来内核后,要不要再编译一遍内核?
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • 进程内核栈和操作系统内核栈的关系
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • Linux中内核线程不访问内核态地址空间?
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • 2.6内核下编译2.4内核
  • linux内核中的likely宏和unlikely宏介绍及用法
  • 谁能提供kgdb内核补丁内核模块的下载
  • CentOS 6.5 下载地址及如何升级内核(kernel)版本到 3.10.28
  • 编译新内核后怎么进入原来内核
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • 请问linux中如何判断内核是否已经启动。(在内核中写程序)
  • docker使用的技术之Container内核原理介绍
  • 内核模块跟内核版本不匹配????????
  • 请教:如何安装新内核(rpm包)而不同原来得内核冲突?? 在线等待!!
  • linux为什么要升级内核?升级内核有何作用?
  • 内核升级后,如何在新的内核中加载显卡驱动?
  • 内核源码和结果make过的内核源码有什么区别
  • 不重新编译内核能修改内核函数吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3