首页 > 其他分享 >内核目录结构

内核目录结构

时间:2023-11-11 16:32:33浏览次数:30  
标签:包含 -- 代码 文件系统 文件夹 内核 目录 结构

内核目录结构

arch: 这个文件夹包含了一个Kconfig文件,它用于设置这个目录里的源代码编译所需的一系列设定。每个支持的处理器架构都在它相应的文件夹中。如,Alpha处理器的源代码在alpha文件夹中。请记住,随着时间的推移,一些新的处理器将被支持,有些会被放弃。


block -- 此文件夹包含块设备驱动程序的代码,该目录用于实现块设备的基本框架和块设备的I/O调度算法。块设备是以数据块方式接收和发送的数据的设备。数据块都是一块一块的数据而不是持续的数据流。


crypto -- 这个文件夹包含许多加密算法的源代码。例如,“sha1_generic.c”这个文件包含了SHA1加密算法的代码


Documentation -- 此文件夹包含了内核信息和其他许多文件信息的文本文档。如果开发者需要一些信息,他们也许能在这里找到所需要的信息。


drivers -- 该目录包含了驱动代码。驱动是一个控制硬件的软件。例如,要让计算机知道键盘并使其可用,键盘驱动是必要的。这个文件夹中存在许多文件夹。每个文件夹都以硬件的种类或者型号命名。例如,'bluetooth'包含了蓝牙驱动程序的代码。还有其他很明显的驱动像SCSI、USB和火线等。有些驱动程序可能会比较难找到。例如,操纵杆驱动不在'joystick'文件夹中,它们却在./drivers/input/joystick。同样键盘和鼠标驱动也在这个input文件夹中。 'Macintosh'包含了苹果的硬件代码。 'Xen'包含了Xen hypervisor代码(hypervisor是一种允许用户在一台计算机上运行多个操作系统的软件或硬件。这意味着在Xen允许用户在一台计算机上同时运行的两个或两个以上的Linux系统。用户还可以运行Windows,Solaris,FreeBSD或其他操作系统在Linux系统上)。driver文件夹下还有许多其他的文件夹,但他们在这篇文章中无法一一列举,他们将在以后的文章中提到。


fs -- 这是文件系统的文件夹。理解和使用的文件系统所需要的所有的代码就在这里。在这个文件夹里,每种文件系统都有自己的文件夹。例如,ext4文件系统的代码在ext4文件夹内。 在fs文件夹内,开发者会看到一些不在文件夹中的文件。这些文件用来控制整个文件系统。例如,mount.h中会包含挂载文件系统的代码。文件系统是以结构化的方式来存储和管理的存储设备上的文件和目录。每个文件系统都有自己的优点和缺点。这是由文件系统的设计决定的。举例来说,NTFS文件系统支持的透明压缩(当启用时,会在用户不知道的情况下自动压缩存储文件)。大多数文件系统缺乏此功能,但如果在fs文件夹里编入相应的文件,它们也有这种能力。


include -- include包含了内核所需的各种头文件。这个名字来自于C语言用"include"来在编译时导入头文件。

init -- init文件夹包含了内核启动的处理代码(INITiation)。main.c是内核的核心文件,这是用来衔接所有的其他文件的源代码主文件。

ipc -- IPC代表进程间通讯。----用于实现System V的进程间通信(Inter Process Communication,IPC)模块 .       此文件夹中的代码是作为内核与进程之间的通信层。内核控制着硬件,因此程序只能请求内核来执行任务。假设用户有一个打开DVD托盘的程序。程序不直接打开托盘,相反,该程序通知内核托盘应该被打开。然后,内核给硬件发送一个信号去打开托盘。这些代码同样管理kill信号。举例来说,当系统管理员打开进程管理器去关闭一个已经锁死的程序,这个关闭程序的信号被称为kill信号。内核接收到信号,然后内核会要求程序停止或直接把进程从内存和CPU中移除(取决于kill的类型)。命令行中的管道同样用于进程间通信。管道会告诉内核在某个内存页上写入输出数据。程序或者命令得到的数据是来自内存页上的某个给定的指针。

kernel -- 这个文件夹中的代码控制内核本身。例如,如果一个调试器需要跟踪问题,内核将使用这个文件夹中代码来将内核指令通知调试器跟踪内核进行的所有动作。这里也有跟踪时间的代码。在内核文件夹下有个"power"文件夹,这里的代码可以使计算机重新启动、关机和挂起。

lib -- 这个文件夹包含了内核需要引用的一系列内核库文件代码。

mm -- mm文件夹中包含了内存管理代码。内存并不是任意存储在RAM芯片上的。相反,内核小心地将数据放在RAM芯片上。内核不会覆盖任何正在使用或保存重要数据的内存区域。

net -- net文件夹中包含了网络协议代码。这包括IPv6、AppleTalk、以太网、WiFi、蓝牙等的代码,此外处理网桥和DNS解析的代码也在net目录。

scripts -- 这个文件夹有内核编译所需的脚本。最好不要改变这个文件夹内的任何东西。否则,您可能无法配置或编译内核。

security -- 这个文件夹是有关内核安全的代码

sound -- 这个文件夹中包含了声卡驱动。------存放声音系统架构相关代码和具体声卡的设备驱动程序

tools -- 这个文件夹中包含了和内核交互的工具

usr -- 还记得在以前的文章中提到vmlinuz和其他类似的文件么?这个文件夹中的代码在内核编译完成后创建这些文件。----该目录中的代码为内核尚未完全启动时执行用户空间代码提供了支持

virt -- 此文件夹包含了虚拟化代码,它允许用户一次运行多个操作系统。这与先前提到的Xen是不同的。通过虚拟化,客户机操作系统就像任何其他运行在Linux主机的应用程序一样运行。通过Xen这样的hypervisor(注:虚拟机管理程序),两个操作系统可以同时管理硬件。在虚拟化中,在客户机操作系统上运行在Linux内核上,而在hypervisor中,它没有客户系统并且所有的系统不互相依赖。



标签:包含,--,代码,文件系统,文件夹,内核,目录,结构
From: https://blog.51cto.com/u_13911803/8318605

相关文章

  • JavaSEday05 泛型,数据结构,List,Set集合
    javSEday05泛型,数据结构,List,Set今日目标泛型使用数据结构ListSet1泛型1.1泛型的介绍泛型是一种类型参数,专门用来保存类型用的最早接触泛型是在ArrayList,这个E就是所谓的泛型了。使用ArrayList时,只要给E指定某一个类型,里面所有用到泛型的地方都会被......
  • JavaSE day05【泛型,数据结构,List接口,Set接口】测评题
    选择题题目1(单选):查看下列代码,选出正确的传参()publicclassTest2{publicstaticvoidmain(String[]args){ArrayList<Integer>list1=newArrayList<Integer>();ArrayList<Number>list2=newArrayList<Number>();Arr......
  • CentOS 7编译Linux内核(6.5.7)详细步骤
    CentOS7编译Linux内核(6.5.7)详细步骤参考链接:下载解压部分参考:Linux内核动手编译实用指南-LinuxEden比较详细,可用于了解原理,但没有给出针对CentOS7的方案(实验室用到的openEuler基于CentOS,所以需要CentOS的方案)。配置编译安装参考:CentOS7下编译安装Linux4.14内核-......
  • 一个数据结构只要具有Symbol.iterator属性,就可以认为是“可遍历的”(iterable)
    请问以下JS代码的执行结果是什么?functioncontrol(x){if(x==3)thrownewError("break");}functionfoo(x=6){return{next:()=>{control(x);return{done:!x,value:x&&x--};}}}letx=newObject;x[Symbol.......
  • 数据结构之树(二叉排序树)
    特点二叉排序树(BinarySearchTree,BST)的特点:每个节点最多有两个子节点,分别称为左子节点和右子节点。节点的左子树中的所有节点的值都小于该节点的值。节点的右子树中的所有节点的值都大于该节点的值。左子树和右子树也分别是二叉排序树。BST的主要优点是可以实现高效的查......
  • Linux 内核 6.6 版本莅临,带来诸多变化
    导读笔记本的支持得到了提升,服务器性能得到了改进,更多内容一一揭晓。又到了迎接 Linux 内核新版本发布的时刻!Linux内核6.6的发布,是一次大规模更新,针对各类笔记本、网络硬件、处理器等提供了大量全方位的改良。LinusTorvalds 表示:各种各样的修复散布各处,除了针......
  • 转 问题解决:记录一次Linux服务器根目录突然爆满
    一般跟目录满了,可以重点关注/var这个目录 一、出问题了过了个双休来到公司,同时发现Linux终端的服务器状态中根目录空间直接爆满100%,周五走之前根目录仅仅使用了59%,同时项目服务的后台不停的有日志打印,而且测试的小伙伴说系统登录不上去了。下面记录一下个人排查并解决这个问题......
  • Shell中的for与while循环结构语法
    1for循环语法结构如下:for变量名in值1值2值3        #值的数量决定循环任务的次数do命令序列done1.1for循环的基本语法格式#编写脚本,进行测试[root@localhostopt]#vimfor01.sh#!/bin/bashforiinabcdoecho"helloworld"done[root@loca......
  • python3: dlt - 数据结构2
    python3:dlt-数据结构2    一、源程序1[wit@fedoranull]$cattest.py2#!/usr/bin/envpython334567#file_name=test.py8#python_verion=3.11.1910111213#testthisscript14defmsg():15print......
  • 目录
    etc服务,配置文件dev存放硬件设备文件home存放用户自己的文件run运行目录sbin存放超级管理员命令tmp存放临时文件usr应用程序var存放日志MBR有64个字节,一个16个字,所以MBR最多分四个主分区,选一块主分区变成扩展分区,扩展分区里划罗辑分区......