linux驱动编程(四)--Linux体系结构、Linux内核结构

一、Linux体系结构

这里写图片描述

1.内核空间(kernel space)

-系统调用接口
-内核支持
-硬件支持

2.用户空间(user space)

-用户应用
-c库
为何分开?
答:分工产生效率
安全角度:cpu工作模式不同,执行的指令或者访问的寄存器不同
通过“系统调用”和“硬件中断”来完成用户空间到内核空间的转移

二、Linux内核结构

这里写图片描述

1.SCI层(System Call Interface)

提供一套标准的系统调用函数来访问Linux内核

2.PM层(Process Management)

创建进程(fork,exec)
停止进程(kill,exit)
进程通信(signal)
进程调度
控制活动进程共享CPU

3.MM层(Memory management)

控制多个进程安全的共享内存区域

4.VFS虚拟文件系统(Virtual File System)

隐藏各种文件的具体细节,为文件系统提供统一的接口
一切皆文件

5.设备驱动(Device Drivers)

控制特定的硬件设备
网络设备
块设备
字符设备
杂项设备

6.网络协议栈(Nerwork Stack)

网络实现协议

三、Linux内核源码目录结构

这里写图片描述
树型结构

arch目录–平台目录,架构目录

内核支持的每个的cpu架构对应一个子目录arm,x86,powerpc,mips等
包括boot mm kernel等子目录,分别控制系统引导,内存管理,系统调用,还有lib(硬件相关库) tools(生成镜像工具)等。还包括动态调频,主频设置等

binary目录 无源码驱动以二进制放到该文件

block目录 部分块设备驱动

crypto目录 加密压缩CRC校验

Documentation目录 内核使用说明文档

drivers目录 设备驱动

firmware目录 固件接口

fs目录 存放各种文件系统的实现代码

include目录 通用头文件

init目录 内核初始化代码

ipc目录 进程通信源码

virt目录 内核虚拟机

kernel目录 Linux核心功能源码,程序调度,进程控制,模块化

lib目录 库文件代码

mm目录 实现内存管理(与平台体系无关的部分)

net目录 网络协议实现代码

samples目录 内核编程的范例

script目录 配置裁剪内核的工具脚本

security目录 安全模型代码

sound目录 音频设备的驱动程序

tools目录 将.c编译成目标文件,连接合并成可运行的内核镜像文件

usr目录 实现用于打包(tar)和压缩(cp)的cpio等

猜你喜欢

转载自blog.csdn.net/liuxiaodong400/article/details/82192291