Linux系统的学习小结

2019-04-20

一、Linux内核的结构与组成
Linux是一种自由软件,也是开源软件,它是一款类Unix系统。


Linux采用模块化设计,将接口与其实现分离开来,保证一个模块可以在不影响其他模块的情况下进行修改,这其实就是单内核的内核结构所决定的特性。Linux还支持动态装载内核模块,允许根据特定设备的需要或者用户的指令动态地加载或卸载部分内核代码。


Linux还支持内核线程,为了让内核能并行执行多几个流,防止在处理异步事件时可能的阻塞,Linux使用内核线程将内核分成几个功能模块。内核线程的调度由内核负责,一个内核线程处于阻塞状态时不影响其他的内核线程。


下图显示了Linux操作系统的基本组织结构。上层运行在用户空间,下层运行在内核空间。


                                           


Linux系统中,Linux内核运行在单独的内核地址空间,系统调用也在内核空间实现;每个用户进程则使用自己的虚拟地址空间。GLIBC是可移植的标准C库函数实现,提供标准I/O和标准流的一系列接口。应用程序通过GLIBC调用通用函数和内核的内部功能。当应用程序进行系统调用时,GLIBC提供挂钩函数通过一系列操作在用户空间和内核空间之间进行转化。


Linux的内核空间大致可以划分为如下三个层次:


最上层是系统调用接口,是内核与应用程序进行交互的唯一接口,应用程序/GLIBC通过系统调用访问内核中的特定函数,以实现特定的服务。


最下层是BSP,这部分代码用于支持特定体系结构的处理器和特定的硬件平台,例如引导加载程序,以及与DMA、MMU设置、中断处理相关的代码等。


中间层是内核的核心部分,是确保Linux所支持的所有处理器体系结构通用的代码。它的主要功能是管理系统资源、确保系统安全和隔离保护各个用户等。Linux内核内部包含了若干相互关联的组成部件,主要有:


(1)初始化部件;(2)进程调度器;(3)内存管理器;(4)虚拟文件系统;(5)网络接口;(6)进程间通信;(7)可加载模块;(8)设备驱动程序。






上图显示了Linux内核中各个组件的关系。处于中心位置的是进程调度,所有其它的子系统都依赖于该组件控制进程的执行。举例而言,当某进程通过网络接口发送信息时,网络接口组件会将该进程挂起,直到硬件成功地完成消息的发送后,网络接口向该进程返回代表操作成功或失败的代码并唤醒该进程。


二、Linux的实时化技术
作为自由和开源的操作系统软件,Linux以其代码开放性、强大的网络功能和接近于零的成本成为中低端服务器和台式工作站的理想操作环境,被众多厂商和用户所支持。


嵌入式Linux是对通用Linux操作系统进行裁剪修改并使之适应嵌入式环境的操作系统。它兼收并蓄了互联网上丰富的Linux开源资源,又具有嵌入式操作系统的特性。嵌入式Linux的主要改进集中在实时性增强、内核精简、支持多种体系结构等方面。Linux的实时化技术主要体现在三个方面,分别是:


(1)内核补丁方式,如MontaVistaLinux;(2)双内核方式,如RTLinux;(3)超微内核方式,如ADEOS。