最近在工作中学习中总数听人说Linux内核,自己又总是听不懂;另外之前面试也经常被问到,synchronize的内核态和用户态切换,volatile的底层实现,redis的多路复用,这些也都和linux内核有关,所以打算自己学习学习;

  常见能搜到的书籍里面《Linux内核深度解析》,《Linux内核设计的艺术》,《操作系统导论》,大概都看过几眼,感觉书里的内容都很细,需要比较好的Linux基础,另外还有很多Linux的代码,对于目前的我不老合适,有点看不懂也有点看不下去。这个时候就需要我们的GitHub了,在GitHub上搜到了linux内核学习资料,看起来很不错,在一定的高度整体的去看Linux相关知识,高屋建瓴,大家喜欢的可以去给颗星星。这个目录下面的东西很多时候参照这个GitHub上的内容完成的,大家可以直接看这个GitHub。

  让我们看看维基百科对Linux内核的定义:Linux内核(英语:Linux kernel)是一种开源的类Unix操作系统宏内核。整个Linux操作系统家族基于该内核部署在传统计算机平台(如个人计算机和服务器,以Linux发行版的形式和各种嵌入式平台,如路由器、无线接入点、专用小交换机、机顶盒、FTA接收器、智能电视、数字视频录像机、网络附加存储(NAS)等。工作于平板电脑智能手机及智能手表的安卓操作系统同样通过Linux内核提供的服务完成自身功能。尽管于桌面电脑的占用率较低,基于Linux的操作系统统治了几乎从移动设备到主机的其他全部领域。截至2017年11月,世界前500台最强的超级计算机全部使用Linux。

  说实话,这个定义很不程序员,我是看不太懂,或者和我想象的定义不太一样。

  在网上看到了对内核的一个定义,感觉比较靠谱;内核是与计算机硬件接口的易替换软件的最低级别。它负责将所有以“用户模式”运行的应用程序连接到物理硬件,并允许服务器的进程使用进程间通信(IPC)彼此获取信息。

  • 内核是与计算机硬件接口的易替换软件的最低级别;
  • 责将所有以“用户模式”运行的应用程序连接到物理硬件;
  • 允许服务器的进程使用进程间通信(IPC)彼此获取信息;

  根据这个大概有个印象,我们也知道了内核的一些基本功能:进程间的通信、连接硬件等等,还要一些别的功能,之后会有一些深入的研究。