首页
学习
活动
专区
工具
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.5K51

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

这本书如果对您有用,乃我之幸事,如果无用,就在此先诚惶诚恐向大家拜个不是了。 在6月份做过一次《高效学习Linux内核presentation,下面是前面的一部分内容及讲义,或许对大家有用吧。...就像我们任志强先生前阵子演讲卖房子 方法时,就因为太像一场忽悠,从而被听众扔了鞋。 接下来我就通过自己一些感悟,抛砖引玉来介绍一下如何比较高效学习 linux 内核。...意思就是我们在学习内核前首先要会用 linux ,依照一个由上至下循序渐进过程,在能够熟练使用 Linux 操作系统之后再去研究内核实现。这也是 linus 本人观点。...对于学习这种复杂事情来说,无论是我们在学校课堂学习,还是这里说内核学习,它效果好与坏,最主要取决于两个方面:一个是学习方法,另一个就是学习心理。...应该说学习内核就是学习内核源代码,但是内核代码千千万,又到处像个迷宫一样,不迷路都很难,又怎么去直面它?

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

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

39330

linux命令行工具分类 Linux 学习方向

linux不同于Windows,它是一种开放源码电脑操作系统。现在全世界存在着很多不同Linux 版本,它们共同点是都使用了Linux 系统内核。...Linux 可以安装在各种计算机当中,平板手机和台式计算机都可以安装Linux 系统。linux命令行工具是可以使用在Linux 系统当中命令行。命令行更加直观而富有逻辑,便于对电脑系统操作。...linux学习方向 学习编程和语言的人都懂得使用linux命令行工具,学Linux 到底是要学些什么?可以做什么?首先学习Linux 可以维护Linux 服务器,也就是做运维人员。...其次可以开发Linux 应用或者程序,也就是软件开发。在初次学习时候会觉得枯燥乏味,但是学了一段时间之后就会发现命令行批量操作时如此方便简单。...以上就是linux命令行工具相关知识,Linux 包含计算机知识繁复庞杂,每一个学习阶段都应该踏实钻研,了解最基础命令行操作,然后再不断进深自己专业技巧。

1.1K20

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内核学习经验总结

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

88220

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爱好者 ID:LinuxHub 开篇 学习内核,每个人都有自己学习方法,仁者见仁智者见智。以下是我在学习过程中总结出来东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下。...内核学习,一偏之见;疏漏难免,恳请指正。...根据自己学习经验,刚开始学习内核时候,我认为要做是在自己脑海中建立起内核大体框架,理解各个子系统设计理念和构建思想,这些理念和思想会从宏观上呈献给你清晰脉络,就像一个去除了枝枝叶叶大树主干...《深入理解linux虚拟内存》(2.4内核版本),LDD3,《深入理解linux网络技术内幕》,几乎每一个子系统都需要一本书容量去讲解,所以说,刚开始学习不宜对某个模块太过深入,等对各个子系统都有所了解了...Linux,我兴趣,我动力,我方向,我未来!

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 内核 区别 : 系统调用 : 其系统调用是相同 , 新版本可能会增加新系统调用 ; 设备文件 : 各内核版本设备文件都是相同 , 但是 内部接口 可能不同 ; 二、使用

22.7K31

查看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左右空间,完全可以放在一张软盘上,随时可以使用这张软盘将系统启动

21.6K20

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 内核源码 ;

20.8K30

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.5K30

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

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

60970

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.8K30

Linux内核21-Linux内核中断处理过程

为了统一处理这些硬件,Linux内核使用了面向对象编程思想,构建了一个PIC对象,包含PIC名称和7个PIC标准方法。...因此,Linux2.6内核使用一个特定内核线程叫kirqd进行纠正IRQ自动分配(如果有必要的话)。...内核态堆栈 在学习标识进程时候,我们已经知道每个进程thread_info描述符和内核态堆栈使用一个联合体结构组合在一起,占用内存一个或者两个页帧,这取决于编译内核配置。...每个数组元素对应一个irq_ctx类型联合体,占用一个页帧。该页帧底部存储thread_info结构,其余内存存储堆栈;因为堆栈增长方向是递减。...总结 其实内核经过这么多年发展,在实现方式上已经发生了很大变化。但是其基本思想没变。比如我们以Linux4.4.203内核对于中断处理为例,与上面的处理过程进行比较,理解其主要变化。

2.1K20
领券