Linux内核,这个常常看见,却不不晓得它具体是干嘛的东西,是不是感觉十分神秘?
Linux内核看不见摸不着,而对于这类东西,我们常常无从下手。本文就以通俗易懂的语言linux压缩命令,带你躲进Linux内核,看它究竟长啥样。
内核是Linux操作系统的核心组件,它向下联接应用程序,向上直接与硬件打交道。其代码主要由C语言及少量汇编语言写成,但是它可以适配多种多样不同的硬件构架。
内核并发运行着一系列的进程,并管理着硬件的各类资源。具体来讲,由于系统的资源有限,内核就为各个进程分配着例如CPU时间、内存空间、网络联接等各方面的资源。
Linux操作系统构架
右图是一个典型的Linux操作系统构架图。
Linux操作系统主要分成两部份:
1.用户空间
所有的用户应用程序都是在用户空间运行,它们不能直接访问显存等硬件资源,而是间接通过内核来访问。GNUC库(glibc)提供了从用户空间切换至内核空间的机制。
2.内核空间
内核直接管理着系统的CPU、内存、输入输出设备、网络设备和其它的外围设备,它被分为不同模块来管理系统的不同操作,例如:文件管理,显存管理,进程管理等等。
用户空间的应用程序可以通过调用内核提供的API来访问硬件资源。例如,对于文件操作,我们可以调用open(),read(),write()等插口。
内核直接管理着硬件,又与硬件互相独立,它可以通过简单配置之后运行在Intel,ARM,Atemel等芯片构架上。
Linux内核主要子系统
按照内核的核心功能,Linux内核提出了5个子系统linux服务器搭建,分别为:系统调用、进程管理、内存管理、文件系统、网络管理,如右图示:
1.系统调用(SystemCallInterface)
系统调用插口。进程调度子系统通过系统调用插口,将须要提供给用户空间的插口开放出去,同时屏蔽掉不须要用户空间程序关心的细节。
SCI实际上是一个十分有用的函数调用多路复用和多路分解服务。在./linux/kernel中您可以找到SCI的实现,并在./linux/arch中找到依赖于体系结构的部份。
2.进程管理(ProcessManagement)
用户空间有这么多进程,怎么让她们有条不紊地进行着正是进程管理所要做的事。每位进程都要使用到CPU资源(如CPU,显存),但CPU资源虽然有限,不可能让某个进程一进独占着资源。
为此,进程管理就充当着管理员的角色,它调度着所有的进程,当须要选择下一进程运行时,会由调度算法来选择须要运行的进程。假如某个进程在等待其它硬件资源,则它才会被挂起。
为此,通过一系列的调度算法,内核尽可能地公正地让各个进程使用到CPU资源。
3.显存管理(MemoryManagement)
显存管理主要提供对显存资源的访问控制,便于让各个进程可以安全地共享机器的显存资源。它提供了数学显存与虚拟显存的一种映射关系,因此不同的进程可以使用相同的虚拟显存,而这种相同的虚拟显存,可以映射到不同的化学显存上。这个映射关系主要由MMU来完成。
另外,显存管理会提供虚拟显存的机制,该机制可以让进程使用少于系统可用的显存,不用的显存会通过文件系统保存在外部非易失储存器中,须要使用的时侯,再取回到显存中。
4.虚拟文件系统(VirtualFileSystem)
内核隐藏了不同功能的外部设备linux内核内存分配,比如硬碟、输入输出设备、显示设备等等的具体细节linux内核内存分配,将它们具象为可以通过统一的文件操作插口(open、close、read、write等)来访问,也就是我们所熟知的「一切皆文件」。
随着计算机技术的发展,历史上出现了多种文件系统,例如:FAT、FAT32、NTFS、EXT2、EXT3等等。为了兼容这种文件系统,内核将它们具象为统一的表现方式,这就是虚拟文件系统的概念。
虚拟文件系统可分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编撰的设备驱动程序模块。
5.网路管理(NetworkStack)
网路子系统在Linux内核中主要负责管理各类网路设备,并实现各类网路合同栈,终实现通过网路联接其它系统的功能。
网路插口提供了对各类网路标准合同的存取和各类网路硬件的支持。网路插口可分为网路合同和网路驱动程序两部份。网路合同部份负责实现每一种可能的网路传输合同,网路设备驱动程序负责与硬件设备进行通讯,每一种可能的硬件设备都有相应的设备驱动程序。
小结
以上就是Linux内核的一些很基础的知识,对于内核的学习还有特别多的内容,决不是一篇文章才能写完的。所以,对于内核的学习,须要多看书,多看视频,并自己动手去实践,能够真正把握。
明天是良许公众号营运一华诞的日子,本想在明天就变胖利的,但今天的文章写得太长了,怕同学们翻不到后,所以就换到明天来。
为了答谢良许的读者同学们仍然以来的支持与帮助,本次为你们送出两个福利:1.内核书籍;2.现金红包。
1.书籍附送
其中内核书籍是《Linux内核深度解析》,是由异步社区所赞助,在此谢谢异步社区的大力支持!该书籍比较优质,且售价比较贵138元,所以本书附赠10本。书籍介绍如下:
由于我不希望真正想得到这本书的人没抽到,而只是过来打黄酱的人却得到了这本书,这样书本就发挥不了它的作用。所以为了让书籍献给真正有须要的人,捐书规则如下:
在评论区留言,写下你想要得到这本书的理由。要走心哦,不走心不上墙哦;约请好友为你的评论据赞,赞数前10名者抽奖;为避免刷赞,赞数超过100的同学必须提供拉票证据,否则丧失得奖资格;活动时间即日起至6月5日晚8:00,抽奖者需在24小时内联系良许提供地址。良许有多个陌陌,联系其中一个即可,还没有良许陌陌的,请在公众号后台回复良许二字即可得到良许的新陌陌。2.现金红包
没错,就是这么粗鲁,直接发红包!直接点击以下链接即可申领,先到先得哦!因为良许还比较穷,不能发很大的红包,还请拜谢!
后,近好多男子伴找我要Linux学习路线图,于是我按照自己的经验,借助业余时间通宵肝了一个月,整理了一份电子书。无论你是笔试还是自我提高,相信还会对你有帮助!目录如下:
免费献给你们,但求你们金指给我点个赞!
电子书|Linux开发学习路线图
也希望有男子伴能加入我,把这份电子书做得更完美!
有收获?希望老铁们来个三连击,给更多的人听到这篇文章