金沙城

首页 > 正文

Linux内核应该怎么去学习

www.ministerioamorincondicional.com2019-07-09
金沙网站

喜欢可以收集转发加注意

Inux内核,这是经常听到的,但我不知道它在做什么,是不是很神秘?

Linux内核是不可见的,对于这样的事情,我们通常无法启动。本文将以易于理解的语言将您带入Linux内核,以了解它的外观。

内核是Linux操作系统的核心组件,它连接到应用程序并直接在硬件上运行。代码主要使用C语言和少量汇编语言编写,并且可以适应各种硬件体系结构。

内核与一系列进程同时运行并管理硬件的各种资源。具体来说,由于系统资源有限,内核会为每个进程分配CPU时间,内存空间和网络连接等资源。

Linux操作系统架构

下图是典型的Linux操作系统架构图。

933a022c86c749cd80f1036d52ab8d47

Linux操作系统主要分为两部分:

用户空间内核空间

1.用户空间

所有用户应用程序都在用户空间中运行,它们无法直接访问内存等硬件资源,但可以通过内核间接访问。 GNU C库(glibc)提供了一种从用户空间切换到内核空间的机制。

2.内核空间

内核直接管理系统的CPU,内存,输入和输出设备,网络设备和其他外围设备。它分为不同的模块来管理系统的不同操作,如文件管理,内存管理,进程管理等。

用户空间应用程序可以通过调用内核提供的API来访问硬件资源。例如,对于文件操作,我们可以调用open(),read(),write()等接口。

内核直接管理硬件,独立于硬件。它可以轻松配置,然后在Intel,ARM,Atemel和其他芯片架构上运行。

Linux内核的主要子系统

根据内核的核心功能,Linux内核提出了五个子系统:系统调用,进程管理,内存管理,文件系统和网络管理,如下图所示:

6c3a2bb3cb7346e483dc858938b49989

1.系统调用接口

系统调用界面。进程调度子系统打开需要通过系统调用接口提供给用户空间的接口,并屏蔽用户空间程序不需要的细节。

SCI实际上是一种非常有用的函数调用多路复用和多路分解服务。您可以在找到SCI的实现,并在找到与架构相关的部分。

2.流程管理

用户空间中有如此多的进程,如何让它们以有序的方式进行正是进程管理需要做的事情。每个进程都使用CPU资源(例如CPU和内存),但CPU资源有限,因此进程无法独占资源。

因此,进程管理充当管理员。它安排所有流程。当需要选择下一个要运行的进程时,调度算法会选择需要运行最多的进程。如果进程正在等待其他硬件资源,则它将被暂停。

因此,通过一系列调度算法,内核使每个进程尽可能公平地使用CPU资源。

3.内存管理

内存管理主要提供对内存资源的访问控制,以便每个进程可以安全地共享机器的内存资源。它提供了物理内存和虚拟内存之间的映射,因此不同的进程可以使用相同的虚拟内存,并且这些相同的虚拟内存可以映射到不同的物理内存。该映射关系主要由MMU完成。

此外,内存管理提供了虚拟内存的机制。此机制允许进程使用比系统可以使用的更多内存。未使用的存储器通过文件系统存储在外部非易失性存储器中。当需要时,它将被检索回内存。 in。

4.虚拟文件系统

内核隐藏了具有不同功能的外部设备的具体细节,例如硬盘,输入和输出设备,显示设备等,将它们抽象为统一的文件操作界面(打开,关闭,读取,写入等),也就是说,我们所知道的一切都是“一切都是文件”。

随着计算机技术的发展,历史上出现了各种文件系统,如:FAT,FAT32,NTFS,EXT2,EXT3等。为了与这些文件系统兼容,内核将它们抽象为统一表示,这是虚拟文件系统的概念。

虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统是指Linux支持的文件系统,如ext2,fat等。设备驱动程序是指为每个硬件控制器编写的设备驱动程序模块。

5.网络堆栈(

网络子系统主要负责管理Linux内核中的各种网络设备,实现各种网络协议栈,最终实现通过网络连接其他系统的功能。

网络接口提供对各种网络标准协议的访问,并支持各种网络硬件。网络接口可以分为两部分:网络协议和网络驱动程序。网络协议部分负责实现每种可能的网络传输协议。网络设备驱动程序负责与硬件设备通信。每个可能的硬件设备都有相应的设备驱动程序

总结

以上是Linux内核的一些基本知识。内核学习仍有很多内容,绝不是一篇文章可以编写的。因此,对于内核的学习,您需要阅读更多书籍,观看更多视频,并自己练习才能真正掌握。

5cac7898e5b14ed3bf1f8ff568caac21

Linux基金会

它主要包括Linux环境构建,常用工具,一些基本命令,性能优化等。

Linux环境构建|教你安装Linux虚拟机

Linux环境设置|在VMware下实现共享文件夹

Linux常用工具|使用notepad ++

远程编辑虚拟机文档

Linux常用工具|通用终端神器 MobaXterm

Linux常用命令| 10个非常有趣的Linux命令

Linux的常用命令|在Linux下找到find和exec

Linux性能优化| Linux性能检测中常用的10个基本命令

高级Linux

它主要包括Linux命令的高级用法,常用命令行工具,一些提示等。

Linux命令的高级用法| Linux下ls命令高级用法8例

Linux命令高级用法|从入门到精通5分钟的命令

Linux命令行工具|程序员易于绘制工件

Linux命令行工具|在Linux中隐藏计算器,你知道它的神秘面纱吗?

Linux常用技巧|提高效率的Linux技巧

Linux常用技巧| Linux下的大型日志文件解决方案

我们可能首先分享这些,然后重新组织Linux编程,Linux工件,Linux趣味应用程序,Raspberry Pi和其他文章。

正在学习C/C ++的合作伙伴可以回复小编“学习”以获得全套免费的C/C ++学习资料和视频

24a707a003884eecae3b8c73eb77745f

热门浏览
热门排行榜
热门标签
日期归档