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. 【sed & awk 第二版笔记】以州和人名排列_P38

    [root@nhserver1 02]# cat listJohn Daggett, 341 King Road, Plymouth MAAlice Ford, 22 East Broadday, R ...

  2. GitHub For Beginners: Don’t Get Scared, Get Started

    It's 2013, and there's no way around it: you need to learn how to use GitHub.2 Why? Because it's a s ...

  3. 什么是NAS.什么是黑白群晖?(转)

    前言               为了让更多的新人可以简单了解什么是nas,什么是黑群晖.什么是白群晖!有什么作用?特此制作以下教学!(原文为MOMO所写).图片也大体从互联网上下载.有对原作者不便之 ...

  4. records.config文件参数解释

    # Process Records Config File # # <RECORD-TYPE> <NAME> <TYPE> <VALUE (till end ...

  5. @Controller注解

    Spring从2.5版本后开始引入注解,用户可以使用@Controller,@RequestMapping,@RequestParam,@ModelAttribute等类似这样的注解. @Contro ...

  6. 一道python面试题引发的血案

    这里说的是一道阿里校招的面试题:一行代码实现对列表a中的偶数位置的元素进行加3后求和? 今天去面试同样遇到了这个题目,这道题考察的是对python高阶函数map/filter的灵活运用(具体的使用方法 ...

  7. Java中的递归调用

    Java中不合理的使用递归调用,可能会导致栈内存溢出,这点是需要注意的. java将为每个线程维护一个栈,栈里将为每个方法保存一个栈帧,栈帧代表了一个方法的运行状态. 也就是我们常说的方法栈.最后一个 ...

  8. 汇编之EBP的认识。

    说到EBP就不能忽略了ESP.ESP是一个指针,始终执行堆栈的栈顶.而EBP就是那个所谓的堆栈了. 先看几个例子吧. push ebp ; 把ebp,堆栈的0地址压入堆栈 mov ebp,esp ; ...

  9. 2018/2/11 ELK技术栈之ElasticSearch学习笔记二

    终于有时间记录一下最近学习的知识了,其实除了写下的这些还有很多很多,但懒得一一写下了: ElasticSearch添加修改删除原理:ElasticSearch的倒排索引和文档一旦生成就不允许修改(其实 ...

  10. IntelliJ IDEA环境配置

    [pojie](https://www.cnblogs.com/suiyueqiannian/p/6754091.html) Error running Tomcat8: Address localh ...