Linux相关知识点的学习

Linux内核的目录及组成部分,以及之间的依赖关系

  • Linux内核源代码目录结构:arch,block,crypto,Documentation,,deviers,fs,include,init,ipc,,kernel,lib,mm,net,scripts,security,sound,usr,下面依次介绍各模块的相关功能
  • Linux内核的组成部分

Linux相关知识点的学习_第1张图片

Linux内核源代码目录结构:arch,block,crypto,Documentation,deviers,fs,include,init,ipc,kernel,lib,mm,net,scripts,security,sound,usr,下面依次介绍各模块的相关功能

arch:包含和硬件体系相关的的代码,每种平台占一个相应的目录,eg:i386,arm,PowerPC,mips等等;
block:块设备驱动程序IO调度;
crypto:常用加密和散列算法(如AES,SHA等)还有一些压缩和CRC校验算法;
Documentation:内核各部分的通用解释和注释;
drivers:设备驱动程序,每个不同的驱动占用一个子目录,如char字符设备驱动,block块设备驱动,net网咯设备驱动,mtd,i2c总线驱动等;
fs:支持的各种文件系统EXT,FAT,NTFS,JFFS2等;
include:头文件,与系统相关的头文件被放置在include/linux子目录下;
init:内核初始化代码;
ipc:进程间通信的代码;
kernel;内核的最核心部分,包括进程的调度,定时器等,而与平台相关的一部分代码放在arch//kernel目录下;
lib:库文件代码;
mm:内存管理代码,和平台相关的一部分代码放在arch/
/mm目录下;
net:网络相关的代码,实现了各种常见的网络协议;
scripts:用于配置内核的脚本文件;
security:主要是一个SELinux的模块。
sound:ALSA,OSS音频设备的驱动的核心代码和常用的设备驱动程序;
usr:实现了用于打包和解压的cpio等等;

Linux内核的组成部分

主要有进程间调度,内存管理,网络接口,虚拟文件系统,以及进程间通信

Linux相关知识点的学习_第2张图片
(1)进程的调度控制着系统中的多个进程对CPU的访问,是的多个进程在微观上串行,宏观上给人以并行的感觉,进程调度处于系统的中心位置,内核中其他子系统都以来依赖于它;
Linux的进程在几个状态之间进行切换(就绪,执行,等待可中断,等待不可中断,暂停以及僵尸状态这几种情况),在设备驱动编程中,当申请的资源不能得到满足时,(驱动一般会调度其他进程执行),并使该进程进入睡眠状态即(等待可中断状态),直到申请的资源满足了,该进程才会被唤醒进入就绪状态;
设备驱动中,如果需要几个并发执行的任务,可以启动内核线程,启动内核的函数为:
pid_t kernel_threal(int (fn)(void),void arg,unsigned long flags);
(2)内存管理:内存管理的主要目的是为了控制多个进程安全地访问共享内存;当CPU提供内存管理单元时,Linux内存管理完成为每一个进程进行
*虚拟内存到物理内存的转换***,一般而言,Linux的每个进程享有4GB的内存空间,0~3GB属于用户空间,3GB至4GB属于内核空间,内核空间对常规内存,I/O设备内存以及高端内存存在不同的处理方式
Linux相关知识点的学习_第3张图片
(3)虚拟文件系统(VFS):隐藏了各种硬件的具体细节,为所有的设备提供统一的接口,并且它独立于各个文件系统,是对各种文件系统的一个抽象,它使用超级块(super block)存放文件系统相关信息,使用用索引节点inode存放文件的物理信息,使用目录项dentry存放文件的逻辑信息。
Linux相关知识点的学习_第4张图片
(4)网络接口:提供各种网络标准的存取和各种网络硬件的支持;在Linux中网络接口可分为网络协议和网络驱动程序;网络协议部分负责实现每一种可能的网络传输协议;网络设备驱动负责与硬件设备通信,每一种可能的硬件设备都有相应的设备驱动程序。
Linux相关知识点的学习_第5张图片

(5)进程通信:支持提供进程之间的通信,Linux中支持进程间的多用通信机制,有名管道,无名管道,消息队列,共享内存,信号,信号量,套接字等,这些机制可协助解决多进程,多资源的互斥访问,进程间的同步和消息传递等。
Linux内核组成部分(进程调度,内存管理,虚拟文件系统(vfs)网络接口,进程通信)之间的依赖管理如下:
1,进程调度和内存管理相互依存,在多道程序环境下,程序要运行就要创建进程,而创建进程就又要为数据和程序装进内存
2,进程间通信与内存管理的关系:进程间通信子系统依赖内存管理支持共享内存机制,这种机制允许两个进程除了拥有自己的私有空间,还可以存取共同的内存区域;
(3),虚拟文件系统(VFS)与网络接口之间的关系:虚拟文件系统利用网络接口支持网络文件系统(NFS),也利用内存管理支持RAMDISK设备。
(4),内存管理与虚拟文件系统之间的关系:内存管理利用虚拟文件系统支持交换,交换进程(swapd)定期由调度程序调度,这也是内存管理依赖于进程调度的唯一原因。当一个进程存取的内存映射被换出时,内存管理想文件系统发出请求,同时挂起当前正在运行的进程。
(5)除此之外,内核中的所有子系统还要依赖于一些共同的资源。

你可能感兴趣的:(Linux设备驱动学习,linux)