Linux内核源代码的结构(转)

源代码所有在目录:/usr/src/linux (大部分linux发行版本中)

 init 内核初始化代码

 kernel 内核核心部分:进程、定时、程序执行、信号、模块。。。 
 mm 内存处理 
 arch 平台相关代码

 i386 IBM的PC体系结构

 kernel 内核核心部分

 mm 内存管理

 math-emu 浮点单元软件仿真

 lib 硬件相关工具函数

 boot 引导程序

 compressed 压缩内核处理

 tools 生成压缩内核映像的程序

 alpha 康柏的Alpha体系结构

 s390 IBM的System/390体系结构

 sparc Sun的SPARC体系结构

sparc64 Sun的Ultra-SPARC体系结构

 mips SGI的MIPS体系结构

 ppc Motorola-IBM的基于PowerPC的体系结构

 m68k Motorola的基于MC680x0的体系结构

 arm 基于ARM处理器的体系结构

 fs 文件系统

 proc /proc虚拟文件系统

 devpts /dev/pts虚拟文件系统

 ext2 Linux本地的Ext2文件系统

 isofs ISO9660文件系统(CD-ROM)

 nfs 网络文件系统(NFS)

 nfsd 集成的网络文件系统服务器

 fat 基于FAT的文件系统的通用代码

 msdos 微软的MS-DOS文件系统

 vfat 微软的Windows文件系统(VFAT)

 nls 本地语言支持

 ntfs 微软的Windows NT文件系统

 smbfs 微软的Windows服务器消息块(SMB)文件系统

 umsdos UMSDOS文件系统

 minix MINIX文件系统

 hpfs IBM的OS/2文件系统

 sysv SystemV、SCO、Xenix、Coherent和Version7文件系统

 ncpfs Novell的Netware核心协议(NCP0

 ufs UnixBSD、SunOs、FreeBSD、NetBSD、OpenBSD和NeXTStep文件系统

 affs Amiga的快速文件系统(FFS)

 coda Coda网络文件系统

 hfs 苹果的Macintosh文件系统

 adfs Acorn磁盘填充文件系统

 efs SGI IRIX的EFS文件系统

 qnx4 QNX4 OS使用不的文件系统

 romfs 只读小文件系统

 autofs 目录自动装载程序的支持

 lockd 远程文件锁定的支持

 Net 网络代码 
 Ipc System V的进程间通信 
 Drivers 设备驱动程序

 block 块设备驱动程序

 paride 从并口访问IDE设备的支持

 scsi SCSI设备驱动程序

 char 字符设备驱动程序

 joystick 游戏杆

 ftape 磁带流设备

 hfmodem 无线电设备

 ip2 IntelliPort的多端口串行控制器

 net 网卡设备

 sound 音频卡设备

 video 视频卡设备

 cdrom 专用CD-ROM设备(除ATAPI和SCSI之外)

 isd0n ISDN设备

 apl000 富士的AP1000设备

 macintosh 苹果的Macintosh设备

 sgi SGI的设备

 fc4 光纤设备

 acorn Acorn的设备

 misc 杂项设备

 pnp 即插即用的支持

 usb 通用串行总线(USB)的支持

 pci PCI总线的支持

 sbus Sun的SPARC SBus的支持

 nubus 苹果的Macintosh Nubus的支持

 zorro Amiga的Zorro总线的支持

 dio 惠普的HP300 DIO总线的支持

 tc Sun的TurboChannel支持(尚未完成)

 Lib 通用内核函数 
 Include 头文件(.h)

 linux 内核核心部分

 lockd 远程文件加锁

 nfsd 集成的网络文件服务器

 sunrpc Sun的远程过程调用

 byteorder 字节交换函数

 modules 模块支持

 asm-generic 平台无关低级头文件

 asm-i386 IBM的PC体系结构

 asm-alpha 康柏的Alpha体系结构

 asm-mips SGI的MIPS体系结构

 asm-m68k Motorola-IBM的基于PowerPC的体系结构

 asm-ppc Motorola-IBM的PowerPC体系结构

 asm-s390 IBM的System/390体系结构

 asm-sparc Sun的SPARC体系结构

 asm-sparc64 Sun的Ultra-SPARC体系结构

 asm-arm 基于ARM处理器的体系结构

 net 网络

 scsi SCSI支持

 video 视频卡支持

 config 定义内核配置的宏所在的头文件

 scripts 生成内核映像的外部程序 
 Documentation有关内核各个部分的通用解释和注释的文本文件

时间: 2024-08-02 00:07:30

Linux内核源代码的结构(转)的相关文章

Python提取Linux内核源代码的目录结构

今天用Python提取了Linux内核源代码的目录树结构,没有怎么写过脚本程序,我居然折腾了2个小时,先是如何枚举出给定目录下的所有文件和文件夹,os.walk可以实现列举,但是os.walk是只给出目录名和文件名,而没有绝对路径.使用os.path.listdir可以达到这个目的,然后是创建目录,由于当目录存在是会提示创建失败的错误,所以我先想删除所有目录,然后再创建,但是发现还是有问题,最好还是使用判断如果不存在才创建目录,存在时就不创建,贴下代码: # @This script can b

如何切入 Linux 内核源代码

Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人. 毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件.基本上,Linux内核中每一个目录下边都会有一个 Kconfig文件和一个Makefile文件.对于一个希望能够在Linux内核的汪洋代码里看到一丝曙光的人来说,将它们放在怎么重要的地位都

Linux内核源代码情景分析-内存管理之slab-回收

在上一篇文章Linux内核源代码情景分析-内存管理之slab-分配与释放,最后形成了如下图的结构: 图 1 我们看到空闲slab块占用的若干页面,不会自己释放:我们是通过kmem_cache_reap和kmem_cache_shrink来回收的.他们的区别是: 1.我们先看kmem_cache_shrink,代码如下: int kmem_cache_shrink(kmem_cache_t *cachep) { if (!cachep || in_interrupt() || !is_chaine

Linux内核源代码情景分析-系统调用mknod

普通文件可以用open或者create创建,FIFO文件可以用pipe创建,mknod主要用于设备文件的创建. 在内核中,mknod是由sys_mknod实现的,代码如下: asmlinkage long sys_mknod(const char * filename, int mode, dev_t dev) //比如filename为/tmp/server_socket,dev是设备号 { int error = 0; char * tmp; struct dentry * dentry;

Linux内核源代码情景分析-文件系统的安装

执行sudo mount -t ext2 /dev/sdb1 /mnt/sdb,将文件系统挂在到/mnt/sdb上.系统调用mount,映射到内核层执行的是sys_mount.假设/dev/sdb1和/mnt/sdb都位于ext2文件系统中. asmlinkage long sys_mount(char * dev_name, char * dir_name, char * type, unsigned long flags, void * data)//dev_name指向了"/dev/sdb

Linux内核源代码情景分析-访问权限与文件安全性

在Linux内核源代码情景分析-从路径名到目标节点,一文中path_walk代码中,err = permission(inode, MAY_EXEC)当前进程是否可以访问这个节点,代码如下: int permission(struct inode * inode,int mask) { if (inode->i_op && inode->i_op->permission) { int retval; lock_kernel(); retval = inode->i_

Linux内核源代码情景分析-文件系统安装后的访问

在Linux内核源代码情景分析-文件系统的安装,一文中,已经调用sudo mount -t ext2 /dev/sdb1 /mnt/sdb,在/mnt/sdb节点上挂载了文件系统,那么我们接下来访问/mnt/sdb/hello.c节点.我们来看一下path_walk的执行有什么不同? int path_walk(const char * name, struct nameidata *nd) { struct dentry *dentry; struct inode *inode; int er

Linux内核源代码情景分析-内存管理

用户空间的页面有下面几种: 1.普通的用户空间页面,包括进程的代码段.数据段.堆栈段.以及动态分配的"存储堆". 2.通过系统调用mmap()映射到用户空间的已打开文件的内容. 3.进程间的共享内存区. 这些页面的的周转有两方面的意思. 1.页面的分配,使用,回收.如进程压栈时新申请的页面,这类页面不进行盘区交换,不使用时释放得以回收. 这部分通过一个场景来解释: Linux内核源代码情景分析-内存管理之用户堆栈的扩展. 2.盘区交换.如要执行硬盘上的对应代码段.把硬盘上的代码段换入内

Linux内核源代码情景分析-共享内存

一.库函数shmget()--共享内存区的创建与寻找 asmlinkage long sys_shmget (key_t key, size_t size, int shmflg) { struct shmid_kernel *shp; int err, id = 0; down(&shm_ids.sem); if (key == IPC_PRIVATE) { err = newseg(key, shmflg, size);//分配一个共享内存区供本进程专用,最后返回的是一体化的标示号 } el