文章目录 一、下载 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 内核 区别 : 系统调用 : 其系统调用是相同的 , 新的版本可能会增加新的系统调用 ; 设备文件 : 各内核版本的设备文件都是相同的 , 但是 内部接口 可能不同 ; 二、使用...Code ) 博客 , 安装 VSCode 软件 ; 打开 VSCode , 选择 ” 菜单栏 / 文件 / 打开文件夹 ” 选项 , 选择 Linux 内核源码目录 , 点击 ” 选择文件夹 ”
文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址...不同版本的 Linux 内核 区别 : 系统调用 : 其系统调用是相同的 , 新的版本可能会增加新的系统调用 ; 设备文件 : 各内核版本的设备文件都是相同的 , 但是 内部接口 可能不同 ; 二、使用...Code ) 博客 , 安装 VSCode 软件 ; 打开 VSCode , 选择 " 菜单栏 / 文件 / 打开文件夹 " 选项 , 选择 Linux 内核源码目录 , 点击 " 选择文件夹 "...按钮 , 此时就可以在 VSCode 中阅读 Linux 内核源码 ;
内核为所有的I/O创建了3种数据结构表示打开文件,它们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响。 每个进程在进程表中都有一个记录项,记录项中包含一张打开文件描述符表。...内核为所有打开文件维持一张文件表。包含了文件状态(读,写等),文件偏移量,指向i节点的指针。 每打开一个文件,都有一个i节点,它包含了文件类型和对该文件进行各种操作函数的指针。 ?...同一进程打开不同文件的内核数据结构 这个图本来描述的是UNIX操作系统的,在Linux中没有这个V节点,而是采用了一个与文件系统相关的i节点和一个与文件系统无关的i节点。...文件系统:文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。...操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。常见的文件系统有FAT,NTFS,ext2,ext3,ext4等。Linux的VFS处理了不同文件系统之间的统一管理。 ?
文章目录 一、查看 .config 编译配置文件 二、正式编译内核 一、查看 .config 编译配置文件 ---- 在上一篇博客 【Linux 内核】编译 Linux 内核 ④ ( 打开 Linux...内核编译 菜单配置 |菜单配置中的光标移动与选中状态 | 保存配置 | 配置项帮助文档 ) 中 , 已经将编译配置保存到了 .config 文件中 ; 查看 .config 编译配置文件 , 在 linux...内核源码根目录中 , 执行 gedit .config 命令 , 查看 .config 编译配置文件 : ( 也可以使用 vi , vim 等文本编辑器查看 ) 在 .config 配置中 , #...代表注释 , CONFIG_IRQ_WORK=y 等号右侧的 y 表示同意该操作 ; .config 文件内容示例 : 配置文件很多 , 这里只贴出一部分 ; # # Automatically generated...---- 在 Linux 内核源码根目录 , 执行 sudo make j4 开始编译 Linux 内核 ;
如果误操作了/boot目录下kernel文件,会导致无法进入系统,此时,必须要借助第三方系统来进行kernel的修复。 以下以 Ubuntu 16.04系统为例,介绍修复的方法。...bind /sys sys 5、 使用chroot将当前目录变为根目录(这样,之后的操作,都是针对待修复系统的分区) chroot . 6、修复kernel apt update apt install linux-image-generic
我们的Linux进阶部分,到目前为止,已经讲过:硬件,日常运维,基础软件,日志,进阶命令,防火墙,Shell编程,以及本章将要讲解的内核相关内容,和最后一章Linux系统。...让我们了解和熟悉基本的Linux内核相关的信息,Linux内核我们主要从以下几个方面来讲解: Linux内核-什么是内核 Linux内核-内核模块&参数 Linux内核-proc文件系统 Linux内核...-sys文件系统(本章节) Linux内核-tmpfs文件系统 在讲sys文件系统系统之前,我们先思考一个问题?...在 Linux 系统中,/sys 目录是一个虚拟文件系统,它提供了关于系统设备、内核参数以及硬件状态等信息的接口。...二、目录结构 /sys/devices/: 这是 /sys 目录中最重要的子目录之一,它包含了系统中所有的设备信息。
1、前言 最近项目中用到一个环形缓冲区(ring buffer),代码是由linux内核的kfifo改过来的。缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。...例如一个进程A产生数据发给另外一个进程B,进程B需要对进程A传的数据进行处理并写入文件,如果B没有处理完,则A要延迟发送。...Linux内核的kfifo正好是一个环形队列,可以用来当作环形缓冲区。生产者与消费者使用缓冲区如下图所示: ?...2、linux 内核kfifo kfifo设计的非常巧妙,代码很精简,对于入队和出对处理的出人意料。...首先看一下kfifo的数据结构: struct kfifo { unsigned char *buffer; /* the buffer holding the data */
我们的Linux进阶部分,到目前为止,已经讲过:硬件,日常运维,基础软件,日志,进阶命令,防火墙,Shell编程,以及本章将要讲解的内核相关内容,和最后一章Linux系统。...让我们了解和熟悉基本的Linux内核相关的信息,Linux内核我们主要从以下几个方面来讲解: Linux内核-什么是内核 Linux内核-内核模块&参数 Linux内核-proc文件系统(本章节) Linux...内核-sys文件系统 Linux内核-tmpfs文件系统 我们上一小节里面修改内核参数的时候,还有在Linux入门-目录介绍的时候也说过/proc是虚拟目录。...二、目录结构及内容 关于系统信息的文件 文件“/proc/cpuinfo”:包含有关系统 CPU 的详细信息,如处理器型号、频率、缓存大小等。...这里还有很多红色显示为deleted的文件。我们在讲Linux进阶命令-lsof命令的时候说过,如果文件被删除;这个文件如果正在被其他程序打开,文件是不会真删除的。从而导致删除文件未释放空间。
本章主要内容面向接触过C++的老铁 主要内容含: 一.区分内核文件结构体file和files_struct&C标准库中文件结构体FILE FILE结构体:是 C标准库 中定义的一个结构体,用于表示一个打开的文件流...file结构体:它代表一个打开的文件,是Linux内核中的结构体 区分: files_struct结构体:是Linux内核中定义的一个结构体,用于表示 进程级别 的文件描述符表,并记录了该进程当前打开的所有文件的信息...如下图:进程结构体task_struct有一个文件指针指向files_struct结构体,files_struct结构体经过系统调用open后生成file结构体: 二.文件描述符fd与进程文件描述符表...fd_array 1.file_struct结构体介绍 files_struct结构体是Linux内核中定义的一个结构体,用于表示进程级别的文件描述符表。...在Linux系统中,每个进程都有一个与之关联的文件描述符表,该表记录了该进程当前打开的所有文件的信息。
我们的Linux进阶部分,到目前为止,已经讲过:硬件,日常运维,基础软件,日志,进阶命令,防火墙,Shell编程,以及本章将要讲解的内核相关内容,和最后一章Linux系统。...让我们了解和熟悉基本的Linux内核相关的信息,Linux内核我们主要从以下几个方面来讲解: Linux内核-什么是内核 Linux内核-内核模块&参数 Linux内核-proc文件系统 Linux内核...-sys文件系统 Linux内核-tmpfs文件系统(本章节) 前面讲了2个虚拟文件系统,一个是主要是针对内核的,一个主要是针对cgroup,而tmpfs则是第三个虚拟文件系统,那它是主要针对什么呢?...devtmpfs devtmpfs是一种在 Linux 内核中用于管理设备文件的临时文件系统。...二、主要作用 设备文件管理: 在传统的 Linux 系统中,设备文件通常是在系统启动时通过静态方式创建,或者在设备被检测到时手动创建。
fd2); /*把一个文件的旧描述符复制到一个新描述符上*/ 函数执行后,返回的新文件描述符与原有的旧文件描述符共用同一个文件表项,但是文件描述符标志将被清除,进程调用exec时文件描述符将不会被关闭...char *restrict pathname, struct stat *restrict buf); int fstat(int fd, struct stat *buf); buf是一个指向stat结构体的指针...Time of last modification */ struct timespec st_ctim; /* Time of last status change */ }; stat结构体中的...linux系统中的”快捷方式“被称为软链接。...文件权限在Linux中的表示: [root@VM-4-13-centos cpp_learning]# ls -l hello.txt -rw-r--r-- 1 root root 12 Apr 13
在Linux操作系统中,一切皆是文件—— "Everything is a file"。 如果要在Linux系统中编写操作文件的代码,需要借助文件描述符。...文件的索引——文件描述符(file descriptor): 文件描述符是一个非负整数,当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。...文件描述符就是内核为了高效管理已被打开的文件所创建的索引值。 文件描述符指向内核为每一个进程维护的打开文件记录表。当要处理文件时,将文件对应的文件描述符作为参数传给函数。...文件描述符在用户进程和内核之间的映射关系: Linux中查看文件描述符的指令:lsof(list open files) lsof可以打开的文件: 普通文件 目录 网络文件系统的文件 字符或设备文件...i --列出所有的网络连接 lsof -i tcp --列出所有tcp 网络连接信息 *Linux中出现“ Too many open files”报错,如何解决:
在Linux的内核源代码中已经给我们实现了一棵红黑树,我们可以方便地拿过来进行使用。本文将参考Linux内核的源码和文档资料,介绍Linux内核中红黑树的实现细节及使用方法。...简介 Linux有很多地方用到了红黑树,比如高精度计时器使用红黑树树组织定时请求,EXT3文件系统也使用红黑树树来管理目录,虚拟存储管理系统也有用红黑树树进行VMAs(Virtual Memory Areas...本文参考的Linux内核版本为linux-2.6.39.4,可以从官网 Index of /pub/linux/kernel/v2.6/ 上进行下载。...其中关于红黑树的文件位置为: 头文件: linux-2.6.39.4\include\linux\rbtree.h 实现代码:linux-2.6.39.4\lib\rbtree.c 文档说明:linux...-2.6.39.4\Documentation\rbtree.txt 结构定义 Linux内核红黑树的实现与传统的实现方式有些不同,它对针对内核对速度的需要做了优化。
一般来说,如果我们想要研究一个c/c++项目的源码,我们首先要做的是为该项目生成tags文件,linux内核是c写的,所以它也不例外。.../Comparison-with-Similar-Tools 根据我的测试,gtags是最好用的,其官方地址是: https://www.gnu.org/software/global/ 由于linux...内核的项目结构非常庞大,如果我们在项目的根目录直接为所有文件生成tags的话,会包含很多不必要的文件,比如我们只想要x86平台的相关实现,但结果却包含了各种其他平台的逻辑。...那怎么办呢,其实linux的Makefile里已经帮我们写好了如何生成各种tags,看下面的命令: $ make help # 省略其他 tags/TAGS - Generate tags...在生成tags文件后,我们就可以在各种编辑器里使用了,下面是emacs编辑器使用gtags的效果图: ? 还不错吧。
作者简介 赵晨雨:西安邮电大学2018级陈莉君教授研究生,天真无邪小白一枚,已经爱上linux内核而不能自拔,正在成长为内核狂热爱好者?...跟随陈老师学习linux内核两个月了,对linux内核产生了极大的兴趣,最近学习文件系统,有一些自己的看法,很荣幸能在linux内核之旅进行分享^_^ 本篇文章使用尽量通俗的语言来说明linux内核文件系统中各个数据结构之间的关系...由于linux内核足够复杂,就会有多种解释方式,我认为所有关于linux内核的书籍,都是不同作者对内核的不同的看法,说不定这些看法对于linus本人来说都是很巧妙的,所以我在这里也大胆地提出自己对linux...super_block也是一个极其庞大的结构体,它既然处于管理的地位,所以具体的一个个文件就需要和它进行关联,按照内核标准套路,一个个具体的文件在内核中还是抽象成一个结构体,就是图中的第5个结构体inode...,那么inode代表了一个个实际的文件,这时候,自然而然就需要目录了,内核把目录也当做一个文件来处理,同样抽象成一个结构体,也就是图中的第6个结构体dentry结构体。
1、文件目录结构 /:是Linux系统的根目录 /bin:存放用户经常使用的命令 /boot:启动加载程序的静态文件 /dev:设备文件目录,不能单独分区 /etc:系统配置文件目录 /home:普通用户的家目录.../root:系统管理员的家目录 /run:进程的运行数据存放的目录 /sbin:存放系统管理员用户使用的命令 /tmp:临时文件目录;任何人都可以访问,存放周期10天 /usr:存放程序文件,库文件,...:动态数据文件目录;日志文件log,数据库,缓存目录等 /lib:存放程序的库文件 /lib64:存放64位程序库文件 /media:移动媒体的挂载点 /mnt:临时挂载的文件系统的挂载点 /opt:存放第三方软件服务.../proc:伪文件系统,内核映射文件,不能单独分区 /srv: 用来存储本机提供的服务或数据 /sys:伪文件系统,跟硬件设备相关的属性映射文件,不能单独分区 注意: /etc,/bin,/sbin,...4、文件命名规则 长度不能超过255个字符 不能使用/当文件名 严格区分大小写 以点开头的文件为隐藏文件 注意:隐藏文件中有两个特殊的目录:.(点)表示当前目录;..(点点)表示当前目录的上一级目录
最近由于项目需要,要编译mlibc,其中需要linux kernel headers,而使用apt安装的头文件总是有问题,因此,自己从内核里面导出了一份。在此写个简单的文章记录一下。...下载内核的源代码 然后,去中科大的软件镜像站下载Linux内核源代码: https://mirrors.ustc.edu.cn/kernel.org/linux/kernel/v5.x/ 在页面里面找到...linux 5.15的代码包,下载: wget https://mirrors.ustc.edu.cn/kernel.org/linux/kernel/v5.x/linux-5.15.tar.xz 导出头文件...解压之后,进入内核源码的文件夹。.../build 然后我们就能在build目录下看到导出好的内核头文件了。
一、打开文件内核数据结构 1、一个进程打开两个文件 文件状态标志:读、写、追加、同步、非阻塞等 2、一个进程两次打开同一文件 3、两个进程打开同一文件 示例程序: /****************...* 文件表(包括文件状态(读写追加同步非阻塞等),当前文件偏移量, * 文件引用次数(当有两个fd指向同个文件表时引用计数为2,见dup,也可用于重定向), * 文件操作指针, V节点指针等... ABCDEhello 测试如下: simba@ubuntu:~/Documents/code/linux_programming/APUE/File_IO$ ....文件表是不共享的,即各有自己的文件偏移量和打开文件标志,所以两次read不同的fd都是从头开始读取,但V节点表是共享的,在fd2写入(同个文件表的read和write是共享偏移的)更改了inode指向的硬盘数据块...二、I/O重定向 当我们执行了dup(3)之后,系统选择一个空闲的文件描述符即4,这样就有两个文件描述符指向同个文件表,所以引用计数为2。
内核——操作系统的内在核心 设备驱动程序 启动引导程序 命令行shell 其他种类的用户界面—-操作系统的外在表象 基本的文件管理工具和系统工具 Linux内核的组成 Linux内核源代码目录结构是什么...fs:支持的各种文件系统,如EXT、FAT、NTFS、JFFS2 等。 include:头文件,与系统相关的头文件被放置在include/linux 子目录下。 init:内核初始化代码。...Linux内核的有哪些组成部分? 进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC) Linux内核的的组成部分之间有什么关系?...Makefile:分布在Linux 内核源代码中的Makefile,定义Linux 内核的编译规则。 配置文件(Kconfig):给用户提供配置选择的功能。...在Linux 内核中增加程序需要完成哪些工作? 将编写的源代码复制到Linux 内核源代码的相应目录。 在目录的Kconfig文件中增加新源代码对应项目的编译配置选项。
最开始了解Linux文件系统的目录结构,之后在学习Linux命令行,是比较推荐的学习方法。 开通了免费一年使用期的AWS,总不能闲置吧,于是就想趁这个机会尝试了解一些后端的知识。...Linux文件目录速览 ├── bin //常用的命令 ├── boot //放置一些启动用的临时文件 ├── cdrom // ├── dev...├── usr //我们主要的操作空间 └── var //变量文件--在运行中内容不断变化的文件。.../boot:主要放置开机会使用到的档案,包括Linux核心档案以及开机选单与开机所需设定档等等。...在此目录下常见的还有这些次目录:/usr/share/man:联机帮助文件 /usr/share/doc:软件杂项的文件说明 /usr/share/zoneinfo:与时区有关的时区文件 /usr/src
领取专属 10元无门槛券
手把手带您无忧上云