免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 984 | 回复: 0
打印 上一主题 下一主题

Linux 0.11初步总结 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-30 00:10 |只看该作者 |倒序浏览

Linux 0.11初步总结
Linux 0.11内核只有8000多行代码,是学习操作系统基本原理的好材料,也是进一步学习linux后期版本的好基础。因为我看它主要是为了深入学习arm linux,所以关于x86的知识没有深入,所以只用了两天时间就把这些内容大致搞定。
首先是操作系统设计的基本准则:
简单就是美
利用已有基础
良好的设计
单内核和微内核操作系统选择
核心源代码的目录分布:
Boot:
Boot.s
Head.s
我发现其实linux的启动引导代码在后来一直没有很大的变化,具体的工作就是读取内核文件,和设置各种和cpu有关的内容,比如什么idt,gdt之类的啦,更具体的我也不太懂,呵呵。
Fs
这个目录下老多文件了,就是一些和文件系统有关的东西,包括各种读写驱动函数。看了一个文件,就是想知道如果自己实现这些东西该怎么去做,现在也没怎么弄明白,以后认真研究一下arm linux里的nand flash驱动的实现吧。其实我对驱动最不明白的就是到底要到哪一层。
Include
就是一些头文件啦。
Init
只有一个main.c文件,工作为:初始化系统时钟->启动tty设备->启动系统陷阱->启动进程调度器->启动文件系统->启动硬盘中断处理程序->开启中断,切换至用户模式->init函数->进入进程调度循环
Kernel
一些重要的功能
Lib
系统调用功能
Mm
内存管理有关的内容
Tools
一个程序,将生成的内核拼接成一个核心映像文件。
操作系统的引导:
X86上的我在看这本书前也就有点了解:粗略的说就是当计算机启动时,bios会自动复制一段代码上内存,然后跳往内存执行,所以我们就可以根据这个原理写段代码实现引导内核的作用,具体的我也不太懂,不过应该很简单。
ARM上,我分析过一个bootloader的源码,其实在ARM上也是很简单的,比如在arm刚启动时都时执行地址0的代码,然后我们就可以编一个程序初始化并将内核读取,然后跳到内核起始地址就可以执行了,但是有一个问题就是如果开启mmu功能那些地址怎么变化,我还没有搞明白。
存储管理分析
以后分析arm linux吧
进程管理和调度
在linux中调度函数就是schedule(),具体的调度算法没有认真的研究,以后要用在看吧,其实调度工作还是很简单的,就是选择适当的进程,将进程上下文保存和还原啦,这个工作其实也分为两部分,一保存原来的进程,二是对将要运行的进程还原,其实更进一步说应该是汇编代码实现这个功能,因为要对cpu寄存器赋值,能不用汇编吗?
还有就是什么时候发生调度:呵呵,时间到了的时候(rtc/timer),或者有程序自动放弃cpu的时候。
设备管理和调度
关于中断和驱动啦,当外设发生中断时会执行一段汇编后跳往c语言写的中断处理函数,然后执行完事后回到原来的地方执行。
文件系统
以后分析arm linux吧


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/42491/showart_453264.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP