linux 内核开发

linux的体系结构

从大的方面可以分为用户空间(User Space)和内核空间(Kernal Space)。
linux 内核开发_第1张图片

用户空间

  • C库
  • 用户应用程序
  • shell(某些体系包含)

内核空间

  • 硬件平台
  • 平台依赖代码
  • 内核
  • 系统调用接口

系统分层

从程序员的角度:

将 linux 底层和和应用分开,将 linux 底层和应用分开,做应用的做应用,做底层的做底层,各干各的。经济学的基本原理是,分工产生效率。

从安全的角度:

为了保护内核。

以 ARM 为例:ARM 实现了 7 种工作模式,不同模式下 CPU 可以执行的指令或者访问的寄存器不同:
(1)用户模式 usr
(2)系统模式 sys
(3)管理模式 svc
(4)快速中断 fiq
(5)外部中断irq
(6)数据访问终止 abt
(7)未定义指令异常。
如果任何一个上层应用都可以调用都可以调用寄存器,那样肯定是无法稳定执行的。而且因为出现了这个问题,出现了一个新的学科“现代操作系统”。

linux内核结构

linux 内核开发_第2张图片

SCI 层(System Call Interface),这一层是给应用用户空间提供一套标准的系统调用函
数来访问 Linux。前面分析 Linux 体系结构的时候,介绍过任何一类现代操作系统都不会允许
上层应用直接访问底层,在 Linux 中,内核提供了一套标准接口,上层应用就可以通过这一套
标准接口来访问底层。

PM(Procees Management),这一部分包括具体创建创建进程(fork、exec),停止进
程(kill、exit),并控制他们之间的通信(signal 等)。还包括进程调度,控制活动进程如何共
享 CPU。这一部分是 Linux 已经做好的,在写驱动的时候,只需要调用对应的函数即可实现这
些功能,例如创建进程、进程通信等等。

MM(Memory Management),内存管理的主要作用是控制多个进程安全的共享内存
区域。

VFS(Virtual File Systems),虚拟文件系统,隐藏各种文件系统的具体细节,为文件操
作提供统一的接口。在 Linux 中“一切皆文件”,这些文件就是通过 VFS 来实现的。Linux 提
供了一个大的通用模型,使这个模型包含了所有文件系统功能的集合。如下图所示,是一个虚
拟文件系统的结构图。

linux 内核开发_第3张图片

Device Drivers 设备驱动,这一部分就是需要学习和掌握的。Linux 内核中有大量的代码在设备驱动程序部分,用于控制特定的硬件设备


Linux 驱动一般分为网络设备、块设备、字符设备、杂项设备,需要编写的只有字符设备,杂项设备是不容易归类的一种驱动,杂项设备和字符设备有很多重合的地方。


网络协议栈,Linux 内核中提供了丰富的网络协议实现。


你可能感兴趣的:(c)