和菜鸟一起学linux内核源码之基础准备篇

上传人:博****1 文档编号:572491043 上传时间:2024-08-13 格式:PDF 页数:3 大小:266.41KB
返回 下载 相关 举报
和菜鸟一起学linux内核源码之基础准备篇_第1页
第1页 / 共3页
和菜鸟一起学linux内核源码之基础准备篇_第2页
第2页 / 共3页
和菜鸟一起学linux内核源码之基础准备篇_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《和菜鸟一起学linux内核源码之基础准备篇》由会员分享,可在线阅读,更多相关《和菜鸟一起学linux内核源码之基础准备篇(3页珍藏版)》请在金锄头文库上搜索。

1、-和菜鸟一起学 linu*核源码之根底准备篇断断续续地看着核源码,发现很多知识点都不是很明白,特别是对于操作系统的一些根底。虽然看到了块设备了,但是发现也总结不出什么了,这篇好似好久前更新的,一直没有发表。最近还是比较忙碌,同事走了好多人,也有考虑过别的公司。但是正式工作未满 1 年,也不能随随便便地就离开。虽然很忙,但是还是学了很多东西。渐渐地接触了linu*应用层。发现应用和驱动还是有很多区别的,各种需求,各种接口,各种设计,各种实现。嗯,慢慢来总会学好的。对于核,慢慢看,看一遍不懂,那就第二遍,第三遍。相信总会看懂的。Fighting。初始化 init 下只有一个 main 函数。首先利

2、用 setup.s 程序取得的程序参数设置系统的根文件设备号以及一些存全局变量。这些存变量指明了主存的开场地址、系统所拥有的存变量和作为高速缓冲区存的末端地址。如果还定义了虚拟盘RAMDISK,则主存将适当减少。然后,核进展所有面的硬件初始化工作。包括陷阱门、块设备、字符设备和tty包括人工创立第一个任务(task 0)。待所有初始化工作完成就设置中断允标志,开启中断。在整个核完成初始化后,核将执行权切换到了用户模块,也即CPU 从 0 特权级切换到了第 3 特权级。然后系统第一次调用创立进程函数fork(),创立出一个用于运行 init()的子进程。在该进程中系统将运行控制台程序。如果控制台

3、环境建立成功,则再生成一个子进程,用于运行 shell 程序/bin/sh。假设该子进程退出,父进程返回,则父进程进入一个死循环,继续生成子进程,并在此子进程中再次执行shell 程序/bin/sh,而父进程则继续等待。对于 linu*来说,所有任务都是在用户模式执行的,包括很多系统应用程序,如shell 程序、网络子系统程序等关于关于 linu*linu*核体系构造核体系构造说到操作系统,我们都会知道 windows 操作系统,linu*操作系统,苹果的 iOSiOS操作系统,以前很火的塞班操作系统,还有最近消费类电子很火的AndroidAndroid 操作系统。一个完整的操作系统分为4 个

4、局部。可以把这个理解为我们用的手机。其中的硬件系统就是我们看到的整个手机了,cpu 啊,存啊,这些不拆开来看不到的,和触摸屏啊,按键之类看以看到的。操作系统核就是我们说的 android 了,不过他包括了 linu*的核了。操作系统. z.-效劳就是 android 的一套构造了,给我们直观的就是那个有点炫的界面了。我们可以通过点击来实现我们想要的功能。用户应用就是我们常玩的QQ 啊,导航啊,当然少不了各种好玩的游戏了,愤怒的小鸟,涂鸦跳,水果忍者,是不是又想玩一把.唉,还是好好学习吧,虽然手机就在旁边。对于 linu*核的单核模式的系统,有可以把他分为如下: Linu*核又可分为 5 个大的

5、模块。其关系和主要功能可以见以下图:关于关于 linu*linu*存存物理存可以分为以下图所示:核占用存开场局部;接下来是共硬盘,软盘使用的高速缓冲区局部,其中扣除显存和 bios 的 640k 到 1m;然后是虚拟盘;最后一局部是为所有程序可以使用的主存区。Linu*存管理中,段变换:将一个由段选择符和段偏移构成的逻辑地址转换为一个线性地址。页变换:将线性地址转换为对应的物理地址。具体可见以下图所示:虚拟地址:指的是由程序产生的由段选择符和段偏移地址两个局部组成的地址。为什么叫它是虚拟的地址呢.因为这两局部组成的地址并没有直接访问物理存,而是要通过分段地址的变换机构处理或映射后才会对应到相应

6、的物理存地址。段描述符:向 CPU 提供了将逻辑地址映射为线性地址所必要的信息。描述符是由程序编译器、器、加载器或者操作系统创立的。描述符表:保存描述符在描述符表中的,有两类1、全局描述符表Global descriptor table-GDT2、局部描述符表Local descriptor table-LDT描述符表是由 8 字节构成的描述符项的存中的一个数组。处理器是通过使用GDT 和 LDTR 存放器来定位 GDT 表和当前的 LDT 表。最多可以含有 8192213个描述符。选择符:逻辑地址的选择局部,用于指定一描述符的,它是通过指定一描述符表并且索引其中的一个描述符项完成的。段存放器

7、:处理器将描述符中的信息保存在段存放器中,因而可以防止在每次访问存时查询描述符表。. z.-线性地址:通过指定一个页表、页表中的*一页以及页中的偏移值,从而间接地指向对应的物理地址。页表:一个简单的 32 位页指示器的数组。页表本身也是一页存,因此它含有4K 字节的存,可容纳 1K 个 32 位的项。Offset = 212=4K, table =210, directory = 210,所以线性地址空间为210*210*4k=4G。由于 0.11 核把每个进程的最大可用的虚拟存空间定义为64M,因此每个进程的逻辑地址可以用任务号*64M,就可以转换到线性空间的地址。关于关于 linu*lin

8、u*进程进程进程可以在核态或者用户态运行,当资源可用就被唤醒,进入就绪态;当进程处于可中断睡眠状态,收到信号可被唤醒;当处于不可中断睡眠状态,只能被使用 wakeup 等的唤醒;当进程处于暂停状态,可发送信号使其进入就绪态;当僵死状态,当已经停顿运行,父进程还没有调用wait 查询状态,一旦父进程调用完 wait 取得子进程信息后,这个进程任务数据构造数据构造就会被释放掉。关于关于 linu*linu*文件系统和源码目录文件系统和源码目录关于关于 linu*linu*核核 makefilemakefileLinu* makefile 文件是编译辅助工具软件 make 的参数配置文件。Make

9、工具软件的主要用途是通过识别哪些文件已经被修改正,从而自动地决定在一个含有多个源程序文件的程序系统中哪些文件需要被重新编译。这里的 makefile 主要作用是指示 make 程序最终使用独立编译连接成的tools/目录中的 build 执行程序将所有核编译代码连接和合并成一个可运行的核映像文件image。具体是对 boot/目录中的 bootsect.s、setup.s 使用 8086 汇编器进展编译,分别生成各自的执行模块。再对源代码中的其他所有程序使用GNU 的编译器gcc/gas 进展编译,并连接成模块 system。再用 build 工具将这三块组合成一个核映像文件 image。. z.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号