参考文章:
Linux内核裁剪及编译
知识:
交叉编译器:
交叉编译器arm-linux-gcc :在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,这个编译过程就叫交叉编译.简单地说,就是在一个平台上生成另一个平台上的可执行代码.
1、linux内核组成linux内核组要由五个子系统组成:
- 进程调度
- 内存管理
- 文件系统
- 网络接口
- 进程间通信
(2)内存管理:进程控制块、进程调度、中断处理、任务队列、
定时器、bottom half队列、系统调用、进程通信等等
在Linux系统中,系统将内存地址按照物理地址和虚拟地址进行管理,实际的物理地址有操作系统内核进行进行分配。用户的进程则只能接触到虚拟地址。
其中每一个用户的进程都可以分配到完整的除了内核部分以外的全部虚拟内存。
用户进程涉及到的内存分配可以分为堆栈、BSS、数据段和代码段。操作系统部分则会分配固定、永久、动态内存映射区以及安全保护区域和直接映射最小区域
物理地址的管理使用分页和伙伴分配算法进行管理。另外还增加使用slab分配器进行补充。
(3)linux文件系统Ext2文件系统:对于linux系统来说,Linux系统的特点之一就是会将大部分操作当成文件。Linux系统对应的文件系统目录也是当做文件操作。可以将整个Linux文件系统目录理解为一个文件,在文件里保存着各个文件的名称和对应路径和指针。打开目录实际上也是打开文件 。
(4)网络接口Linux目录树
对Linux系统和用户来说,所有可操作的计算机资源都存在于目录树这个逻辑结构中,对计算机资源的访问都可以认为是目录树的访问。就硬盘来说,所有对硬盘的访问都变成了对目录树中某个节点也就是文件夹的访问,访问时不需要知道它是硬盘还是硬盘中的文件夹。
目录树的逻辑结构也非常简单,就是从根目录(/)开始,不断向下展开各级子目录。
内核源码可以在http://www.kernel.org上下载。读源码时参考的是http://lxr.linux.no/这个交差参考的网站
Linux的网络接口分为四部份:网络设备接口部份,网络接口核心部份,网络协议族部份,以及网络接口socket层。
网络接口设备部分是对硬件层实际驱动的部分。实现的文件在linu/driver/net目录下面;
网络接口核心部份负责封装网络协议的发送和接受接口,将硬件处理完全封装成为对网络接口的实际操作。
网络协议族部份负责提供具体的各种网络协议。
络接口Socket层为用户提供的网络服务的编程接口。主要的源码在linux/net/socket.c
(5)进程间通信linux使用的进程间通信方式
- 管道(pipe),流管道(s_pipe)和有名管道(FIFO)
- 信号(signal)
- 消息队列
- 共享内存
- 信号量
- 套接字(socket)



