摘要:
周子轩 原创作品转载注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 笔记: 冯诺依曼体系结构的核心思想是存储程序计算机。在计算机中有两种指令,一是用户指令,一是系统调用。 Linux是一个基于POSIX和U 阅读全文
摘要:
第四章 进程调度 一、多任务 1、多任务操作系统:就是能同时并发地交互执行多个进程的操作系统。能使多个进程处于堵塞或者睡眠状态。 2、多任务系统可以划分为两个:非抢占式多任务和抢占式多任务。 3、抢占:强制的挂起。 进程的时间片:指进程在被抢占之前能够运行的时间。 让步:进程主动挂起自己的操作。 二 阅读全文
摘要:
周子轩 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用gdb跟踪分析一个schedule()函数,理解Linux系统中进程调度的时机。 实验过程: 登陆实验楼虚拟机http: 阅读全文
摘要:
《深入理解计算机系统》第七章 链接 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行。 链接可以执行于编译时,也就是在源代码被翻译成机器代码时;也可以执行于加载时,也就是在程序被加载器加载到存储器并执行时;甚至执行于运行时,由应用程序来执行。 阅读全文
摘要:
一、理论知识 Linux中,可以从c源代码生产一个可执行程序,这其中要经过预处理、编译和链接的过程。可以参考以下图来理解这个过程: 其中,目标文件中至少有编译后的机器指令代码、数据,也还包括了链接时所须要的一些信息,比如符号表、调试信息、字符串等。这Linux中,可执行文件的格式现在主要是ELF格式 阅读全文
摘要:
第三章 进程管理 3.1 进程 进程就是处于执行期的程序(目标码存放在某种存储介质上),但进程并不仅仅局限于一段可执行程序代码。通常进程还要包含其他资源,像打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间及一个或多个执行线程。当然还包括用来存放全局变量的数据段等 阅读全文
摘要:
第18章 调试 调试工作艰难是内核级开发区别于用户级开发的一个显著特点,相比于用户级开发,内核调试的难度确实要艰苦得多。更可怕的是,它带来的风险比用户级别更高,内核的一个错误往往立刻就能让系统崩溃。 驾驭内核调试的能力(当然,最终是为了能够成功地开发内核)很大程度上取决于经验和对整个操作系统的把握。 阅读全文
摘要:
周子轩 原创作品 转载请注明出处 《Linux内核分析》MOOC课程:http://mooc.study.163.com/course/USTC-1000029000 一、视频笔记 1. 进程描述符 task_struct 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解 阅读全文
摘要:
中间层 提供机制而不是策略 最重要的检查:用户提供的指针是否有效。 两个方法检查在两空间之间数据的来回拷贝 以上方法存在问题: 检查是否有合法权限——capable():返回0无权,返回非0有权。 在很多情况下不方便、不容易、难维护、难使用甚至会大材小用 代替方法 1.什么是syscall? 2.s 阅读全文
摘要:
周子轩 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一、学习总结 通过gdb我们可以给系统调用内核处里程序如sys_write, sys_time设置断点,并让程序停在断点处,进行断点跟踪 阅读全文