何为 Linux 内核开发,怎么学好 Linux 内核?
操作系统(简称为OS)是一种软件平台,可创建一个环境,用户可以在该环境中在计算设备上运行不同的应用程序。 操作系统充当软件程序和系统硬件组件之间的桥梁。 它被移动
什么是操作系统OS 操作系统(简称为OS)是一种软件平台,可创建一个环境,用户可以在该环境中在计算设备上运行不同的应用程序。 操作系统充当软件程序和系统硬件组件之间的桥梁。 它被移动设备,标签,台式机,Web服务器,视频游戏机等不同的设备所利用。市场上有各种操作系统可用,例如Windows,Linux,Unix和Mac OSX。 操作系统的的组成什么是内核kernel 内核是操作系统的关键组件。 它借助进程间通信和系统调用,在硬件级别上充当应用程序和数据处理之间的桥梁。 每当将操作系统加载到内存中时,首先,将加载内核并将其保留在那里,直到操作系统关闭。 内核负责处理低级任务,例如任务管理,内存管理,风险管理等。 内核的任务内核空间,用户空间是什么?内核空间 内核处于提升的系统状态,其中包括受保护的内存空间以及对设备硬件的完全访问权限。 此系统状态和内存空间统称为内核空间。 在内核空间内,对硬件和系统服务的核心访问进行管理,并作为服务提供给系统的其余部分。 用户空间 用户空间或用户域是在操作系统内核环境之外运行的代码,用户空间定义为操作系统用来与内核连接的各种应用程序或程序或库。 用户的应用程序是在用户空间中执行的,它们可以通过内核系统调用访问计算机可用资源的一部分。 通过使用内核提供的核心服务,可以创建用户级别的应用程序,例如游戏或办公软件。 内核的操作 内核是任何操作系统的心脏,因为它控制系统中的所有其他程序。 当设备启动时,内核会经历一个初始化的过程,例如检查内存。 它负责内存分配部分,并创建了一个运行应用程序的环境,而没有任何干扰。 内核充当服务提供者,因此程序可以请求内核完成多项任务,例如请求使用磁盘,网卡或其他硬件,并且内核为CPU设置中断以启用多任务处理。 它不让错误的程序进入其他程序的操作功能,从而保护了计算环境。 它通过不允许存储空间来阻止未经授权的程序进入入口,并限制它们消耗的CPU时间。 Linux内核 内核是任何基于Linux的操作系统的核心组件。 它代表了台式机和服务器的Linux发行版的核心方面。 它具有整体架构,并且操作系统完全在内核空间中运行。 整体内核不仅包围中央处理器,IPC和内存,而且具有系统服务器调用,设备驱动程序和文件系统管理。 Linux内核充当设备软件和硬件之间的一层。 内核可以是单片,微内核或混合内核(例如OS X和Windows 7)。 Linux内核是类似于UNIX系统的单片计算机操作系统内核。 Linux操作系统系列(通常称为Linux发行版)基于此内核。与微内核不同,单块内核不仅包含中央处理单元,内存和IPC,还具有设备驱动程序,系统服务器调用和文件系统管理。他们最擅长与硬件通信并同时执行多项任务。由于这个原因,此处的过程反应速度很快。 但是,很少的挫折是所需的巨大安装和内存占用空间以及安全性不足,因为一切都以管理员模式运行。相反,随着用户服务和内核的分离,微内核对应用程序调用的反应可能会很慢。因此,与整体内核相比,它们的尺寸更小。微内核很容易扩展,但是编写微内核需要更多代码。 Linux内核是用C和Assembly编程语言编写的。 内核源码结构 在Linux系统中查看内核源码,如图所示 那Linux内核该如何学习呢? 主要可以从七个模块来看: 这里就分享给大家一份基于Linux内核4.0版本的内核学习路线思维导图和Linux内核相关视频文档学习资料: Linux内核源码内存调优文件系统进程管理设备驱动网络协议栈 学习课程、资料获取: Linux内核与硬件的关系 内核可以通过所谓的中断来管理系统的硬件。 当硬件要与系统接口时,会发出一个中断,中断处理器,从而对内核执行相同的操作。 为了提供同步,内核可以禁用中断,无论是单个中断还是全部中断。 但是,在Linux中,中断处理程序不是在进程上下文中运行,而是在不与任何进程相关联的中断上下文中运行,这种特殊的中断上下文仅是为了让中断处理程序快速响应单个中断然后最终退出而存在 。 是什么使Linux内核与其他经典Unix内核不同? Linux内核和经典 Unix内核之间存在显着差异,如下所示: Linux内核架构 内核仅仅是资源管理器。 被管理的资源可以是进程,内存或硬件设备。 它管理和仲裁多个竞争用户之间对资源的访问。 Linux内核存在于用户空间下方的内核空间中,该空间是执行用户应用程序的位置。 为了使用户空间与内核空间进行通信,已合并了一个GNU C库,该库为系统调用接口提供了一个论坛,以连接到内核空间并允许转换回用户空间。 Linux内核接口 Linux内核为执行不同任务和具有不同属性的用户空间应用程序提供了不同的接口。 它由两个独立的应用程序编程接口(API)组成:一个是内核用户空间,另一个是内核内部。 Linux API是内核用户空间API, 它使用户空间中的程序可以访问内核的系统资源和服务, 它由系统调用接口和GNU C库中的子例程组成。 Linux ABI 指的是内核用户空间ABI(Application Binary Interface), 它存在于程序模块之间,是两个二进制程序模块之间的接口:模块之一是操作系统工具或库,第二个模块是用户运行的程序。 比较API和ABI时,不同之处在于ABI用于访问已编译的外部代码unix系统结构,而API是用于管理软件的结构。 定义重要的ABI主要是Linux发行版的工作,而不是Linux内核。 应该为每个指令集定义一个特定的ABI,例如x86-64。 Linux产品的最终用户对ABI而不是API感兴趣。 它不过是内核用户空间ABI(应用程序二进制用户界面)。 它存在于程序模块之间。 ABI用于访问已编译并准备使用的代码。 ABI是两个二进制程序模块之间的接口:这些模块之一是操作系统工具或库,第二个模块是用户运行的程序。 模块化内核 以前版本的Linux内核的方式是将其所有部分静态固定为一个整体。 但是,现代Linux内核的大部分功能包含在动态放入内核的模块中。 与单片类型相反,这称为模块化内核。 这样的设置允许用户加载或替换正在运行的内核中的模块,而无需重新启动。 Linux可加载内核模块 (The Linux Loadable Kernel Module (LKM) ) 如果要向Linux内核添加代码,则要做的第一件事就是向内核源代码树中添加一些源文件。 在某些情况下,您可能需要在运行时向内核添加代码,此过程称为可加载内核模块。 LKM的好处: LKM节省时间并避免错误它有助于快速发现bugsLKM可以节省内存,因为它们仅在需要时才加载到内存中它提供了更快的维护和调试时间 最后,给想了解学习Linux内核技术的朋友一个交流地,每天都会有内核技术的交流与教程,自学过程中的相关问题也可以互相解答探讨。 Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈 学习直播公开课 (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |