<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…
<Linux内核分析>第五周学习总结                                  ——扒开系统调用的三层皮(下) 姓名:王玮怡 学号:20135116 1.给menuOS增加getpid和getid-asm命令 (1)进入实验楼环境,使用rm menu -rf指令强制删除已有的内核,使用git clone https://github.com/mengning/menu.git重新克隆一个最新的内核. (2)进入menu,找到test.c文件,将getpid和getpid…
扒开系统调用的三层皮(下) 郝智宇 无转载 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给MenuOS增加time和time-asm命令 把menu删除: 重新克隆一个新的Menu: 进入Menu,用make rootfs自动编译生成根文件系统,同时还自动启动MenuOS 增加了两个命令:time和time_asm,说明扩展了功能. 二.使用gdb跟踪系统调用内核函数sys_time 1.一直按n单步执…
[李行之原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] <Linux内核分析> 第五周 PART ONE 实验过程 1.在MenusOS中增加time和time-asm命令 更新menu代码到最新版本(删除当前版本重新下载): 在main函数中增加MenuConfig ; 增加对应的time和time-asm函数 make rootfs(自动编译) 实验截图: (1)在m…
<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系统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内核分析>第八周学习总结                                      ——进程的切换和系统的一般执行过程 姓名:王玮怡  学号:20135116 一.理论部分总结 (一)进程切换的关键代码switch_to的分析 1.进程调度与进程调度的时机分析 (1)调度策略 调度策略是一组规则,它们决定什么时候以怎样的方式选择一个新进程运行,无论何种策略,都是从运行队列中选出一个进程作为next来执行,Linux内核中的调度算法相关代码使用了类似OOD中的策略模式…
<Linux内核分析>第七周学习总结                         ——可执行程序的装载 姓名:王玮怡  学号:20135116 一.理论部分总结 (一)可执行程序的装载 1.预处理.编译.链接和目标文件的格式 C代码经过编译器的预处理(.cpp),然后编译成汇编代码(.asm/.s),由汇编器成目标代码(.o,二进制文件),再链接成可执行文件,最后由操作系统加载到内存中执行. 预处理:编译器将C源代码中包含的头文件编译进来和执行宏替换等工作 gcc -E hello.c -…
<Linux内核分析>第六周学习总结                         ——进程的描述和进程的创建 姓名:王玮怡  学号:20135116 一.理论部分 (一)进程的描述 1.进程描述符task_stuck数据结构(一) 操作系统三大功能:进程管理(核心).内存管理.文件系统 PCB task_struct中包含:进程状态.进程打开的文件.进程优先级信息 进程控制块PCB——进程描述符task_stuck提供了内核所需了解的进程信息 Linux进程状态转换图: 2.进程描述符ta…
<Linux内核分析>第三周学习报告                                    ——构造一个简单的Linux系统MenuOS 姓名:王玮怡  学号:20135116 第一节 Linux内核源代码简介 Linux内核源代码(重点关注arch/x86目录下的代码) 1.linux-3.18.6/init中存储很多内核启动相关的代码,其中main.c中的代码为整个内核启动的起点 2.main.c中,start_kernel函数相当于普通C程序的main函数,内核开始初始化…
[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK FIVE(3.21——3.27)扒开系统调用的“三层皮”(下) SECTION 1 给MenusOS增加time和time-asm命令 1.操作步骤 进入实验楼 首先,强制(即 -rf命令)删除当前的menu 克隆一个新的menu(其中已经含有time了).但是通过实践以及查询,实验楼中对连入外网进行了限制,所以在实验…
20135103王海宁 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 这周的实验在上周实验四的基础上,进一步的操作:1.将系统调用函数getpid命令加入menuos中2.通过gdb跟踪sys_getpid系统调用执行的完整过程 步骤:给MenuOS增加getpid和getpid-asm命令0)更新menu代码到最新版1)在main函数中增加MenuConfig2)增加对应的getpid函数和getpid-a…
郝智宇 无转载 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第三周 构造一个简单的Linux系统MenuOS 一.Linux内核源代码简介 三个法宝和两把宝剑: (1)       三个法宝:存储程序计算机.函数调用堆栈.终断 (2)       操作系统的两把宝剑:中断上下文的切换(保存现场和恢复现场).进程上下文的切换 arch/x86目录下的代码是我们重点关注的 init目录:内核启动相关的代码基本都…
进程的描述和进程的创建 一.进程的描述 进程描述符task_struct数据结构: (1)操作系统的三大功能: 进程管理.内存管理.文件系统 (2)进程的作用: 将信号.进程间通信.内存管理和文件系统联系起来 (3)进程控制块PCB——task_struct数据结构 提供了内核需要了解的信息 (4)task_struct结构庞大,有400多行代码.包含了进程状态.内核堆栈等相关信息的定义. (5)Linux的进程和操作系统原理中描述的进程状态有所不同,实际内核中,就绪和运行状态都用TASK_RU…
实验 分析system_call中断处理过程 使用gdb跟踪分析一个系统调用内核函数(您上周选择那一个系统调用),系统调用列表参见http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl ,推荐在实验楼Linux虚拟机环境下完成实验. 根据本周所学知识分析系统调用的过程,从system_call开始到iret结束之间的整个过程,并画出简要准确的流程图,撰写一篇署名博客,并在博客文章中注明"真实姓…
第七周.可执行程序的装载 一.可执行程序是如何产生的? (1).c文件gcc汇编形成.s和.asm汇编代码: (2)汇编代码经过gas变成.o目标文件: (3)目标文件变成可执行文件: (4)可执行文件loader之后存储. 预处理:gcc –E –o hello.cpp hello.c –m32 编译:gcc –x cpp-output –S –o hello.s hello.cpp –m32 //编译为汇编代码 gcc –x assembler –c hello.s –o hello.o –…
扒开系统调用的三层皮(下) 一.给menuOS增加time和time-asm 通过内核调试系统调用.将上次做的实验加入到menusOS,变成menusOS里面的两个命令. 1 int Getpid(int argc , char * argv[]) 2{ 3 int pid; 4 pid=getpid(); 5 printf("pid=%d\n",pid); 6 return 0; 7 } 8 9 int Getpidasm(int argc , char *argv[]) 10 {…
系统调用的三个层次(下) 一.给MenuOS增加time和time-asm命令 1.克隆并自动编译 MenuOS rm menu -rf 强制删除原menu文件 git clone https://github.com/mengning/menu.git      从github中克隆 cd menu make rootfs 运行自动编译脚本,生成根文件系统,启动MenuOS 2.给MenuOS增加time和time-asm命令 更新menu代码到最新版 test.c中main函数里 增加Men…
进程的切换和系统的一般执行过程 一.进程调度的三个时机: 1.中断处理过程(包括时钟中断.I/O中断.系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(): 2.内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度: 3.用户态进程无法实现主动调度,仅能通过陷入内核态后的某个时机点进行调度,即在中断处理过程中进行调度. 二.swi…
系统调用的三层皮(下) 一.给MenuOs增加time和time-asm命令 ls rm menu -rf git clone xx(克隆新版本) cd menu make rootfs(自动编译生成根文件系统) help version time time asm vi time.c(增加了time,tim-asm:0)更新menu代码到最新版:1)在main函数中增加menuconfig:2)增加对应的time函数和timeasm函数)3)make rootfs 二.使用gdb跟踪系统调用内…
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内核分析课程笔记(一) 冯诺依曼体系结构 冯诺依曼体系结构实际上就是存储程序计算机. 从两个层面来讲: 从硬件的角度来看,冯诺依曼体系结构逻辑上可以抽象成CPU和内存,通过总线相连.CPU上有一些寄存器,IP(Instruction Pointer)是一个指针,总是指向内存的某一块区域CS(Code Segment),CPU即从IP指向的地址取一条指令进行执行,执行完之后IP自增1,加到下一条指令(逻辑意义上的1,因为有些指令系统是变长指令) 从程序员的角度来看,存储程序计算机.CPU…
<Linux内核分析>第八周 PART ONE 知识点总结 一.进程切换的关键代码switch_to 1.进程调度与进程调度的时机 (1)进程分类: I/O型(执行块,频繁) CPU型(大量的计算) (2)调度策略:什么时候选择以怎样的方式执行新进程 (3)Linux中的优先级是动态的,Linux进程根据优先级排队 (4)进程调度的时机 中断处理过程(包括时钟中断.I/O中断.系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule…
<Linux内核分析> 第6周 一.进程的描述 1.进程控制块PCB 2.linux下的进程转化图 TASK_RUNNING可以是就绪态或者执行态,具体取决于系统调用 TASK_ZOMBIE僵尸进程(终止的进程) 3.进程描述符task_struct task_struct是一个数据结构,数据结构庞大: pid:进程标识值,一个int型数值 进程链表struct list_head tasks,数据结构如下: 它是一个双向链表,用来把当前所有进程用链表连起来 进程描述符中有几个域表示父子关系…
<Linux内核分析> 第五节 扒开系统调用的三层皮(下) 20135307 一.给MenusOS增加time和time-asm命令 给MenuOS增加time和time-asm命令需要 更新menu代码 在main函数中增加menuconfig 增加对应的time和timeasm函数 make rootfs 二.使用GDB跟踪系统调用内核函数sys_time 实验报告 分析system_call中断处理过程 使用gdb跟踪分析一个系统调用内核函数(您上周选择那一个系统调用),系统调用列表参见…
姓名:何伟钦 学号:20135223 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 内容:1.使用gdb跟踪分析一个系统调用内核函数 2.根据本周所学知识分析系统调用的过程,从system_call开始到iret结束之间的整个过程,并画出简要准确的流程图 一.给MenuOS增加time和time-asm命令 (一) 克隆并自动编译MenuOS rm menu -…
Linux内核分析 链接汇总 Linux内核分析第一周学习总结--计算机是如何工作的 Linux内核分析第二周学习总结--操作系统是如何工作的 Linux内核分析第三周学习总结--构造一个简单的Linux系统MenuOS Linux内核分析第四周学习总结--扒开应用系统的三层皮(上) Linux内核分析第五周学习总结--扒开应用系统的三层皮(下) Linux内核分析第六周学习总结--进程的描述和进程的创建 Linux内核分析第七周学习总结--可执行程序的装载 Linux内核分析第八周学习总结--…