linux内核第一记
 
1.linux体系结构




 
从上图可知,Linux分为:用户空间和内核空间。内核空间和用户空间是程序执行的两种不同的状态,通过系统调用和硬件中断能够完成从用户空间到内核空间的转移。
  www.2cto.com  
2.linux内核架构




 
2.1系统调用接口(SCI)
SCI层为用户空间提供了一套标准的系统调用函数来访问Linux内核,搭起了用户空间到内核的桥梁。
2.2进程管理(PM)
进程管理的重点是创建进程(fork,exec),停止进程(kill,exit),并控制他们之间的通信(singal或POSIX机制),进程管理还包括控制活动进程如何共享CPU(进程调度).。

 
2.3内存管理(MM)
内存管理的主要作用是控制多个进程安全的共享内存区域。
2.4网络协议栈(NS)
网络协议栈为Linux提供了丰富的网络协议实现。
2.5虚拟文件系统(VFS)  www.2cto.com  
VFS隐藏各种文件系统的具体细节,为文件操作提供统一的接口。




 
2.6设备驱动(DD)
Linux内核中有大量的代码都在设备驱动程序中,他们控制特定的硬件设备。
2.7 Arch
Arch中包含内核所支持的每种CPU体系,在Arch目录中,都有每种CPU体系对应的子目录,子目录中又包含boot,mm,kenerl等子目录,分别控制系统引导,内存管理,系统调用等。如X86体系如下图:
 

linux内核第二记
 
目录结构(一般修改Arch和Drivers目录中的文件)
  www.2cto.com  
1.block目录
部分块设备驱动程序
2.crypto目录
加密、压缩、CRC校验算法
3.documentation
内核的文档
4.drivers目录
设备驱动程序
5.fs目录
存放各种文件系统的实现代码。每个子目录对应一中文件系统的实现,公用的源程序用于实现虚拟文件系统VFS
  www.2cto.com  



 
6.include目录
内核所需要的头文件。与平台无关的头文件在include/linux子目录下,与平台相关的都文件则放在相应的子目录中。
7.init目录
内核初始化代码
8.ipc目录
进程间通信实现代码
9.kenerl目录
Linux大多数核心功能都在这个目录实现(调度程序、进程控制、模块化)。
10.lib目录
库文件代码
11.mm目录
mm目录中的文件用于实现内存管理中与体系结构无关的部分
12.net目录
网络实现的协议代码
  www.2cto.com  





13.samples目录
一些内核编程的范例
14.script目录
配置内核的脚本
15.security目录
SElinux的模块
16.sound目录
音频设备的驱动程序
17.usr目录
cpio命令实现
18.virt目录
内核虚拟机



linux内核第三记
 
Linux内核配置
Linux内核具有可定制的优点,具体步骤如下:

 
1.清理临时文件,中间文件和配置文件
·make clean:删除大部分产生文件(如编译中的.o文件)但是把配置保留下来。
·make mrproper:删除所有产生文件并把配置文件也删除了。
·make distclean:在make mrproper的基础上,还要删除编辑器文件和补丁文件。




 
2.确定目标系统的软硬件配置情况,比如CPU的型号,网卡的型号,所支持的网络协议等。

 
3.使下列的命令之一配置内核:

 
·make config:基于文本模式的交互式配置(以提问的方式配置)。




 
·make menuconfig:基于文本模式的菜单型配置(推荐使用)。




 
·make oldconfig:使用已有的配置文件(.config),但是会询问新增的配置选项。




 
·make xconfig:图形化的配置(需要安装图形化系统)

 
如果没有安装qt:  www.2cto.com  
sudo apt-get install libqt3-mt
sudo apt-get install libqt3-mt-dev
sudo make xconfig:


 
在make menuconfig后,ls -a:注意多了一个.config文件








 
一般情况下都用make menuconfig:如上图,y=*、n=[]、M,y或*代表的是将这个项目编译到内核中,n或空为不选择,M表示编译成模块。

 
[*]A.c---->A.o\
                        --->zimage(*要经历编译和连接)
[*]B.c---->B.o/
[M]D.c---->D.o(指编译)
[]E.c---X(不编译不连接)
 
配置项的选择:
参见内核配置参考.doc
常常利用已有的内核配置参考进行修改。例如进入arm中的s3c2410的配置:
 




 
把该配置拷贝到liunx内核下的.config中,然后在此基础上进行修改。
如:cp s3c2410_defconfig ../../../.config  www.2cto.com  
 
假如我要将我修改本身系统运行的内核:
 
 
 

linux内核体系结构的更多相关文章

  1. Linux内核剖析(二)Linux内核绪论

    什么是内核 内核是操作系统最基本的部分.它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间.内核的分类可分为单内核和双内 ...

  2. 和菜鸟一起学linux内核源码之基础准备篇

    来源:http://blog.csdn.net/eastmoon502136/article/details/8711104 推荐阅读:linux内核源码最初版linux内核源代码,简单易懂,适合初学 ...

  3. 查看Linux内核版本

    您可能因多种原因需要确切知道GNU / Linux操作系统上运行的内核版本. 也许您正在调试与硬件相关的问题,或者了解影响旧内核版本的新安全漏洞,并且您想知道您的内核是否易受攻击. 无论是什么原因,从 ...

  4. Linux基础系列—Linux体系结构和Linux内核结构

    /** ****************************************************************************** * @author    暴走的小 ...

  5. Linux内核异常处理体系结构详解(一)【转】

    转自:http://www.techbulo.com/1841.html 2015年11月30日 ⁄ 基础知识 ⁄ 共 6653字 ⁄ 字号 小 中 大 ⁄ Linux内核异常处理体系结构详解(一)已 ...

  6. Linux内核0.11体系结构 ——《Linux内核完全注释》笔记打卡

    0 总体介绍 一个完整的操作系统主要由4部分组成:硬件.操作系统内核.操作系统服务和用户应用程序,如图0.1所示.操作系统内核程序主要用于对硬件资源的抽象和访问调度. 图0.1 操作系统组成部分 内核 ...

  7. Linux内核启动过程概述

    版权声明:本文原创,转载需声明作者ID和原文链接地址. Hi!大家好,我是CrazyCatJack.今天给大家带来的是Linux内核启动过程概述.希望能够帮助大家更好的理解Linux内核的启动,并且创 ...

  8. Linux内核--内核数据类型

    转自:http://www.linuxidc.com/Linux/2013-12/93637.htm 将Linux 移植到新的体系结构时,开发者遇到的若干问题都与不正确的数据类型有关.坚持使用严格的数 ...

  9. linux内核分析作业8:理解进程调度时机跟踪分析进程调度与进程切换的过程

    1. 实验目的 选择一个系统调用(13号系统调用time除外),系统调用列表,使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 分析汇编代码调用系统调用的工作过程,特别是参数的传递的方 ...

随机推荐

  1. windows的MySQL安装

    Window环境下: 1.下载MySQL MySQL社区版:https://dev.mysql.com/downloads/mysql/ MySQL商业版:https://www.mysql.com/ ...

  2. 蓝桥杯练习系统—基础练习 2n皇后问题

    问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后, 使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行. 同一列或 ...

  3. C++——带默认参数值的函数

    函数在声明时可以预先给出默认的形参值,调用时如给出实参,则采用实参值,否则采用预先给出的默认参数值. ,) { return x + y;} int main() { add(,);//10+20 a ...

  4. SAP字符串处理

    拼接字符串 CONCATENATE t1 t2 INTO result. "直接拼接 CONCATENATE t1 t2 INTO result SEPARATED BY space. &q ...

  5. 给php加速安装APC

    说明:APC-3.1.13 适应于 php-5.4.27 下载: wget http://blog.xinfilm.com/softdir/APC-3.1.13.tgz tar -zxvf APC-3 ...

  6. iOS-电子书开发 笔记

    前言 刚接手电子书项目时,和安卓开发者pt Cai老师[aipiti Cai,一个我很敬佩很资深的开发工程师,设计领域:c++.Java.安卓.QT等]共同商议了一下,因为项目要做要同步,移动端[手机 ...

  7. 如何解决Linux 系统下 ifconfig 命令无网络接口 ens33

    今天我在做Redis的哨兵集群模式的时候,以前都是好的,也不知道从什么时候开始就无法连接Redis服务器了,就是运行如下命令,没有效果:redis-server redis.conf,然后在通过命令查 ...

  8. 洛谷 [P2483] [模板] k短路

    人生中的第一道黑题... 其实就是k短路模板 #include <iostream> #include <cstdio> #include <cstring> #i ...

  9. POJ 2185 Milking Grid [KMP]

    Milking Grid Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 8226   Accepted: 3549 Desc ...

  10. WdatePicker-限制日期选择

    场景: 1. 开始时间,和结束时间最大选择今天. 2. 开始时间和结束时间的最大时间间隔为30天. jsp代码: <!-- 时间段 --> <form> <!-- 开始时 ...