20169217 《Linux内核原理与分析》 课程总结

博客链接:

第一周作业

摘要:学习了实验楼linux基础入门课程。

第二周作业

摘要:实验楼实验一:反汇编一个简单的程序。
书《linux内核设计与实现》:第1章,第2章,第18章内容。

第三周作业

摘要:自己对于为何要学习linux的感想。

第四周作业

摘要:实验二:分析精简内核源代码mymain.c和myinterrupt.c

书上第2章和第5章内容。

第五周作业

摘要:使用gdb跟踪调试内核从start_kernel到init进程启动

书上第4章和第6章内容。

第六周作业

摘要:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用write。

书上第7章和第8章内容。

第七周作业

摘要:分析system_call中断处理过程

书上第9章和第10章内容。

第八周作业

摘要:分析fork函数对应的内核处理过程sys_clone、理解创建一个新进程如何创建和修改task_struct数据结构

书上第11章和第12章内容。

第九周作业

摘要:Linux内核如何装载和启动一个可执行程和理解进程调度时机跟踪分析进程调度与进程切换的过程

书上第13章和第14章内容。

第十周作业

摘要: 理解Linux系统中进程调度的时机

书上第15章和第16章内容。

第十一周作业

摘要:shellshock漏洞实验。

书上第17章,第19章和第20章内容。

第十二周作业

摘要:return to libc实验

课程收获与不足:

全面学习了linux操作系统,包括基础操作和内核调试等,并且发现通过写博客学习是一个很好的方式。

不足是因为从零学起,所以很多东西理解的不是很透彻。

给学弟学妹的建议:

学习这门课程要有一个长期学习的过程,并且需要有较强的自学能力。

给老师的建议:

希望老师对于关键点多做讲解,全面的自学对我来说有些难度。

时间: 2024-12-05 15:03:54

20169217 《Linux内核原理与分析》 课程总结的相关文章

20169217 linux内核原理与分析 第四周作业

本次作业仍然分为两部分,第一部分为实验. 如实验楼的实验过程所述:使用实验楼的虚拟机打开shell,然后cd mykernel 您可以看到qemu窗口输出的内容的代码mymain.c和myinterrupt.c. 代码如下: cd LinuxKernel/linux-3.9.4  qemu -kernel arch/x86/boot/bzImage 实验截图如下: 通过观察我们会发现my_start_kernel和my_timer_handler快速的交替执行. 接下来查看mymain.c和my

《Linux内核原理与分析》教学进程

目录 2019-2020-1 <Linux内核原理与分析>教学进程 考核方案 第一周: 第二周: 第三周: 第四周: 第五周 第六周 第七周: 第八周 第九周 第十周 第十一周: 第十二周 第十三周 2019-2020-1 <Linux内核原理与分析>教学进程 考核方案 采取过程化考核,平时成绩占100分,成绩计算:30+30+15+25=100: 翻转课堂基础考核10次: 3*10 = 30 每次考试20-30道题目,考试成绩规格化成3分(比如总分30分就除以10) 翻转课堂测试

20169217 《Linux内核原理与分析》 第十一周作业

首先更新一下第一次实验关于堆栈的分析,这里我直接手写拍的图片. 这里再补充一点,第5步的call f 实际上等于 pushl %eip,movl f %eip,也就是将f的eip地址压栈,call g原理相同.leave等于movl %ebp,%esp,popl %ebp 也就是将ebp出栈,epb指向自己所存储值的栈,再将ebp的值付给esp,实现栈的释放.   接下来是实验: 2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在

20169217《Linux内核原理与分析》第二周作业

通过第二周的学习,我想把我的博客分为两部分,第一部分是实验楼linux内核分析实验一的实验报告,第二部分是看书第1,2,18章的内容和时间情况. 现在先说实验一 实验内容:将一段c语言程序反汇编成汇编程序. c语言程序代码:应实验要求我把其中部分数值进行了修改. int g(int x) { return x+6; } int f(int x) { return g(x); } int main(void) { return f(9)+3; } 实验过程: 首先创建一个main.c文件 将刚刚修

2017-2018-1 20179203 《Linux内核原理与分析》第八周作业

攥写人:李鹏举 学号:20179203 ( 原创作品转载请注明出处) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ) 一.实验要求: 1.理解编译链接的过程和ELF可执行文件格式,详细内容参考本周第一节: 2.编程使用exec*库函数加载一个可执行文件,动态链接分为可执行程序装载时动态链接和运行时动态链接,编程练习动态链接库的这两种使用方式,详细内容参考本周第二节: 3.使用gdb跟踪分析一个

2017-2018-1 20179203 《Linux内核原理与分析》第九周作业

攥写人:李鹏举 学号:20179203 ( 原创作品转载请注明出处) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ) 一.实验要求: 1.理解Linux系统中进程调度的时机,可以在内核代码中搜索schedule()函数,看都是哪里调用了schedule(),判断我们课程内容中的总结是否准确: 2.使用gdb跟踪分析一个schedule()函数 ,验证您对Linux系统进程调度与进程切换过程的理

2017-2018-1 20179209《Linux内核原理与分析》第八周作业

Linux内核如何装载和启动一个可执行程 一.实验 1.1理解编译链接的过程和ELF可执行文件格式. 1.1.1编译链接过程 能用图说明的问题,就少用文字描述: 1.1.2ELF可执行文件 ELF可执行文件中有三种主要的目标文件: 一个可重定位文件保存着代码和适当的数据,用来和其他的object文件一起创建一个可执行文件或者是一个共享文件.主要是.o文件. 一个可执行文件保存着一个用来执行的程勋:该文件指出了exec如何创建程序进程映像. 一个共享object文件保存着代码和合适地数据,用来被下

2017-2018-1 20179202《Linux内核原理与分析》第八周作业

一 .可执行程序的装载 1. 预处理.编译.链接 gcc –e –o hello.cpp hello.c //预处理 gcc -x cpp-output -S -o hello.s hello.cpp //编译 gcc -x assembler -c hello.s -o hello.o-m32 //汇编 gcc -o hello hello.o //链接成可执行文件,使用共享库 用gcc -o hello.static hello.o -static静态编译出来的hello.static把C库

2017-2018-1 20179202《Linux内核原理与分析》第九周作业

进程的切换和系统的一般执行过程 1.知识总结 (1)进程调度的时机: 中断处理过程直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(). 内核线程是一个特殊的进程,只有内核态没有用户态,可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度(内核线程可以直接访问内核函数,所以不会发生系统调用).内核线程作为一类的特殊的进程可以主动调度,也可以被动调度. 用户态进程无法实现主动调度,仅能在中断处理过程中进行调度(schedul