嵌入式Linux应用程序开发:嵌入式操作系统(EOS)简介

2019-07-12 22:51发布

class="markdown_views prism-atelier-sulphurpool-light">

1. 嵌入式Linux简介

嵌入式

Devices used to control, monitor, or assist the operation of equipment, machinery or plants. 控制、监视或者辅助装置、设备、机器运行的装置。 嵌入式系统是软件和硬件的综合体,可以涵盖机械等附属装置。目前普遍被认同的定义是:以应用为中心、以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

操作系统

操作系统(Operating System, OS)是管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统是控制其他程序运行,管理系统资源并为用户提供操作界面的系统软件的集合。
操作系统功能:管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。

Linux

Linux是一种自由和开放源码的类Unix操作系统。目前有许多不同的Linux,但都使用Linux内核。Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式机、大型机和超级计算机。 Linux作为嵌入式操作系统的优势:
  1. 低成本开发系统
  2. 可应用于多种硬件平台
  3. 源码开放,软件丰富
  4. 可定制内核,
  5. 性能优异,高效稳定
  6. 良好的网络支持与文件管理

2.操作系统基础

由内核(kernel)和一些完成特定任务的应用程序组成。计算机系统的层次结构图如下:
在这里插入图片描述
内核是OS的核心: 硬件的第一层软件扩充,管理CPU、内存、硬件设备、文件存储,网络收发、系统启动等。
OS是具体复杂硬件操作和抽象简单的程序操作的接口

Linux系统结构:

在这里插入图片描述

操作系统的接口:

1)用户级接口
2)程序员级接口

操作系统的功能(内核的子系统):

1)处理器管理(进程管理):提高处理器的使用率;程序的执行过程
2)内存管理:内存的扩充、分配、保护等
3)文件系统管理:软件资源的管理方法,包括文件读取、文件共享、文件保护
4)设备管理:一方面提高设备的利用率,另一方面隐蔽设备操作的各种细节
5)网络管理:网络设备的控制和网络协议

Linux各子系统以及之间的关系:

在这里插入图片描述
1)进程调度:控制着进程对CPU的访问。当需要选择进程运行时,由调度程序选择最值得运行的进程。就绪进程是仅等待 CPU资源的进程。Linux 使用了比较简单的基于优先级的进程调度算法选择新的进程。
2)内存管理:允许多个进程安全地共享主内存区域 。Linux的内存管理支持虚拟内存,在计算机中运行的程序,其代码、数据和堆栈的总量可以超过实际内存的大小,操作系统只将当前使用的程序块保留在内存中,其余程序块则保留在磁盘上。必要时,操作系统负责在磁盘和内存之间交换程序块。内存管理从逻辑上可以分为硬件无关的部分和硬件相关的部分。硬件无关的部分提供了进程的映射和虚拟内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。
3)虚拟文件系统:隐藏了各种不同硬件的具体细节,为所有设备提供了统一的接口,VFS还支持多达数十种不同的文件系统,是Linux的特 {MOD}。虚拟文件系统可分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2, fat等,设备驱动程序指为每种硬件控制器所编写的设备驱动程序模块。
4)网络接口:提供了对各种网络标准协议的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序两部分。网络协议部分负责实现每一种可能的网络传输协议,网络设备驱动程序负责与硬件设备进行通信。
5)进程间通信:支持进程间各种通信机制。
进程调度处于中心位置,所有其它的子系统都依赖于它,因为每个子系统都需要挂起或恢复进程。一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。例当一个进程通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功地完成消息的发送;当消息被发送出去以后,网络接口给进程返回一个代码,表示操作的成功或失败。其它子系统以相似的理由依赖于进程调度。
① 进程调度与内存管理之间的关系:这两个子系统互相依赖。在多道程序环境下,程序要运行必须为之创建进程,而创建进程的第一件事,就是要将程序和数据装入内存。
② 进程间通信与内存管理的关系:进程间通信子系统要依赖内存管理支持共享内存通信机制,这种机制允许两个进程除了拥有自己的私有内存,还可存取共同的内存区域。
③ 虚拟文件系统与网络接口之间的关系:虚拟文件系统利用网络接口支持网络文件系统(NFS),也利用内存管理支持RAMDISK 设备。
④ 内存管理与虚拟文件系统之间的关系:内存管理利用虚拟文件系统支持交换,交换进程(swapd)定期地由调度程序调度,这也是内存管理依赖于进程调度的唯一原因。当一个进程存取的内存映射被换出时,内存管理向文件系统发出请求,同时挂起当前正在运行的进程。

操作系统体系结构

  1. 模块结构
    将操作系统内核按照功能划分为一个个单独的模块,模块之间相对独立,只能通过预先规定好的接口方式来调用,它们共享数据。模块是系统设计和实现的基本单位。每一个模块实现一个完整单独的功能,所有模块之间相互调用,共同构成完整的系统内核。
    优点:模块之间没有限制, 效率高。
    缺点:全局函数过多, 访问控制困难, 结构不清晰。Linux内核属于模块结构。
  2. 层次结构
    层次结构是把操作系统的内核按照一定的规则划分为一系列相互依赖的层次,每个层次也可分解为一系列更小的模块。模块负责完成一部分特定的功能,只能与相邻的层次发生直接的联系,所有这些层次的组合,就实现了整个系统。特殊的模块式结构。
    优点:方便系统的移植和扩充。
    缺点:牺牲灵活性和效率。MS-DOS采用层次结构。
  3. 对象结构
    对象也可理解为一种特殊的模块,它由一组数据集、以及定义在其上的操作集封装而成。在对象结构方法中,系统内核以对象实体为单位进行组织,每个内核对象实体都有自己的数据和操作,对象之间通过消息传递来协调工作,它们之间是典型客户机/服务器关系。
    优点:开发难度低,有良好的扩展性和移植性,适用于分布式系统。
    缺点:效率低。Windows NT/2K及Solaris是对象结构。

操作系统内核

  1. 宏内核(monolithic kernel)
    在运行过程中,内核是一个单独 的内存映像,或者说是一个独立不可分割的进程。效率高,Linux属于此。
  2. 微内核(micro kernel)
    操作系统内核是一组相互协作的独立的进程,而最核心的进程才是OS实际的内核,这个进程一般负责其他内核进程之间的交互。微内核相当于一个消息管理器,安全性好,消息传递开销,效率低。
    微内核的设计可将很多在宏内核中原本属于内核的程序移出内核,使得操作系统更加稳定。比如在宏内核中文件系统运行在内核态,而微内核架构中其在用户态,这样即使文件
    系统出问题也不会影响OS。很明显微内核的架构强于宏内核的设计。
    Mac os/Windows等属于微内核架构,传统的unix和linux是宏内核架构。
    一般来说宏内核更容易实现;微内核实现难度更大,主要因为微内核架构里进程通信是异步的,难于调试且更易有bug,但实现后也会更强大。linus也认为微内核的设计更好些,linux被设计宏内核主要是因为宏内核更易实现,linux也做了模块化的设计。
  3. 混合内核

嵌入式操作系统

EOS (Embedded Operating System)是嵌入式系统的关键部件,它负责嵌入式系统的全部软、硬件资源的分配、调度工作,控制协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
EOS除具备了一般OS最基本的功能,还有以下特点:
(1) 可装卸性。开放性、可伸缩性的体系结构。
(2) 强实时、高效。EOS实时性一般较强,可用于各种设备控制中。
(3) 硬件依赖性。提供各种设备驱动接入。
(4) 操作方便、简单。提供友好的图形GUI,易学易用。
(5) 强大的网络功能。支持TCP/IP及其它协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。
(6) 强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预,要求负责系统管理的EOS有较强的稳定性。EOS一般不提供操作命令,通过系统调用向用户程序提供服务。
(7) 固化代码。在嵌入系统中,EOS和应用软件被固化在嵌入式系统ROM中,辅助存储器很少使用。因此EOS的文件管理功能应该能够很容易地拆卸,而用各种内存文件系统。
(8) 良好的移植性。更好的硬件适应性。
开放源代码的Linux很适于做嵌入式系统的开发。如中科红旗软件技术有限公司开发的红旗嵌入式Linux和美商网虎公司开发的基于Xlinux的嵌人式操作系统“夸克Quark”。
常见的嵌入式系统有: Linux、uClinux、Win CE(mobile)、Palm OS、Symbian、eCos、uC/OS-Ⅱ、VxWorks(pSOS)、Nucleus、ThreadX 、Rtems 、QNX、Android、iphone OS、meego(moblin)、montavista、Blackberry OS等。

3.思考

  1. 操作系统的主要功能有哪些?操作系统的接口有几种?
  2. 操作系统的内核有哪几种形式?各有什么特点?
  3. EOS有哪些要求?Linux作为EOS有那些的技术优点?
  4. 了解前面提到的常见EOS,哪些是基于Linux内核的?
博主每天都会更新算法方面或者关于计算机其他方面的blog,大家如果有什么建议或者有更好的思路方法,可以先关注一下博主并在blog下方留言,我会及时回复的,相互学习呀~
(如果博客对您有些许帮助的话,点个赞吧(▽))