Linux内核分析课程笔记(一)】的更多相关文章

linux内核分析课程笔记(一) 冯诺依曼体系结构 冯诺依曼体系结构实际上就是存储程序计算机. 从两个层面来讲: 从硬件的角度来看,冯诺依曼体系结构逻辑上可以抽象成CPU和内存,通过总线相连.CPU上有一些寄存器,IP(Instruction Pointer)是一个指针,总是指向内存的某一块区域CS(Code Segment),CPU即从IP指向的地址取一条指令进行执行,执行完之后IP自增1,加到下一条指令(逻辑意义上的1,因为有些指令系统是变长指令) 从程序员的角度来看,存储程序计算机.CPU…
运行一个精简的操作系统内核 存储程序计算机是几乎所有计算机的基础逻辑框架. 堆栈是计算机中非常基础的东西,在最早计算机没有高级语言时,在高级语言出现之前,我们没有函数的概念.但高级语言出现后有了函数调用后,堆栈就显得非常重要了. 堆栈 堆栈式C语言运行时必须记录的一个记录调用路径和参数的空间: 函数调用框架 传递参数 保存返回地址 提供局部变量空间 32位x86是使用堆栈传递参数,64位的稍有不同. C语言编译器对堆栈的使用有一套的规则,不同的指令序列也可能实现相同的功能,所以在Linux上反汇…
Linux内核分析课程总结 By 20135203齐岳 知识梳理 (思维导图地址http://mindmap.4ye.me/mkxM0cFh/1) 从start _ kernel构造一个新的Linux内核开始,0号进程rest _ init创建了1号进程kernel _ init从而启动Linux内核,这个过程的中心思想其实一直贯穿在Linux内核操作系统之中.1号进程通过复制PCB创建出更多的进程:当进程无法满足功能时就编写自定义的可执行程序,装载这些可执行程序的过程其实就是进程创建的一个变形…
Linux内核分析课程期中总结 姓名:王朝宪 学号:20135114 注: 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机是如何工作的 个人理解:计算机就是通过和用户进行交互,执行用户的指令,这些指令存放在内存中,通过寄存器存储,堆栈变化,来一步步顺序执行. 二.存储程序计算机工作模型 1.冯诺依曼体系结构—存储程序计算机 硬件角度(主板):通过cpu中IP寄存器指向一个…
Linux内核分析 链接汇总 Linux内核分析第一周学习总结--计算机是如何工作的 Linux内核分析第二周学习总结--操作系统是如何工作的 Linux内核分析第三周学习总结--构造一个简单的Linux系统MenuOS Linux内核分析第四周学习总结--扒开应用系统的三层皮(上) Linux内核分析第五周学习总结--扒开应用系统的三层皮(下) Linux内核分析第六周学习总结--进程的描述和进程的创建 Linux内核分析第七周学习总结--可执行程序的装载 Linux内核分析第八周学习总结--…
程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 每周实验报告: 反汇编一个简单的C程序http://www.cnblogs.com/ClareOhno/p/5223874.html 操作系统是如何工作的http://www.cnblogs.com/ClareOhno/p/5248098.html 跟踪分析Linux内核的启动过程http://www.cnblogs.com/ClareOhno/…
第一章 Linux内核简介 1.1 Unix的历史 Unix很简洁,仅仅提供几百个系统调用并且有一个非常明确的设计目的. 在Unix中,所有东西都被当做文件,这种抽象使对数据和对设备的操作是通过一套相同的系统调用接口来进行的:open().read().write().lseek().close(). Unix的内核和相关的系统工具软件都是使用C语言编写而成,使其在各种硬件体系架构面前都具备令人惊异的移植能力. Unix进程创建非常迅速,并且有一个独特的fork()系统调用. Unix提供了一套…
chapter 4 进程调度 4.1 多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统. 多任务系统可以划分为两类: - 非抢占式多任务: - 进程会一直执行直到自己主动停止运行(这一步骤称为让步) - 抢占式多任务: - Linux/Unix使用的是抢占式的方式:强制的挂起进程的动作就叫做抢占.进程在被抢占之前能够运行的时间是预先设置好的(也就是进程的时间片) 4.2 linux的进程调度 O(1)调度器:对大服务器的工作负载很理想,但是缺少交互进程. 反转楼梯最后期限调度算法…
第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的效果. 4.1 多任务 1.多任务操作系统就是能同时并发地交互执行多个进程的操作系统.无论在单处理或者多处理器机器上,多任务操作系统都能使多个进程处于拥塞或者睡眠状态,也就是实际上不被投入执行,直到工作确实就绪. 2.多任务系统可以划分为两类:非抢占式多任务和抢占…
第七章 链接 1.链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储器并执行. 2.链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于加载时,也就是在程序被加载器加载到存储器并执行时:甚至执行于运行时,由应用程序来执行.在早期的计算机系统中,链接是手动执行的.在现代系统中,链接是由叫链接器的自动执行的. 3.那么为什么还要这么麻烦地学习关于链接的知识呢? 理解链接器将帮助构造大型程序 理解链接器将帮助避免一些危险的编程错误 理解链…
第三章 进程管理 3.1 进程 1.进程: 进程就是处于执行期的程序. 进程就是正在执行的程序代码的实时结果. 进程是处于执行期的程序以及相关的资源的总称. 进程包括代码段和其他资源. 2.线程:执行线程,简称线程,是在进程中活动的对象. 内核调度的对象是线程而不是进程. Linux对线程并不特别区分,视其为特殊的进程. 3.在现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存.包含在同一个进程中的线程可以共享虚拟内存,但是每个都拥有各自的虚拟处理器. 4.几个函数 fork():创建新…
第十八章 调试 18.1 准备开始 1. 需要的只是: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 2. 在跟踪bug的时候,掌握的信息越多越好. 18.2 内核中的bug 1. 内核bug多种多样,产生的原因有很多:从错误代码(没有把正确的值存放在恰当的位置):到同步时发生的错误(共享变量锁定不当):再到错误的管理硬件(给错误的控制寄存器发送错误的指令). 2. 从降低所有程序的运行性能到毁坏数据再到使得系统处于死锁状态都可能是bug发作时的症状. 3. 从隐藏在源代码中的…
第五章 系统调用 5.1 与内核通信 1.调用在用户空间进程和硬件设备之间添加了一个中间层.该层主要作用有三个: 为用户空间提供了硬件的抽象接口. 系统调用保证了系统的稳定和安全. 实现多任务和虚拟内存,保证良好的稳定性和安全性. 2.系统调用是用户空间访问内核的唯一手段:除异常和陷入外,是内核唯一合法的入口. 5.2 API.POSIX和C库 1.情况下,应用程序通过在用户空间实现的应用编程接口(API)而不是直接通过系统调用来编程. 2.C库提供了POSIX的绝大部分API. 5.3 系统调…
Linux内核分析 期中总结 20135307 张嘉琪 一.Linux内核分析课程总结 学习笔记汇总 第一节 计算机是如何工作的 第二节 操作系统是如何工作的 第三节 构造一个简单的Linux系统MenuOS 第四节 扒开系统调用的三层皮(上) 第五节 扒开系统调用的三层皮(下) 第六节 进程的描述和进程的创建 第七节 可执行程序的装载 第八节 进程的切换和一般的执行过程 理解计算机是如何工作的 根据冯诺依曼体系结构计算机可从硬件和软件两个角度进行分析,硬件部分较为复杂,不仅有CPU还有各种存储…
益西拉姆+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第一周linux内核分析 学习笔记 一.计算机是如何工作的? 什么是冯诺依曼体系结构? 简单来讲就是存储程序计算机,而存储程序计算机又是指从硬件角度来看, X86汇编基础 学习笔记 详细内容都写在笔记中.再次不多说. 总结:以前一直搞不太懂汇编代码,学的不明不白,虽然现在也是学的不是太明白,至少知道了各个代码什么意思,以及该如何表现,这让我觉得老师的课时…
<Linux内核分析>第八周学习笔记 进程的切换和系统的一般执行过程 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时40分钟 实验时间:1小时35分钟 撰写博客时间:2小时40分钟] [学习内容:进程切换.Linux系统的一般执行过程.Linux系统架构] 一.进程切换的关键代码switch_to分析 1.1 进程调度与进程调度的时机分析 操作系…
<Linux内核分析>第七周学习笔记 可执行程序的装载 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时35分钟 实验时间:1小时 撰写博客时间:2小时40分钟] [学习内容:共享库和动态链接.exec系统调用的执行过程.可执行程序的装载] 一.预处理.编译.链接和目标文件的格式 1.1 可执行程序如何得来? 过程: C源代码(.c)经过编译器预处…
<Linux内核分析>第六周学习笔记 进程的描述和创建 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时 撰写博客时间:2小时] [学习内容:进程创建的过程.使用gdb跟踪分析内核处理函数sys_clone] 一.进程的描述 1.1 进程描述符task_struct数据结构(一) 1. 进程控制块PCB——task_struct 为了管理进程,内核…
<Linux内核分析>第五周学习笔记 扒开系统调用的三层皮(下) 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给MenuOS增加time和time-asm命令 1. 通过内核的方式(跟踪调试系统调用)来理解并使用系统调用. rm menu -rf //强制删除当前menu git clone http://github.com/mengning/menu.git…
姓名:何伟钦 学号:20135223 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 学习内容:通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 第一部分:视频教学笔记总结 一.存储程序计算机 冯诺依曼体系结构概念:即具有存储程序计算机的体系结构,大多数拥有计算和存储功能的设备(手机.平板.计算机等)其核心构造均为冯诺依曼体系结构 冯诺依曼体系结构工作…
姓名:何伟钦 学号:20135223 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 学习内容:操作系统是如何工作的 第一部分:教学笔记总结 一.计算机是如何工作的(总结)——三个法宝 (一)存储程序计算机工作模型,计算机系统最最基础性的逻辑结构. (二)中断机制,多道程序操作系统的基点,没有中断机制程序只能从头一直运行结束才有可能开始运行其他程序. (三)函数调…
姓名:何伟钦 学号:20135223 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 学习内容:构造一个简单的Linux系统MenuOS 第一部分:网上课程笔记 一.Linux内核源码主要结构简介 (一)内核源代码页面         .arch目录:在Linux内核源代码里占有的比重很大,因为Linux内核支持很多的体系结构,而arch目录是支持不同的CPU的源…
<Linux内核分析>第一周学习笔记 计算机是如何工作的 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1. 存储程序计算机工作模型 1.1 冯诺依曼体系结构 冯诺依曼体系结构,即具有存储程序的计算机的体系结构.超级计算机都可以用这种体系描述. 1.2 存储程序计算机工作模型 从硬件上看:CPU与内存之间由总线连接,CPU中一个关键寄存器IP(在16位CPU中叫IP,…
<Linux内核分析>第二周学习笔记 操作系统是如何工作的 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1. 前言 计算机是如何工作的? 三个法宝: 存储程序计算机:所有计算机基础性的逻辑框架. 堆栈:高级语言的起点,函数调用需要堆栈机制. 中断机制:多道系统的基础,是计算机效率提升的关键. 2. 函数调用堆栈 2.1 堆栈 堆栈是C语言程序运行时必须的一个记录调用…
<Linux内核分析>第三周学习笔记 构造一个简单的Linux系统MenuOS 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内核源代码简介 1.1 Linux内核源代码 arch:支持不同的CPU的源代码,其中的关键目录包括:Documentation.drivers.firewall.fs.include等 documentation:文档目录 fs…
<Linux内核分析>第四周学习笔记 扒开系统调用的三层皮(上) 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.用户态.内核态和中断 用户态.内核态和中断处理过程 1. 通过库函数完成系统调用:库函数将系统调用封装起来. 2. 用户态与内核态 内核态:一般现代CPU有几种指令执行级别.在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别对应…
linux内核分析第五周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给MenuOS增加time和time-asm命令 把menu删除: rm menu -rf 强制删除 重新克隆一个新的Menu: 进入Menu,用makerootfs自动编译生成根文件系统,同时还自动启动MenuOS 增加了两个命令:time和time_a…
linux内核分析第四周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 # 上周回顾: installing 如何安装内核源代码 make mrproper 清理安装时生成的中间代码 启动Linux内核的三个参数: kernel initrd root所在分区.目录 gdb (gdb)file linux-3.18.6/vmlin…
linux内核分析第三周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 # 构造一个简单的Linux系统MenuOS 上周回顾: 计算机三大法宝 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑 中断上下文的切换 进程上下文的切换 Linux内核源码简介 我们关注的部分 arch/x86目录下的代码 init/main.c中s…
linux内核分析第二周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.函数调用堆栈 1.1小结 三把宝剑: 存储程序计算机 函数调用堆栈 中断机制 1.2堆栈 堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间 函数条用框架 传递参数 保存返回地址 提供局部变量空间 C代码中嵌入汇编代码的写法 0. 内嵌汇编语法 as…