ARM-Linux内核

        Linux操作系统诞生于1991年,可安装在各种计算机硬件设备中,例如各种智能移动终端、路由器、台式计算机、大型机和超级计算机等。Linux 支持包括 x86、ARM、MIPS和Power PC 等在内的多种硬件体系结构。Linux 存在着许多不同的版本,但它们都使用了Linux内核。Linux 是一个一体化内核(monolithic kernel)系统。这里的“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件,一个内核不是一套完整的操作系统。一套建立在 Linux 内核的完整操作系统叫作 Linux 操作系统,或是GNU/Linux.

        Linux 操作系统的灵魂是 Linux 内核内核为系统其他部分提供系统服务。ARM-Linux内核是专门适应 ARM 体系结构设计的 Linux 内核,它负责整个系统的进管理和调度、内存管理、文件管理、设备管理和网络管理等主要系统功能。

一.ARM-Linux概述

1.GNU/Linux操作系统的基本体系结构

        GNU/Linux操作系统的基本体系结构如图所示。从图中可以看到GNU/Linux被分成了两个空间。
        相对于操作系统其他部分,Linux 内核具有很高的安全级别和严格的保护机制。这种机制确保应用程序只能访问许可的资源,而不许可的资源是拒绝被访问的。因此系统设计者将内核和上层的应用程序进行抽象隔离,分别称之为内核空间和用户空间。如图所示。

        用户空间包括用户应用程序和 GNU C库(glibc 库),负责执行用户应用程序。在该空间,一般的应用程序是由 glibe 库间接调用系统调用接口而不是直接调用内核的系统调用按口去访问系统资源。这样做的主要理由是内核空间和用户空间的应用程序使用的是不同的保护地址空间。每个用户空间的进程都使用自己的虚拟地址空间,而内核则占用单独的地址空间。从面向对象的思想出发,glibc 库对内核的系统调用接口做了一层封装。

         用户空间下面的是内核空间。Linux内核空间可以进一步划分成3层。最上面是系统调用接口(System Call Interface,SCI),它是用户空间与内核空间的桥梁,用户空间的应用程序通过这个统一接口来访问系统中的硬件资源,通过此接口,所有的资源访问都是在内核的控制下执行,以免导致用户程序对系统资源的越权访问,从而保障了系统的安全和稳定。系统调用接口从功能上来看实际上是一个非常有用的函数调用多路复用器和多路分解服务器。用户可以在./linux/kernel 中找到系统调用接口的实现代码。系统调用接口之下是内核代码部分,实际可以更精确地定义为独立于体系结构的内核代码。这些代码是 Linux所支持的所有处理器体系结构所通用的。在这些代码之下是依赖于体系结构的代码,构成了通常称为板级支持包(Board Support Package.BSP)的部分。这些代码用作给定体系结构的处理器和特定于平台的代码,一般位于内核的arch 目录(./linux/arch 目录)和drivers目录中。arch 目录含有诸如x86、ia64、arm 等体系结构的支持;drivers 目录含有块设备、字符设备、网络设备等不同硬件驱动的支持。

2.ARM-Linux内核的主要架构及功能

        Linux内核主要架构如图所示。根据内核的核心功能,Linux内核具有5个主要的子系统,分别负责如下的功能:进程管理、内存管理、虚拟文件系统、进程间通信和网络管理

1.进程管理

        进程管理负责管理 CPU资源,以便让各个进程能够以尽量公平的方式访问 CPU。进程管理负责进程的创建和销毁,并处理它们和外部世界之间的连接(输入/输出)。除此之外,控制进程如何共享的调度器也是进程管理的一部分。概括来说,内核进程管理活动就是在单个或多个 CPU上实现了多个进程的抽象。进程管理源代码可参考/inux/kernel目录。

2.内存管理

        Linux内核所管理的另外一个重要资源是内存,内存管理策略是决定系统性能好坏的、个关键因素。内核在有限的可用资源之上为每个进程都创建了一个虚拟空间。内存管理的源代码可以在/linux/mm 中找到。

3.虚拟文件系统

        文件系统在 Linux内核中具有十分重要的地位,用于对外设的驱动和存储,隐藏了各种硬件的具体细节。Linux引人了虚拟文件系统(Virtual File System,VFS)为用户提供了统一、抽象的文件系统界面,以支持越来越繁杂的具体的文件系统。Linux 内核将不同功能的外部设备,例如 Disk 设备(硬盘磁盘、NAND Flash,NOR Flash 等)、输入/输出设备、显示设备等,抽象为可以通过统一的文件操作接口来访问。Linux 中的绝大部分对象都可被视为文件并可对其进行相关操作。

4.进程间通信

        不同进程之间的通信是操作系统的基本功能之一。Linux 内核通过支持 POSIX 规范中标准的IPC(Inter Process Communication,相互通信)机制和其他许多广泛使用的IPC机制实现进程间通信。IPC不管理任何的硬件,它主要负责 Linux 系统中进程之间的通信例如UNIX 中最常见的管道、信号量、消息队列和共享内存等。另外,信号(signal)也常被用来作为进程间的通信手段。Linux内核支持 POSIX规范的信号及信号处理并广泛应用。

5.网络管理

        网络管理提供了各种网络标准的存取和各种网络硬件的支持,负责管理系统的网络设备,并实现多种多样的网络标准。网络接口可以分为网络设备驱动程序和网络协议。

        这5个系统相互依赖,缺一不可,但是相对而言,进程管理处于比较重要的地位,其他子系统的挂起和恢复进程运行都必须依靠进程调度子系统的参与。当然,其他子系统的地位也非常重要:调度程序的初始化及执行过程中需要内存管理模块分配其内存地址空间并进行处理;进程间通信需要内存管理实现进程间的内存共享;而内存管理利用虚拟文件系统支持数据交换,交换进程(swapd)定期由调度程序调度;虚拟文件系统需要使用网络接口实现网络文件系统,而且使用内存管理子系统实现内存设备管理,同时虚拟文件系统实现了内存管理中内存的交换。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值