2022年Linux操作系统源代码详细分析 .pdf
《2022年Linux操作系统源代码详细分析 .pdf》由会员分享,可在线阅读,更多相关《2022年Linux操作系统源代码详细分析 .pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、linux 源代码分析 :Linux 操作系统源代码详细分析疯狂代码 http:/CrazyC ?:http:/CrazyC 内容介绍 : Linux 拥有现代操作系统所有功能如真正抢先式多任务处理、支持多用户内存保护虚拟内存支持SMP 、UP 符合POSIX 标准联网、图形用户接口和桌面环境具有快速性、稳定性等特点本书通过分析Linux 内核源代码充分揭示了 Linux 作为操作系统内核是如何完成保证系统正常运行、协调多个并发进程、管理内存等工作现实中能让人自由获取系统源代码并不多通过本书学习将大大有助于读者编写自己新 第部分 Linux 内核源代码 arch/i386/kernel/ent
2、ry.S 2 arch/i386/kernel/init_task.c 8 arch/i386/kernel/irq.c 8arch/i386/kernel/irq.h 19 arch/i386/kernel/process.c 22 arch/i386/kernel/signal.c 30arch/i386/kernel/smp.c 38 arch/i386/kernel/time.c 58 arch/i386/kernel/traps.c 65arch/i386/lib/delay.c 73 arch/i386/mm/fault.c 74 arch/i386/mm/init.c 76 fs
3、/binfmt-elf.c 82fs/binfmt_java.c 96 fs/exec.c 98 /asm-generic/smplock.h 107 /asm-i386/atomic.h 108 /asm-i386/current.h 109 /asm-i386/dma.h 109 /asm-i386/elf.h 113 /asm-i386/hardirq.h 114 /asm-i386/page.h 114 /asm-i386/pgtable.h 115 /asm-i386/ptrace.h 122 /asm-i386/semaphore.h 123 /asm-i386/shmparam.
4、h 124 /asm-i386/sigcontext.h 125 /asm-i386/siginfo.h 125 /asm-i386/signal.h 127/asm-i386/smp.h 130 /asm-i386/softirq.h 132 /asm-i386/spinlock.h 133 /asm-i386/system.h 137/asm-i386/uaccess.h 139 /binfmts.h 146 /capability.h 147 /linux/elf.h 150 /linux/elfcore.h 156/linux/errupt.h 157 /linux/kernel.h
5、158 /linux/kernel_stat.h 159 /linux/limits.h 160 /linux/mm.h 160/linux/module.h 164 /linux/msg.h 168 /linux/personality.h 169 /linux/reboot.h 169 /linux/resource.h170 /linux/sched.h 171 /linux/sem.h 179 /linux/shm.h 180 /linux/signal.h 181 /linux/slab.h 184/linux/smp.h 184 /linux/smp_lock.h 185 /lin
6、ux/swap.h 185 /linux/swapctl.h 187 /linux/sysctl.h 188/linux/tasks.h 194 /linux/time.h 194 /linux/timer.h 195 /linux/times.h 196 /linux/tqueue.h 196/linux/wait.h 198 init/.c 198 init/version.c 212 ipc/msg.c 213 ipc/sem.c 218 ipc/shm.c 227 ipc/util.c236 kernel/capability.c 237 kernel/dma.c 240 kernel
7、/exec_do.c 241 kernel/exit.c 242 kernel/fork.c 248kernel/info.c 255 kernel/itimer.c 255 kernel/kmod.c 257 kernel/module.c 259 kernel/panic.c 270kernel/prk.c 271 kernel/sched.c 275 kernel/signal.c 295 kernel/softirq.c 307 kernel/sys.c 307kernel/sysctl.c 318 kernel/time.c 330 mm/memory.c 335 mm/mlock.
8、c 345 mm/mmap.c 348mm/mprotect.c 358 mm/mremap.c 361 mm/page_alloc.c 363 mm/page_io.c 368 mm/slab.c 372mm/swap.c 394 mm/swap_state.c 395 mm/swapfile.c 398 mm/vmalloc.c 406 mm/vmscan.c 409 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 第 2
9、 部分 Linux 内核源代码分析 第1章 Linux 介绍 让用户很详细地了解大多数现有操作系统实际工作方式是不可能大多数操作系统源代码都是严格保密除了些研究用及为操作系统教学而设计系统外尽管研究和教学目都很好但是这类系统很少能够通过对正式操作系统小部分实现来体现操作系统实际功能对于操作系统些特殊问题这种折衷系统所能够表现就更是少得可怜了 在以实际使用为目标操作系统中让任何人都可以自由获取系统源代码无论目是要了解、学习还是改进这样现实系统并不多本书主题就是这些少数操作系统中个:Linux Linux工作方式类似于 Uinx它是免费源代码也是开放符合标准规范标准32位( 在64位CPU 上是6
10、4位) 操作系统 Linux 拥有现代操作系统所具有内容例如: * 真正抢先式多任务处理支持多用户 * 内存保护 * 虚拟内存 * 支持对称多处理机SMP(symmetric multiprocessing)即多个 CPU 机器以及通常单 CPU(UP) 机器 * 符合POSIX 标准 * 联网 * 图形用户接口和桌面环境 ( 实际上桌面环境并不只个) * 速度和稳定性 严格说来 Linux 并不是个完整操作系统当我们在安装通常所说 Linux 时我们实际安装是很多工具集合这些工具协同工作以组成个功能强大实用系统Linux 本身只是这个操作系统内核是操作系统心脏、灵魂、指挥中心( 整个系统应该
11、称为 GNU/Linux其原因在本章后续内容中将会给以介绍 ) 内核以独占方式执行最底层任务保证系统正常运行协调多个并发进程管理进程使用内存使它们相互的间不产生冲突满足进程访问磁盘请求等等 在本书中我们给大家揭示就是Linux 是如何完成这具有挑战性工作 1.1 Linux和Unix简明历史 为了让大家对本书所讨论内容有更清楚了解让我们先来简要回顾下Linux 历史由于 Linux 是在Unix基础上发展而来我们话题就从Unix开始 Unix 是由AT&T 贝尔实验室 KenThompson 和Dennis Ritchie于1969年在台已经废弃了 PDP-7 上开发;它最初是个用汇编语言写成
12、单用户操作系统不久 Thompson 和Ritchie 成功地说服管理部门为他们购买更新机器以便该开发小组可以实现个文本处理系统Unix就在PDP-11 上用C语言重新编写 ( 发明C语言部分目就在于此 ) 它果真变成了个文本处理系统不久的后只不过问题是他们先实现了个操作系统而已 最终他们实现了该文本处理工具而且Unix( 以及Unix上运行工具) 也在AT&T 得到广泛应用在 1973年Thompson 和Ritchie 在个操作系统会议上就这个系统发表了篇论文该论文引起了学术界对 Unix系统极大兴趣 由于1956年反托拉斯法案限制 AT&T 不能涉足计算机业务但允许它象征性地收取费用发售
13、该系统就这样Unix被广泛发布首先是学术科研用户后来又扩展到政府和商业用户 伯克利加州大学是学术用户中个在这里Unix得到了计算机系统研究小组(CSRG) 广泛应用并且在这里所进行修改引发了Unix大系列这就是广为人知伯克利软件Software 开发(BSD)Unix除了AT&T 所提供 Unix系列的外 BSD 是最有影响力Unix系列BSD 在Unix中增加了很多显著特性例如TCP/IP网络更好用户文件系统 (UFS)工作控制并且改进了AT&T 内存管理代码 多年以来 BSD 版本Unix直在学术环境中占据主导地位但最终发展成为 V版本AT&TUnix 则成为商业领域领头羊从某种程度上来说
14、这是有社会原因: 学校倾向于使用非正式但通常更好用BSD 风格Unix而商业界则倾向于从 AT&T 获取Unix 在用户需求和用户编程改进特性促进下BSD 风格Unix般要比 AT&TUnix 更具有创新性而且改进也更为迅速但是在AT&T 发布最后个正式版本 V Release 4(SVR4) 时 V Unix 已经吸收了 BSD 大多数重要优点并且还增加了些自己优势这部分由于从1984年开始 AT&T 逐渐可以将 Unix商业化而伯克利 Unix开发工作在 1993年BSD4.4 版本完成以后就逐渐收缩以至终止了然而BSD 进步改进由外界开发者延续下来到今天还在继续进行正在进行 Unix系列
15、开发中至少有 4 个独立版本是直接起源于BSD4.4 这还不包括几个厂商 Unix版本例如惠普 HP-UX 都是部分地或者全部基于BSD 而发展起来 实际上 Unix变种并不止 BSD 和 V由于Unix主要使用 C语言来编写这就使得它移植到新机器上相对比较容易它简单性也使其重新设计和开发相对比较容易Unix这些特点名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 大受商业界硬件供应商欢迎比如Sun、SGI、HP 、IBM、DE
16、C 、Amdahl等等; IBM还不止次对 Unix进行了再开发厂商们设计开发出新硬件并简单地将Unix移植到新硬件上这样新硬件经发布便具备定功能经过段时间的后这些厂商都拥有了自己专有Unix版本而且为了占有市场这些版本故意以区别侧重点发布出来以更好地占有用户版本混乱状态促进了标准化工作进行其中最主要就是POSIX 系列标准它定义了套标准操作系统接口和工具从理论上说 POSIX 标准代码很容易移植到任何遵守POSIX 标准操作系统中而且严格POSIX 测试已经把这种理论上可移植性转化为现实直到今天几乎所有正式操作系统都以支持POSIX 标准为目标 现在让我们回顾下在 1984年杰出电脑黑客 R
17、ichard Stallman独立开发出个类 Unix操作系统该操作系统具有完全内核、开发工具和终端用户应用在GNU( “GNU 誷 Not Unix ”首字母缩写 ) 计划配合下 Stallman 开发这个产品有自己技术理想: 他想开发出个质量高而且自由操作系统Stallman 使用了“自由” (free)这个词不仅意味着用户可以免费获取软件Software ;而且更重要是它将意味着某种程度“解放”: 用户可以自由使用、拷贝、查询、重用、修改甚至是分发这份软件 Software 完全没有软件 Software 使用限制这也正是 Stallman 创建自由软件 Software 基金会 (FS
18、F)资助GNU 软件Software 开发本意 (FSF也在资助其他科研方面开发工作) 15 年来GNU 工程已经吸收、产生了大量这不仅包括 Emacs 、gcc(GNUC 编译器 ) 、bash(shell 命令) 还有大部分 Linux 用户所熟知许多应用现在正在进行开发项目是 GNU Hurd 内核这是 GNU 操作系统最后个主要部件( 实际上 Hurd内核早已能够使用了不过当前版本号为0.3 系统在什么时候能够完成还是未知数) 尽管Linux 大受欢迎但是 Hurd内核还在继续开发原因有几个方面其是Hurd体系结构十分清晰地体现了Stallman 有关操作系统工作方式思想例如在运行期间
19、任何用户都可以部分地改变或替换Hurd(这种替换不是对每个用户都是可见而是只对申请修改用户可见而且还必须符合规范标准) 另个原因是据介绍 Hurd对于多处理器支持比 Linux 本身内核要好还有个简单原因是兴趣驱动员们希望能够自由地进行自己所喜欢工作只要有人希望为Hurd工作Hurd开发就不会停止如果他们能够如愿以偿Hurd有朝日将成为 Linux 强劲对手不过在今天 Linux 还是自由内核王国里无可争议统治者 在GNU 发展中期也就是 1991年个名叫 Linus Torvalds芬兰大学生想要了解Intel 新CPU 80386他认为比较好学习思路方法是自己编写个操作系统内核出于这种目加
20、上他对当时Unix变种版本对于 80386类机器脆弱支持十分不满他决定要开发出个全功能、支持POSIX 标准、类 Unix操作系统内核该系统吸收了 BSD 和 V优点同时摒弃了它们缺点Linus( 虽然我知道我应该称他为Torvalds 但是所有人都称他为Linus) 独立把这个内核开发到 0.02版这个版本已经可以运行gcc、bash和很少些应用这些就是他开始全部工作了后来他又开始在因特网上寻求广泛帮助 不到 3 年LinusUnix Linux 已经升级到 1.0 版本它源代码量也呈指数形式增长实现了基本 TCP/IP功能( 网络部分代码后来重写过而且还可能会再次重写) 此时Linux 就
21、已经拥有大约10万用户了 现在Linux 内核由 150多万行代码组成 Linux 也已经拥有了大约 1000万用户 ( 由于Linux 可以自由获取和拷贝获取具体统计数字是不可能)Linux 内核GNU/Linux附同GNU 工具已经占据了 Unix 50%市场些公司正在把内核和些应用同安装软件Software 打包在起生产出 Linux 发行版本这些公司包括 Red Hat和Caldera 公司现在GNU/Linux已经备受瞩目得到了诸如Sun、IBM、SGI等公司广泛支持 SGI最近决定在其基于 IntelMerced 系列机器上不再搭载自己 Unix变种版本 IRIX而是直接采用 GN
22、U/Linux;Linux 甚至被指定为 Amiga将要发布新操作系统基础 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 1.2 GNU 通用公共许可证 这样个如此流行操作系统当然值得我们学习按照通用公共许可证(GPLGeneralPublic License)规定Linux 源代码可以自由获取这满足了我们学习该系统强烈愿望GPL 这份非同寻常软件Software 许可证充分体现了上面提到Stallman 思想: 只要用户所
23、做修改是同等自由用户可以自由地使用、拷贝、查询、重用、修改甚至重新发布这个软件Software 通过这种方式 GPL 保证了 Linux( 以及同许可证保证下大量其他软件 Software) 不仅现在自由可用而且以后经过任何修改的后都仍然可以自由使用 请注意这里自由并不是说没有人靠这个软件 Software 盈利有些日益兴起公司比如发行最流行Linux 发行版本 Red Hat就是个例子 (RedHat自从上市以来市值已经突破数十亿美元每年盈利数十万美元而且这些数字还在不断增长) 但是任何人都不能限制其他用户涉足本软件Software 领域而且所做修改不能减少其自由程度 本书附录 B中收录了
24、GNU 通用公共许可证全文 1.3 Linux 开发过程 如上所述由于 Linux 是个自由软件 Software 它可以免费获取以供学习研究Linux 的所以值得学习研究是它是相当优秀操作系统如果Linux 操作系统相当糟糕那它就根本不值得我们使用也就没有必要去研究相关书籍 Linux 是个十分优秀操作系统还在于几个相互关联原因 原因的在于它是基于天才思想开发而成在学生时代就开始推动整个系统开发Linus Torvalds是个天才他才能不仅展现在编程能力方面而且组织窍门技巧也相当杰出 Linux 内核是由世界上些最优秀员开发并不断完善他们通过Internet相互协作开发理想操作系统;他们享受
25、着工作中乐趣而且也获得了充分自豪感 Linux 优秀另外个原因在于它是基于组优秀概念Unix是个简单却非常优秀模型在 Linux 创建的前 Unix已经有 20年发展历史 Linux 从Unix各个流派中不断吸取成功经验模仿Unix优点抛弃Unix缺点这样做结果是 Linux 成为了 Unix系列中佼佼者 : 高速、健壮、完整而且抛弃了历史包袱 然而Linux 最强大生命力还在于其公开开发过程每个人都可以自由获取内核源每个人都可以对源加以修改而后他人也可以自由获取你修改后源如果你发现了缺陷你可以对它进行修正而不用去乞求不知名公司来为你修正如果你有什么最优化或者新特点创意你也可以直接在系统中增加
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Linux操作系统源代码详细分析 2022 Linux 操作系统 源代码 详细 分析
限制150内