Linux内核课程小结

之前八次课的学习,于我而言算是Linux内核学习之路的开始吧,感觉现在的水平还欠火候,对于Linux这座冰山,还只能勉强看到一个角。趁着课程基础部分结束,做一个小结,既是对之前知识的复习,亦是鼓励自己在探索Linux内核的路上继续向前。

分析汇编代码理解计算机是如何工作的

由于之前信息安全课上对汇编语言的使用已经得心应手了,这节课学习起来便很是轻松。算是对汇编语言及一些基础知识做了一次复习。

理解操作系统是如何工作的之进程调度

这次课算是对C语言中的嵌入式汇编基本了解了,Mykernel实验的代码倒是挺简单的,虽然按照说明实验指导体验了一下,这个最精简版的内核。但是对于如何在Linux源码里打补丁,就能让这个小小的模拟内核跑起来的原理还是没有思路,希望以后可以通过自己的学习,解决这个疑惑。

跟踪分析Linux内核的启动过程

这节课中第一次开始用真实的Linux源代码进行学习,对于源代码的大致组成结构有了一定的了解,也对Linux中的“main函数”(start_kernel)进行了学习。

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

这次实验中选择了mkdir的系统调用,但是实现完之后发现一个问题,menuos 中没有实现ls命令,即使mkdir成功了,也只能通过程序的返回值观察到。刚想到这个问题时还傻傻的去查了下有没有ls对应的系统调用,后来觉得按照unix一切皆文件的设计哲学,应该要打开当前目录对应的文件从中读取,等以后文件系统学的差不多了再回来看看当时的想法。

使用gdb跟踪分析系统调用mkdir

gdb这个以前真的用的不多,那次老师检查让print 一个变量,然后问那个值为什么和之前设想的不一样,当时还真懵了,答不上来。原来就是gdb中显示的是下一个将要执行的语句,而不是刚刚执行过的语句。现在终于可以用gdb熟悉的调试程序了。

分析Linux内核创建一个新进程的过程

这次课开始就进入了困难模式了,最近事情又有点多,觉得有点跟不上这个节奏了,对于代码的阅读,看完之后没能在脑海里留下完整的印象。对于fork函数在底层是如何执行的有了更深刻的理解。

可执行程序的装载

之前对于执行一个程序的理解,也只是执行了一个程序,现在心里会不自觉的想到 exec如何调用sys_execve,然后调用do_execve,再调用do_execve_common把函数参数和系统环境传进来进行相应的处理。

进程切换和系统的一般执行过程

作为压轴的一课,老师竟然放大招了,请来了舞女来助兴,哈哈。最后那个ls的例子,对于理解Linux的一般执行过程还是还有帮助的

总结:

不得不承认,虽然很早就决定选这门课了,但是后来因为种种原因,还是没有完全掌握老师所讲的知识。但相信对于操作系统与Linux的系统的兴趣,会促使自己不断向一个又一个的高峰攀爬。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 可执行文件是怎么来的?(以C语言为例) C代码(.c) - 经过编译器预处理,编译成汇编代码(.asm) - 汇编...
    那只大象阅读 12,475评论 2 9
  • 姓名:吴兆阳 学号:14020199009 转自韦东山 嵌牛导读:对嵌入式初学者,没有足够的视野选择一个合适投入方...
    吴兆阳阅读 7,015评论 0 4
  • 首先来看一下在 C语言程序是如何经过处理变成可执行程序的: C代码(.c) - 经过编译器预处理,编译成汇编代码(...
    梅花小筑阅读 9,994评论 0 5
  • 突然又想写点东西,名字叫我管疯,你管食,重温一下济南风味。算了,快考试了,快去学习吧。。。。。。
    风蚀s阅读 962评论 0 0
  • 1. 最近我越来越痛恨“不好意思”这个词语。 我长这么大,尚未痛恨过什么东西,“不好意思”荣幸地成为其中一员。 百...
    步青城阅读 4,179评论 10 14