Linux内核从1991年至2018年早已有27年的历史了,从原先不到1万行代码到如今早已超过2000万行代码了。我当然也挺钦佩人类的脑部,可惜这钦佩也是脑部想到的,细思极恐!
以下就是Linux内核的大约的总体样子!!
我大致总结一下,我打个不恰当比方,软件是下层建筑,就是你住的地方,地基面就是系统调用层,下层建筑只要按照地基面来规划就好了,不用管地基上面是哪些样子。
一个Linux的内核总体能分三部份:
硬件层:包括cpu、物理显存、主板、磁盘和相应的外设。
内核空间:包括Linux内核的核心部件,例如arch具象层、设备管理具象层、内存管理、进程管理、总线管理、字符设备以及应用程序交互系统调用层
用户空间:这儿包括c语言库、应用程序和虚拟机等。
那我们先关注一些主要的部件。
(1)systemcalls(系统调用层)这个我在下篇文章中说了。
linux内核把系统分成两个空间如何安装LINUX,用户空间和内核空间。
系统调用层
把系统想成一个大厦,调用层是地基平面,用户层就构建在里面,用户是不关心地基上面如何运行的。例如编撰用户进程的程序员不须要晓得这个文件具体储存在c盘那个磁道里,只须要调用open()、read()、mmap()等函数就可以。
(2)进程管理
进程是现今操作系统中十分重要的概念,包括上下文切换以及进程调度。每位进程运行时都觉得完全占有了全部的硬件资源。并且进程不会长时间占有硬件资源。操作系统借助进程调度器让多个进程并发执行。
进程管理还包括进程的创建和销毁、线程组管理、内核线程管理、队列等内容。
问个问题,一个进程和线程是啥区别呢?
(3)显存管理
显存管理是Linux内核中最复杂的模块linux 内核调试,它涉及了虚拟显存和化学显存的管理。作为Linux系统,Linux内核的虚拟显存管理特别重要。虚拟显存有好多优点,例如多个进程可以并发执行、进程恳求的显存可以比化学显存大、多个进程可以共享函数库等,因而虚拟显存越来越复杂了。
化学显存的管理也比较复杂。页面分配器是核心部件,它须要考虑系统显存紧张时侯,怎么回收页面和继续分配化学显存。
(4)文件系统
为多种文件系统提供统一的操作插口,其实有各类各样的文件系统,例如ext4和XFS等。为了支持各类各样的文件系统,Linux虚拟机出一个称为虚拟文件系统(VFS),这样linux内核就可以很便捷的集成多种文件系统。
再墨迹一下,怎样学习Linux的内核呢?
学习linux内核应当要对c语言有所了解,虽然Linux内核是c语言写的,可以买一些书来看linux查看端口占用,或则关注我们的平台,我们是一个强悍的团队linux 内核调试,有老师可以问问她们问题,一起交流。
还有你还要了解Linux系统,熟悉vim和git等工具。
再Linux上做一些编程和调试的练习,如使用QEMU+GDB+Eclipse来调试内核,熟悉GDB等。