《Linux内核分析》课程总结

电子科大Linux内核技术课程 电子科大Linux内核技术课程。 立即下载

朱宇轲 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

不知不觉,在网易云课堂上追了两个多月的课程《Linux内核分析》就要告一段落了。在课程即将结束的时刻,我想将这八周的课程串起来,进行一个简单的总结,同时讲一讲自己上这门课的感悟和体会,以期再接再厉,继往开来。

每一周的视频,我都认真看过,并完成了测验,撰写了相关的博客,下面首先进行简单的回顾和总结:

第一周:从一段代码的汇编看计算机的工作原理

第二周:一个简单的时间片轮转多通道程序内核

第三周:从Linux内核代码分析操作系统启动过程

第四周:由一段代码解析系统调用原理

第五周:分析system_call中断处理过程

第六周:Linux进程启动过程简析

第七周:linux装载可执行程序简析

第八周:Linux进程切换代码分析

第一周老师介绍了计算机的基础架构:冯诺依曼架构,CPU将内存中的代码和数据读取到自己的寄存器中,再根据一条条命令调用寄存器进行进一步的操作;同时,老师对基础的汇编语言语法进行了讲解。第二周则是第一周的延伸,在课上老师讲解了一个基于C和汇编语言的程序,实现了时间片轮转多通道程序的功能,我也亲自体验了一遍上下文保存、切换、代码跳转的具体实现。

第三周,老师带我们分析了linux启动的过程,我们亲眼目睹了第一个进程的创建和idle进程的循环,对操作系统的启动过程有了更深入的了解。

第四和第五周,深入到了系统调用这个linux内核中一个重要的模块里,我们了解了系统调用的“三层皮”(API、中断向量、中断服务程序);通过汇编实现一个系统调用,认识了int 0x80的作用(这应该是我印象最深刻的一句汇编代码,O(∩_∩)O哈哈~);通过深入追踪sys_call系统调用的内核代码,我们对系统调用的具体实现有了更为深入的理解。(感谢老师提供的简化汇编代码,大大方便了我分析的工作ORz)

第六、七、八周则是分别分析了Linux内核的三个具体功能模块:进程创建、可执行程序装载、进程上下文切换,尤其注意fork这个比较特殊的系统调用,它具有“一次调用,两次返回”的特点,这是和linux中一般的进程不一样的地方。

在第八周的最后,老师对linux系统的架构和执行过程进行了总结,简单来说,用户态进程位于内存的0~3G空间中, 内核代码则位于内存3G以上的部分,如同大(cang)舞(lao)女(shi)一样任由用户态进程公共地使用。在进程由用户态陷入内核态或者进程间切换之前,都要进行上下文的保存,以便返回时回复之前的环境。

linux系统架构镇楼

/*---------------------------------------------我是萌萌的分割线,咿呀咿呀呦-----------------------------------------*/

我是一名西电大四的学生,如今已经保送浙江大学CAD实验室,即将开始自己的研究生生涯。本科期间,我们也上过操作系统之类的课程,但课上老师对操作系统的讲解偏于理论,很少涉及操作系统具体的实现,以至于我一直对操作系统的实现细节一头雾水。而通过学习这门课,我一方面复习了本科时所学习的操作系统概念,更重要的是,通过分析linux系统的内核代码,我初窥操作系统内核编程的门径,对操作系统各种功能的具体实现,如进程创建、切换、操作系统启动都有了更为深入的认识和理解,这就是我上这门课最大的收获。

上完这门课之后,我想重新捧起本科时操作系统课程的教科书《现代操作系统》,认真地再看一遍书中后面探讨各种操作系统实现细节的章节(我们本科时只讲了理论部分,后面没讲);有机会的话,希望深入钻研操作系统架构,参考《三十天自制操作系统》、《Orange S:一个操作系统的实现》等书自己实现一个小型的操作系统,毕竟操作系统的知识对于以后的上研、工作还是很有帮助的。

说起遗憾,主要是这门课开设期间正好也是我本科毕业设计时间,我每天忙于毕业设计,晚上10点多从实验室回到宿舍后才能开始课程的学习,很多时候包括做作业都搞得比较仓促,有一次甚至忘了提交作业(TAT),感觉自己对课上老师讲解的知识点还是有待进一步消化。课程已经结束,自己研究生阶段会继续关注这一领域,不断提升自己在这一方面的专业技能。

另外,我觉得老师这门课没有讲文件系统这个linux内核的大头实在是有点遗憾,如果以后开课的话,希望能将这个模块纳入课程的讲解中。

这就是我在这门课期间的总结,感谢网易云课堂和孟宁老师提供了这个学习的机会,也祝云课堂平台越办越好,孟老师家庭生活幸福美满,事业步步高升!

路漫漫其修远兮,吾将上下而求索!

linux内核视频教程全套 非常详细的linux内核视频教程,比较健全,适合入门到精通。 立即下载

相关推荐

《操作系统原理及应用(Linux)》-王红-电子教案-

《操作系统原理及应用(Linux)》-王红-电子教案-2912 《操作系统原理及应用(Linux)》-王红-电子教案-2912

Linux内核编程:入门篇

Linux内核一直是学习的难点:将近3000万行代码,5万多个源文件,代码庞大繁杂、代码很难看懂。《Linux内核编程》将突破以往传统的学习方式,采取更有效和科学的学习方法,多角度地对内核进行多层次分析,不局限于形式,不拘泥细节,目的只有一个:更轻松、更高效地去理解内核、学习内核。为了更好地让学员掌握内核编程技能,更好地理解内核,本课程将采用并不局限于以下学习方法进行课程的录制:降维分析,化简为繁,将复杂的系统简单化用软件工程的方法分析内核:软件分层、模块化分解、框架迭代多角度立体分析Linux内核,目的只有一个:更好地理解内核利用Linux内核中的面向对象编程思想去分析复杂的子系统、子系统交互利用多任务编程的思想去分析Linux内核本套课程预计分为20个左右的小模块,每个模块一个专题,每个专题会陆续发布。拟录制的模块包括但不限于:模块机制、内核裁剪与配置、内核编译与启动、系统调用、中断、文件系统、调度、内存管理、内核同步、设备模型、字符驱动、块驱动、定时器、input、platform设备驱动、device tree、proc、sysfs、I/O...  本课程是《Linux内核编程》的入门篇,主要给大家介绍一下Linux内核开发、Linux驱动开发的就业行情、行业生态、需要掌握哪些技能、Linux内核的学习方法、如何搭建Linux内核的学习开发环境。 

【数学建模】 进化计算与群体智能

遗传算法(GA)是一种用于优化和搜索问题的启发式算法。它模拟了自然选择的过程,其中个体通过遗传和变异进行繁殖,逐渐进化出更优的解。基本步骤初始化:生成初始种群。适应度评估:评估种群中每个个体的适应度。选择:根据适应度选择个体进行繁殖。交叉:选定个体对进行基因交换,生成新的后代。变异:对一些个体进行基因变异,以增加多样性。迭代:重复评估和繁殖过程,直至达到停止条件。粒子群优化算法(PSO)是一种基于群体智能的优化算法,由Kennedy和Eberhart于1995年提出。其灵感来源于鸟群觅食的行为。

weixin_42914989的博客 1113

linux内核课,Linux内核技术实战课

此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。download:Linux内核技术实战课这里可能新建组:#groupadd group及groupadd adm增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/g...

weixin_35691715的博客 2298

服务器卡死排查实战:从现象分类到根因定位的完整手册

服务器卡死是运维中最令人头疼的故障之一,从游戏圈吐槽的“土豆服务器”到生产环境中的Linux系统无响应、rsync复制挂起,本质都是系统或进程失去正常响应能力。其原理通常涉及CPU、内存、磁盘IO或网络资源耗尽,以及内核和驱动异常。掌握系统化的排查方法,能够帮助工程师快速定位根因、缩短故障时间,避免盲目重启。本文从资源、层级、场景等多维度分类,结合top、dmesg、strace等工具,梳理一套从现象确认、指标收集、日志分析到进程定位的实战排查流程,并覆盖常见高频场景与预防治理建议。无论你是运维新手还是老手

weixin_33851177的博客 374

【论文阅读】High-Resolution Image Synthesis with Latent Diffusion Models

为了降低训练扩散模型的算力,LDMs使用一个Autoencoder去学习能尽量表达原始image space的低维空间表达(latent embedding),大大减少需要的算力。在RGB空间:编码器encoder:,将x压缩成低维表示解码器decoder: D,将低维表示z还原成原始图像空间。1. 加入Autoencoder(上图中左侧红色部分),使得扩散过程在latent space下,提高图像生成的效率;

weixin_57974242的博客 1万+

猴子也能看懂的Linux内核知识图谱:从零开始,全面深入

想象一下,你的电脑是一台复杂的机器,它有许多不同的部件,如CPU、内存、硬盘等。这些硬件设备需要一种方式来协同工作,以执行你想要的任务,比如打开网页浏览器或播放音乐。这就是Linux内核的作用——它是操作系统的核心部分,负责管理和协调所有这些硬件资源,并为应用程序提供一个稳定的运行环境。内核定义:内核是操作系统中最底层的部分,介于用户程序和硬件之间。它充当两者之间的桥梁,确保每个程序都能安全地访问所需的资源。开源特性。

极客代码 1520

Qt思岚激光雷达

Qt关于思岚激光雷达研究示例,本示例采用qt界面开发,可以串口也可以tcp进行设备连接。接收数据进行相关的数据进行绘图, 这种雷达可以用于大屏触摸场景,会场互动触摸场景开发。 #ifndef MAINWIDGET_H #define MAINWIDGET_H #include <QTimer> #include <QWidget> #include "lidarmgr.h" namespace Ui { class MainWidget; } class MainWidget.

cqltbe131421的博客 1596

Linux 内核编程(二)

话不多说,这里是一些简单的C 代码,实现了遵循 Linux 内核的 LKM 框架:出于可读性和空间限制的原因,这里只显示了源代码的关键部分。要查看完整的源代码,构建并运行它,本书的整个源树都可以在 GitHub 仓库中找到:github.com/PacktPublishing/Linux-Kernel-Programming。return 0;您可以立即尝试这个简单的内核模块!只需像这里显示的那样cd到正确的源目录,并获取我们的辅助lkm[...]如何和为什么。

龙哥盟 1976

ISO15118-20证书结构关系解读(7.3.2.1)

本文主要讲述ISO15118-20:2022标准所有证书结构的关联关系,目的是为后续基于ISO15118-20车桩通讯及PNC充电等提供基础支撑。 本文所有的证书关系图全部来源于ISO15118-20:2022标准规范,在后续的讲解过程会将图的摘取出处给提供出来,便于后期文章和标准对应起来解读。

weixin_40900932的博客 3181

本地搭建 GitLab 14.1.0版本CI/CD

GitLab 镜像版本 gitlab/gitlab-ce:14.1.0-ce.0 GitLab Runner 镜像版本 gitlab/gitlab-runner:v14.1.0 搭建此套环境是在一台32G的windows电脑上安装的。 使用dokcer安装。 此外还涉及的软件Docker Desktop,WSL 安装GitLab 首先启动 dockcer,打开WSL 打开后 首先定义GitLab的持久化目录 export GITLAB_HOME=/srv/gitlab 然后运行安装GitLab的命令

知无涯 4490

《操作系统及Linux内核》第一章——课程概述

一、操作系统定义、功能及特征 1.操作系统定义 操作系统(operating system,简称OS)是一个系统软件,它管理系统的软硬件资源,并为计算机程序提供服务。 2.操作系统的五大功能 操作系统接口:操作系统将硬件资源抽象为系统调用接口为上层程序提供服务 进程管理:进程的控制、调度、通信和同步 内存管理:内存分配、内存保护、地址映射和内存扩充,为多道程序同时进行提供良好环境 设备管理:设备分配,设备处理,缓冲管理 文件管理:存储空间管理,目录管理,读写管理,权限管理 3.操作系统的特征 并发性:

m0_56602092的博客 406

飞牛fnNAS搭建Web网页版OFFICE(WPS)软件

本文介绍了如何在飞牛NAS上通过Docker容器部署WPS Office办公软件。主要内容包括:启用Docker服务、准备项目文件夹结构、使用Compose方式构建容器、解决端口冲突问题、配置中文输入法和字体库,以及通过ZeroTier实现远程访问。文章详细说明了每个步骤的操作方法,包括容器启动、输入法设置、字体添加和文件存储位置配置。最后还介绍了使用ZeroTier内网穿透技术实现远程访问NAS上WPS服务的方法,让用户可以在不同设备上随时编辑NAS中的文件。整个部署过程完整清晰,为NAS用户提供了便捷的

dgnankai的专栏 1699

有关Linux内核分析课程的总结

程  序 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000             历时两个多月的Linux内核课程就要结束了,回顾这一段时间的学习历程,发现在不知不觉中已经学了不少东西,今天趁着这个机会进行一下总结。首先,我了解了什么是Linux系统,Linux系统是一款功能强大的操作系统

p222p的博客 673

【YOLOv11改进- 主干网络】YOLOv11+RepViT: 从ViT的角度重新审视Mobile的CNN助力YOLOv11有效涨点;

本文给大家带来的改进内容是在YOLOv11中更换主干网络为RepViT,助力YOLOv11有效涨点,论文通过集成轻量级 ViT 的高效架构设计,逐步增强了标准轻量级 CNN(即 MobileNetV3)的移动友好性。这最终产生了一个新的纯轻量级 CNN 系列的主干网络。

qq_41304809的博客 785

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Linux内核分析课程总结

Linux内核分析课程总结 By 20135203齐岳 知识梳理 (思维导图地址http://mindmap.4ye.me/mkxM0cFh/1) 从start _ kernel构造一个新的Linux内核开始,0号进程rest _ init创建了1号进程kernel _ init从而启动Linux内核,这个过程的中心思想其实一直贯穿在Linux内核操作系统之中。1号进程通过复制PCB创...

231

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Linux内核分析之课程总结

SA16225055冯金明    原创作品转载请注明出处  《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 时间的力量还是伟大的,课程终归是要结束了(不用再写博客啦!),要不是课程实验的要求,可能一年不能写到7篇博客的,同时估计一年Linux内核代码也看不了多少的!先简单贴一下各个博客的链接的:

Kimi_ming的博客 487

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

linux 内核分析 课程,《Linux内核分析》课程第1次作业

网易云课堂《Linux内核分析》第1次作业要求:根据本周所学知识分析汇编代码的工作过程,撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) +原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000”,博客内容的具体要求如下:题目自拟,内容围绕计算机是如何工作的进行;博...

weixin_42444974的博客 170

【课程总结】Linux内核分析课程总结

程涵 原创博客 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 每周实验报告: 反汇编一个简单的C程序http://www.cnblogs.com/ClareOhno/p/5223874.html 操作系统是如何工作的http://www.cnblogs.com/ClareOh...

aashao137666的博客 229

Linux内核分析课程期中总结

Linux内核分析课程期中总结 姓名:王朝宪 学号:20135114 注:原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一、计算机是如何工作的 个人理解:计算机就是通过和用户进行交互,执行用户的指令,这些指令存放在内存中,通过寄存器存储,堆栈变化,来一步步顺序执行。...

weixin_30247781的博客 203

Linux内核分析课程考试主观题

郭孟琦 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实践!C语言是怎么变成汇编的 http://blog.youkuaiyun.com/ocorecode/article/details/44134937 一个超简单的系统内核  http://blog.youkuaiyun.com/

oCoreCode的专栏 772
上一篇: 和菜鸟一起学linux内核源码之基础准备篇
下一篇: Zephyr OS 开发极速入门
csshuke
博客等级 码龄16年 1517粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值