20135220谈愈敏Linux Book_17】的更多相关文章

第17章 设备与模块 关于设备驱动和设备管理的四种内核成分: 设备类型:在所有 Unix 系统中为了统一普通设备的操作所采用的分类. 模块: Linux 内核中用于按需加载和卸载目标码的机制. 内核对象:内核数据结构中支持面向对象的简单操作,还支持维护对象之间的父子关系. sysfs :表示系统中设备树的一个文件系统. 17.1 设备类型 设备三种类型: 块设备 通常缩写为 blkdev ,它是可寻址的,寻址以块为单位,块大小随设备不同而不同; 支持重定位(seeking )操作,也就是对数据的…
进程调度 进程:程序的运行态表现形式 进程调度程序:确保进程能有效工作的一个内核子系统,决定将哪个进程投入运行.何时运行以及运行多长时间,在可运行态进程之间分配有限的处理器时间资源. 最大限度的利用处理器时间的原则是只要有可执行的进程就总会有进程正在执行. 4.1 多任务 多任务操作系统:能同时并发的交互执行多个进程的操作系统.单处理器上是幻觉,多处理器上是多个进程真正在并行.很多进程在内存但是处于堵塞或睡眠状态,只有一个进程在运行. 多任务系统划分为两类: 抢占式多任务:有调度程序距诶的那个什…
第3章 进程管理 进程是Unix操作系统抽象概念中最基本的一种,进程管理是操作系统的心脏所在. 3.1 进程 进程:处于执行期的程序以及相关的资源的总称. 线程:在进程中活动的对象,拥有独立的程序计数器.进程栈和一组进程寄存器. 内核调度的对象是线程而不是进程. 存在包含多个线程的多线程程序 存在两个或多个不同进程执行同一程序,并且可以共享资源 现代操作系统中,进程提供两种虚拟机制: 虚拟存储器:给进程假象好像自己在独享处理器,实际是很多进程在分享一个处理器. 虚拟内存:让进程觉得自己拥有整个系…
第18章 调试 调试内核艰难且风险高,关键在于对内核的深刻理解. 18.1 准备开始 需要的是: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 内核中的bug不是很清晰,调试成功的关键点在于精确的重现一个bug. 18.2 内核中的bug 内核bug多种多样,表象也变化多端: 明白无误的错误代码 同步时发生的错误 错误管理硬件 降低程序运行性能 毁坏数据 使系统死锁 bug展现出来往往是经历一系列的连锁反应,内核调试没有特别难,但也有一些独特的问题:如定时限制和竞争条件,这些是…
第五章 系统调用 内核提供了用户进程与内核进行交互的一组接口. 应用程序发出请求->内核负责满足 目的:保证系统稳定可靠 5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层,其作用: 为用户空间提供一种硬件的抽象接口 保证系统稳定和安全 为了实现多任务和虚拟内存 系统调用是用户空间访问内核的唯一手段 5.2 API.POSIX和C库 应用程序通过应用编程接口API而不是系统调用来编程,且API并不和系统调用一一对应. API.POSIX.C库和系统调用之间的关系: POSI…
第一章 Linux内核简介 从unix的历史视角来认识Linux内核与Linux操作系统的前世今生. Unix历史 贝尔实验室设计的一个文件系统原型逐渐演化而成Unix,而后Unix操作系统用C语言重写,让Unix可以被广泛移植.这之后就是一路的创新,变种,Unix成为一个强大且稳定的操作系统. Unix特点 简洁:仅提供几百个系统调用并且有一个非常明确的设计目的 抽象:所有东西都被当做文件对待,对数据和设备的操作通过一套相同的系统调用接口来进行的. 广泛移植性:Unix内核和系统工具软件使用C…
构造一个简单的Linux系统MenuOS 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 Linux内核源代码 回顾: 计算机三大法宝 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑 中断上下文的切换 进程上下文的切换 Linux内核源代码简介 arch/x86目录下的代码是重点关注的 init目录:内核启动相关的代码基本都在init目录下 init/main.c中sta…
进程的切换和系统的一般执行过程 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一.进程切换的关键代码switch_to分析 进程调度与进程调度的时机分析 不同类型的进程有不同的调度需求 第一种分类: I/O-bound:频繁进行I/O,花费很长时间等待I/O CPU-bound:计算密集型,需要大量CPU时间进行计算 第二种分类: 批处理进程:不必交互.很快响应 实时进程:要…
可执行程序的装载 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一.预处理.编译.链接和目标文件的格式 可执行程序是怎么得来的? C代码 编译器预处理 编译成汇编代码 汇编器编译成目标代码 链接成可执行文件 操作系统加载到内存执行 举例说明: 目标文件的格式ELF 常见的目标文件格式: A.out -> COFF -> PE(windows)/ELF(linux)…
进程的描述和创建 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 进程的描述 操作系统的三大管理功能: 进程管理(最重要的) 内存管理 文件系统 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息. 进程控制块PCB task_struct: 进程状态 进程打开的文件 进程优先级信息 task_struct总体数据结构的抽象: tty:控制台…