linuxkernel,经常听到这个,但不知道是干什么用的。是不是觉得很神秘?Linux内核是看不见摸不着的,对于这样的事情,我们往往无从下手。本文将以通俗易懂的语言带你走进Linux内核,一睹究竟。内核是Linux操作系统的核心组成部分。它向上连接应用程序,向下直接处理硬件。其代码主要用C语言和少量汇编语言编写,能适应多种不同的硬件架构。内核并发运行一系列进程,管理硬件的各种资源。具体来说,由于系统的资源是有限的,内核会为每个进程分配CPU时间、内存空间、网络连接等资源。Linux操作系统架构下图是一个典型的Linux操作系统架构图。Linux操作系统主要分为用户空间和内核空间两部分1.用户空间所有用户应用程序都运行在用户空间,不能直接访问内存等硬件资源,而是通过内核间接访问。GNUC库(glibc)提供了一种从用户空间切换到内核空间的机制。2、内核空间内核直接管理着系统的CPU、内存、输入输出设备、网络设备等外围设备。它分为不同的模块来管理系统的不同操作,例如:文件管理、内存管理、进程管理等等。用户空间的应用程序可以通过调用内核提供的API来访问硬件资源。比如对于文件操作,我们可以调用open()、read()、write()等接口。内核直接管理硬件,独立于硬件。它可以配置然后运行在Intel、ARM、Atemel等芯片架构上。Linux内核的主要子系统根据内核的核心功能,Linux内核提出了五个子系统,分别是:系统调用、进程管理、内存管理、文件系统和网络管理,如下图所示:1.系统调用接口系统调用接口。进程调度子系统通过系统调用接口开放了需要提供给用户空间的接口,同时屏蔽了不需要用户空间程序关注的细节。SCI其实是一个非常有用的函数调用复用和解复用服务。在./linux/kernel中,您将找到SCI实现,并在./linux/arch中找到体系结构相关的部分。2、进程管理(ProcessManagement)用户空间的进程非常多,如何让它们有序的运行,正是进程管理要做的事情。每个进程都需要使用CPU资源(比如CPU、内存),但是CPU资源毕竟是有限的,不可能某个进程一进来就独占资源。因此,流程管理充当管理员的角色,对所有流程进行调度。当需要选择下一个进程运行时,调度算法会选择最需要运行的进程。如果一个进程正在等待其他硬件资源,它就会被挂起。因此,内核通过一系列的调度算法,让每个进程尽可能公平地使用CPU资源。3.内存管理(MemoryManagement)内存管理主要提供对内存资源的访问控制,让各个进程可以安全的共享机器的内存资源。它提供了物理内存和虚拟内存之间的映射关系,所以不同的进程可以使用相同的虚拟内存,而这些相同的虚拟内存可以映射到不同的物理内存。这种映射关系主要是由MMU来完成的。此外,内存管理将为虚拟内存提供一种机制,允许进程使用比系统可用内存更多的内存。未使用的内存会通过文件系统存储在外部非易失性内存中,需要时再调取到内存中。中间。4.虚拟文件系统(VirtualFileSystem)内核将硬盘、输入输出设备、显示设备等具有不同功能的外部设备的具体细节隐藏起来,抽象成统一的文件操作接口(open、关闭、读取、写入等),也就是我们所说的“一切皆文件”。随着计算机技术的发展,历史上出现了各种文件系统,如:FAT、FAT32、NTFS、EXT2、EXT3等。为了兼容这些文件系统,内核将它们抽象成统一的表现形式,这就是虚拟文件系统的概念。虚拟文件系统可分为逻辑文件系统和设备驱动程序。逻辑文件系统是指Linux支持的文件系统,如ext2、fat等,设备驱动是指为各个硬件控制器编写的设备驱动模块。5、网络管理(NetworkStack)Linux内核中的网络子系统,主要负责管理各种网络设备,实现各种网络协议栈,最终实现通过网络连接到其他系统的功能。网络接口提供对各种网络标准协议的访问和对各种网络硬件的支持。网络接口可以分为两部分:网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议,网络设备驱动负责与硬件设备进行通信,每一种可能的硬件设备都有对应的设备驱动。总结以上就是Linux内核的一些非常基础的知识。内核要学的东西还有很多,绝不是一篇可以写的文章。所以对于核心的学习,需要多看书,多看视频,自己动手实践,才能真正掌握。昨天是良序公众号手术一周年。昨天本来想发福利的,但是昨天的文章太长了,怕小伙伴们看不完,改到今天发。为了感谢良序读者朋友们一直以来的支持和帮助,这次给大家送上两个福利:1.内核类书籍;2.现金红包。1.赠书。核心书籍是《Linux内核深度解析》,由异步社区赞助。感谢异步社区的大力支持!这本书质量比较高,价格比较贵,138元,送10册。本书介绍如下:因为我不想让真正想得到这本书的人错过,而只是来打酱油的人得到这本书,以至于这本书无法发挥它的作用角色。所以为了把书送给真正需要的人,捐书规则如下:在评论区留言,写下你想要得到这本书的理由。留心,不介意就别上墙;邀请好友点赞您的评论,前10名有奖;为防止刷赞,超过100个赞的朋友必须提供拉票证据,否则将失去获奖资格;活动时间即日起至6月5日晚8点。获奖者必须在24小时内联系Liangxu提供地址。良旭有多个微信,联系其中一个就行了。如果您还没有良旭微信号,请在公众号后台回复良旭,获取良旭最新微信号。2.现金红包是的,太失礼了,直接发红包!只需点击下方链接即可获取,先到先得!由于良旭还比较穷,发不了大红包,还望见谅!最后,最近有很多朋友找我要一份Linux学习路线图,所以我结合自己的经验,利用业余时间熬夜一个月,整理了一本电子书。无论你是面试还是自我提升,相信都会对你有所帮助!免费送给大家,只求大家给我点个赞!电子书|LinuxDevelopmentLearningRoadmap也希望有小伙伴可以和我一起把这本电子书做得更完美!获得?希望老铁们来个三连击,让更多人看到这篇文章。推荐阅读:干货|程序员和高级架构师免费发送工件的必备资源|支持搜索的资源网站
