首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核学习(一)之Linux内核源码目录

我们今天文章分享不是拿最新版本来作为学习,往往在刚开始学习时候,都会拿比较经典linux版本来作为入门学习,入门了后,后面版本学习就好办了。...linux版本下载: 网站网址:http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/ 然后就可以按照自己需求来下载学习了,这里我在...这个文件就是linux内核特有的内核编译体系需要用到文件 MAINTAINERS:这个文件主要是介绍了维护人员列表以及如何提交内核更改 Makefile:这个是linux内核总makefile,整个内核工程用这个...init:init是初始化意思,这个目录下代码就是linux内核启动时初始化内核代码。...tools:linux中用到一些有用工具 usr:目录下是initramfs相关,和linux内核启动有关 virt:内核虚拟机相关 小结:大家看了这么文件目录,不要吓到了(要选择性学习),跟我们关系很紧密就是

10.7K51

Linux内核学习(一)

前言: 大家好,今天给大家分享一下我个人学习Linux内核总结,由于新内核版本太过于庞大,说实话,啃不动,然借鉴前人建议,故开始从早期Linux0.11版本开始学习。...,所以就变复杂起来了: 2.6内核版本目录 上面内核版本源码可以从下面下载: 在线浏览早期内核源码: http://lxr.linux.no/linux-old 0.11版本内核源码下载: https...://github.com/KrisJiaqiXie/linux_kernel_study 好了,下面我开始大体先讲述linux内核整体框架图: 一、操作系统框架: 在我们平时或多或少都接触到不同操作系统...,他们整体框架是差不多,我们先从大体框架来看,若要学习某个系统,再去探其细节: 操作系统结构框架: 操作系统结构 有了这个大体认识后,我们来看一下这里操作系统服务层: 这里你可以把它看作是一个快递中转站...0.11版本Linux内核组成: 在0.11版本Linux,它主要是由五个模块组成: 进程调度模块 进程间通信模块 内存管理模块 文件系统模块 网络接口模块 图片参考Linux内核0.11完全注释

1K10
您找到你想要的搜索结果了吗?
是的
没有找到

Linux内核修炼之道》 之 高效学习Linux内核

这本书如果对您有用,乃我之幸事,如果无用,就在此先诚惶诚恐向大家拜个不是了。 在6月份做过一次《高效学习Linux内核presentation,下面是前面的一部分内容及讲义,或许对大家有用吧。...就像我们任志强先生前阵子演讲卖房子 方法时,就因为太像一场忽悠,从而被听众扔了鞋。 接下来我就通过自己一些感悟,抛砖引玉来介绍一下如何比较高效学习 linux 内核。...意思就是我们在学习内核前首先要会用 linux ,依照一个由上至下循序渐进过程,在能够熟练使用 Linux 操作系统之后再去研究内核实现。这也是 linus 本人观点。...第三句是依照四个层次进行内核学习。笛卡儿在 17 世纪某一天,闲极无聊写了这么一本书,书名就叫《方法论》,在这本目前来说绝大部分人都不知道书里将方法上升到了理论高度。...对于学习这种复杂事情来说,无论是我们在学校课堂学习,还是这里说内核学习,它效果好与坏,最主要取决于两个方面:一个是学习方法,另一个就是学习心理。

9.9K30

Linux内核学习之路

正是这本书, 促使我继续学习Linux内核。 以我当时水平(其实现在水平也不高), 看《Android系统源代码情景分析》这本书真是太难了, 很多讲都是Linux内核相关东西。...因为看不懂, 所以下定决心好好学习Linux内核。...其实学习继续Linux内核也不只是为了深入学习android, 毕竟操作系统基础知识对于一个程序员是至关重要, 趁年轻时候大点基础, 修炼一下内功, 可能会在以后走轻松些。...但是我还会继续学习, 继续读《Linux内核源代码情景分析》, 继续读《深入理解Linux内核》, 继续读《深入Linux内核架构》。...其实关于Linux内核知识, 早就想写一写了, 无奈腹中空空, 水平有限, 确实写不出来。 写到这里, 我目前所走Linux学习之路就写完了。

40230

学习方法论

学生时代学习 作为一个已经走完十六年学生生涯的人,在我感受中,学生时代学习有三大任务: 1、学习知识; 2、考试升学; 3、学习学习学习知识作用之大毋庸置疑,知识是构建世界观基础。...学生时代,就是要快速积累知识,建立自己世界观;学习如何努力达到目标,学习如何在犯错之后纠正,学习遇到问题进行思考,学习如何进步;同时培养良好学习习惯与方法。...我学习方法论 关于学习方法论,我常用基本规律是:学习、思考、总结、分享/实践、回顾。...这是我毕业之后摸索出来,比较适合我学习方法。 我不再妄图通过学习“更好”学习方法,逃避学习过程带来痛苦,寻找前进捷径。 最重要是,我正在按照这个方法不断地学习知识。...对于每个岗位,我仅仅是了解工作所需信息,学习表面的技术知识,停滞在思考、总结这一层次,没有形成学习闭环,导致学习方向迷糊、学习方法低效、学习动力缺乏。

80950

Linux 内核通用链表学习小结

描述 在linux内核中封装了一个通用双向链表库,这个通用链表库有很好扩展性和封装性,它给我们提供了一个固定指针域结构体,我们在使用时候,只需要在我们定义数据域结构体中包含这个指针域结构体就可以了...传统链表结构 struct node{ int key; int val; node* prev; node* next; } linux 内核通用链表库结构 提供给我们指针域结构体...也是linux内核一个经典实现,这个在上面那篇链接文章里也有讲解 tmp_student = list_entry(pos,struct student,list); //打印一些信息...内核提供这个通用链表库里面还有很多其他接口,这里没有详细一一举例,有兴趣可以自己去看看,在源码包 include/linux/list.h 文件里面,不过通过阅读一些源代码确实对我们也有很大提高...以上就是本文全部内容,希望对大家学习有所帮助。

1.2K21

Linux内核基础学习笔记.md

Kernel是Linux系统重要组成部分,相当于是其心脏; 通过前面的学习内核升级我们知道Kernel包括以下几个软件包 kernel.x86_64 kernel-headers.x86_64 kernel-devel.x86...内核对外一个接口,当需要向内核提供兼容功能模块时,势必需要提供内核信息所以在安装驱动时候它是必须; 2) Kernel-devel : 包含Linux内核完整源代码还有内核配置文件,以及其他开发用资料...Linux内核(任何基于linux操作系统核心。)...kernel-ml # 主线 mainline; Linux内核(任何基于linux操作系统核心。)...问:Unix多线程实现方式? 答:有三种方式即fork 和 exec 以及 clone 方式,我们再学习Linux编程中学到; fork生成当前进程一个相同副本,该副本称之为子进程。

1.6K20

Linux内核学习经验总结

开篇 学习内核,每个人都有自己学习方法,仁者见仁智者见智。以下是我在学习过程中总结出来东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下。 内核学习,一偏之见;疏漏难免,恳请指正。...根据自己学习经验,刚开始学习内核时候,我认为要做是在自己脑海中建立起内核大体框架,理解各个子系统设计理念和构建思想,这些理念和思想会从宏观上呈献给你清晰脉络,就像一个去除了枝枝叶叶大树主干...《深入理解linux虚拟内存》(2.4内核版本),LDD3,《深入理解linux网络技术内幕》,几乎每一个子系统都需要一本书容量去讲解,所以说,刚开始学习不宜对某个模块太过深入,等对各个子系统都有所了解了...内核相当复杂,学习起来很不容易,但是当你学习到一定程度,你会发现,如果自己打算写内核代码,到最后要关注仍然是API接口,只不过这些API绝大部分是跨平台,满足可移植性。...the Linux Kernel 3rd PLKA          Professional Linux Kernel Architecture UML            User Mode Linux

89120

Linux 内核学习经验总结

来源:Linux爱好者 ID:LinuxHub 开篇 学习内核,每个人都有自己学习方法,仁者见仁智者见智。以下是我在学习过程中总结出来东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下。...内核学习,一偏之见;疏漏难免,恳请指正。...根据自己学习经验,刚开始学习内核时候,我认为要做是在自己脑海中建立起内核大体框架,理解各个子系统设计理念和构建思想,这些理念和思想会从宏观上呈献给你清晰脉络,就像一个去除了枝枝叶叶大树主干...《深入理解linux虚拟内存》(2.4内核版本),LDD3,《深入理解linux网络技术内幕》,几乎每一个子系统都需要一本书容量去讲解,所以说,刚开始学习不宜对某个模块太过深入,等对各个子系统都有所了解了...内核相当复杂,学习起来很不容易,但是当你学习到一定程度,你会发现,如果自己打算写内核代码,到最后要关注仍然是API接口,只不过这些API绝大部分是跨平台,满足可移植性。

2K21

Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本内核源码 ; 5.x 内核源码下载地址...: https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ Linux 内核 5.6.18 版本 : https://mirrors.edge.kernel.org...参考 【错误记录】解压 Linux 内核报错 ( Can not create symbolic link : 客户端没有所需特权 | Windows 中配置 7z 命令行执行解压操作 ) 博客 ;...不同版本 Linux 内核 区别 : 系统调用 : 其系统调用是相同 , 新版本可能会增加新系统调用 ; 设备文件 : 各内核版本设备文件都是相同 , 但是 内部接口 可能不同 ; 二、使用

23.2K32

查看linux版本内核 Linux内核版本变化

linux内核 linux内核版本号格式  major.minor.patch-build.desc   1、major:表示主版本号,有结构性变化时才变更。   ...Linux内核版本变化 自从1991年9月17日,Linus Torvals正式宣布了 Linux第一个正式版本—0.02版本,到现在,Linux内核版本发生了一系列变化,新旧版本之间时间间隔是几个月甚至几个星期...从Linux诞生开始,Linux内核就从来没有停止过升级,从Linus第一次发布0.02版本到1999年具有里程碑意义2.2版本,一直到我们现在看到2.4版本,都凝聚了Linux内核开发人员大量辛苦劳动...现在Linux内核里已经开始了这方面的支持。...4.小内核 · 内核本来就很小:Linux整个内核源代码大概需要占用20多MB硬盘空间,但是编译出来二进制代码只占用600KB左右空间,完全可以放在一张软盘上,随时可以使用这张软盘将系统启动

22.1K20

Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本内核源码 ; 5.x 内核源码下载地址...参考 【错误记录】解压 Linux 内核报错 ( Can not create symbolic link : 客户端没有所需特权 | Windows 中配置 7z 命令行执行解压操作 ) 博客 ;...不同版本 Linux 内核 区别 : 系统调用 : 其系统调用是相同 , 新版本可能会增加新系统调用 ; 设备文件 : 各内核版本设备文件都是相同 , 但是 内部接口 可能不同 ; 二、使用...按钮 , 此时就可以在 VSCode 中阅读 Linux 内核源码 ;

21.2K30

Linux内核同步原理学习笔记

要做到对共享资源恰当保护是很困难。 a.linux2.0以前时代 在多年前,linux还没有支持对称多处理器SMP时候,避免并发数据访问相对简单。...b.linux2.0以后时代 从2.0开始,linux开始支持SMP. 此时如果不加保护,运行在两个不同处理器上内核代码完全可能在同一时刻并发访问共享数据。...到2.6时,linux已经发展成抢占式内核, 在不加保护时候,调度程序可以在任何时刻抢占正在运行内核代码,重新调度其他进程运行。...linux内核中最常见锁是自旋锁(spin lock)。 自旋锁最多只能被一个可执行线程持有,等待锁进程采用忙循环等待(只针对smp)。 因为忙循环很消耗处理器时间,所以自旋锁不能被长时间持有。...#include struct rw_semaphore; (9)completion机制 在内核编程中常见一种模式是: 在当前线程之外初始化某个活动,然后等待该活动结束

1.2K20

linux内核编程_linux内核是什么

内核——操作系统内在核心 设备驱动程序 启动引导程序 命令行shell 其他种类用户界面—-操作系统外在表象 基本文件管理工具和系统工具 Linux内核组成 Linux内核源代码目录结构是什么...Linux 每个进程享有4GB内存空间,0~3GB属于用户空间,3~4GB属于内核空间 虚拟文件系统有什么作用?...只能通过系统调用和硬件中断完成 Linux内核编译及加载 内核配置系统由哪既部分组成? Makefile:分布在Linux 内核源代码中Makefile,定义Linux 内核编译规则。...记录哪些部分被编译入内核、哪些部分被编译为内核模块。 在Linux 内核中增加程序需要完成哪些工作? 将编写源代码复制到Linux 内核源代码相应目录。...次引导加载程序加载Linux内核和可选初始RAM 磁盘,将控制权交给Linux内核源代码。 运行被加载内核,并启动用户空间应用程序。

18.8K30

干货 | Linux 内核学习经验总结

1 学习内核,每个人都有自己学习方法,仁者见仁智者见智。以下是我在学习过程中总结出来东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下。 内核学习,一偏之见;疏漏难免,恳请指正。...根据自己学习经验,刚开始学习内核时候,我认为要做是在自己脑海中建立起内核大体框架,理解各个子系统设计理念和构建思想,这些理念和思想会从宏观上呈现给你清晰脉络,就像一个去除了枝枝叶叶大树主干...比如说,内核各个子系统之间交互和引用在代码中体现就是实现函数穿插调用,比如你在内存管理章节学习内存分配和释放函数,而你是了解内存在先,在学习驱动或者模块时候就会碰到这些函数调用,这样也就比较容易接受...《深入理解linux虚拟内存》(2.4内核版本),LDD3,《深入理解linux网络技术内幕》,几乎每一个子系统都需要一本书容量去讲解,所以说,刚开始学习不宜对某个模块太过深入,等对各个子系统都有所了解了...内核相当复杂,学习起来很不容易,但是当你学习到一定程度,你会发现,如果自己打算写内核代码,到最后要关注仍然是API接口,只不过这些API绝大部分是跨平台,满足可移植性。

62970

linux内核学习(三)之init进程学习(上)

大家周末好,今天给大家继续分享linux内核学习。...上次讲解到linux内核启动分析前期准备,还没有去分析linux内核具体启动分析过程,这里我换一种方式来分享,在linux启动后,linux系统接下来会如何进行工作?...然后再反过来具体分析linux内核启动过程,启动过程会设计到一些汇编语言,以及这个时候去具体分析c语言代码的话,就真正考验c语言功底时候到了;同时c语言基本功,大家可以去看我以前学习c语言一些常用...系统在启动后运行第一个进程(这里关于进程学习,可以去看我之前分享linux应用编程专辑,有很详细介绍);而init进程刚开始运行时候是内核态,它属于一个内核线程,然后他自己运行了一个用户态下面的程序后把自己强行转成了用户态...具体kernel_execve函数如下(这里赞不分析,暂时让大家理性感受一下第一次看linux内核代码感受,这里主要面向第一次接触linux代码小伙伴哦。)

1.4K20

LINUX内核

一、Linux内核2.6特点: 1.新调度器 2.内核抢占 3.改进线程模型 4.虚拟内存 5.文件系统 6.音频:音频体系结构ALSA.支持USB音频和MIDI设备,并支持全双工重放功能。...二、LINUX内核组成 1.LINUX内核源代码目录结构 1)arch:包含和硬件体系结构相关代码,每种平台占一个相应目录。如i386,arm,powerpc,mips等。...:头文件,与系统相关头文件放在include/Linux下。...模块 16)sound:ALSA,OSS音频中设备核心代码和常用设备驱动 17)usr:实现了用于打包和压缩CPIO等 2.LINUX内核组成部分 2.1 LINUX主要用进程调度,虚拟文件系统,...3.Linux内核空间与用户空间 Linux只能通过系统调用和硬件中断来完成用户空间到内核空间控制转移

13.9K30

Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )

文章目录 一、解压内核源码 二、查询当前 Linux 内核版本号 三、进入并查看 linux 内核源码目录 一、解压内核源码 ---- 将 下载 Linux 内核源码 linux-5.6.14.tar.gz...拷贝到 Ubuntu 虚拟机中 , 执行 tar xvf linux-5.6.14.tar.gz 命令 , 解压 Linux 内核源码 ; 解压完毕后 , linux-5.6.14 目录中就是解压后...Linux 内核源码 ; 二、查询当前 Linux 内核版本号 ---- 执行 uname -a 命令 , 查询当前 Ubuntu 系统 Linux 内核版本号 , 执行过程如下 : root@ubuntu...x86_64 x86_64 x86_64 GNU/Linux root@ubuntu:~/kernel# root@ubuntu:~/kernel# 当前内核版本号是 4.13.0 ; 三...、进入并查看 linux 内核源码目录 ---- 进入之前解压 linux-5.6.14 内核源码目录 ; root@ubuntu:~/kernel# ls linux-5.6.14 linux-5.6.14

86.7K60
领券