目录
1、应用系统的两种形态1.1无操作系统应用体系
对于简单的SOC应用,如大部份简单功能的单片机应用都无需在系统中使用操作系统,这时应用程序是直接调用相应的驱动操作底层的硬件,如图:
这些结构,应用软件直接调用了设备驱动操作硬件。优点是:简单直接,效率高。适宜小而简单的系统。对于复杂系统,须要在不同功能里共享硬件资源的应用系统,此种方法就显着不适宜了。
1.2、有操作系统的应用体系
对于复杂应用系统,各功能模块之间须要共享硬件等资源的应用场景,则须要在应用体系内加入操作系统。为此,应用体系就如右图:
如图,有操作系统后红旗linux官网,应用程序可以不管具体的硬件细节,而都使用操作系统API的统一插口,这样利于大规模标准化开发,提升开发效率。
驱动程序向下也使用操作系统提供的标准设备插口,向上操作不同的硬件。借此对操作系统层屏蔽了硬件细节。操作系统因而显得更稳定和高效。
2、linux内核2.1单内核与微内核
目前操作系统有两种典型的内核实现模式:
Linux是一个单内核linux学习,运行在单独的地址空间上。不过,Linux吸取了微内核的精化,具有微内核所所具有的模块化设计、抢占式内核、支持内核线程以及动态装载内核模块的能力。同时,Linux还防止了微内核的设计缺陷嵌入式linux高级驱动教程,linux让所有模块都运行在内核态,直接调用函数,无须像微内核那样采用消息传递。
2.2Linux内核组成
如图所示,Linux内核主要由五个部份组成:
2.3进程调度
进程调度处于系统的中心位置,系统的其它部份都依赖于它。 linux的进程共有六种状态,进程在整个生命周期中可以这几种状态中切换。
2.4显存管理
显存管理的主要作用是控制多个进程安全的共享主显存域。一个32位处理器的Linux的每位进程享有4G空间,通常0-3G属于用户空间,3G-4G属于内核空间。如右图
2.5虚拟文件系统
Linux虚拟文件系统隐藏了各类硬件的具体细节,为所有设备提供了统一的插口。是对各个具体文件系统的一个具象。
如图,虚拟文件系统为下层的应用程序提供了统一的调用插口,对下则负责调用具体底层文件系统或设备驱动中实现的file_operations结构体中的成员函数。
2.6网路插口
网路插口提供了对各类网路标准的存取和各类网路硬件的支持。Linux网路插口分为
2.7进程间通讯
进程间通讯负责进程之间的通讯,包含讯号量、共享显存、消息队列、管道、UNIX域套接字等。
3、内核空间与用户空间
现代的CPU其内部会分辨不同的工作模式,借此来分辨不同级别和权限的操作。
比如,ARM的8种工作模式:
在ARM环境中,Linux系统充分借助CPU的硬件特点,实现了两级的操作模式,用户(usr)模式和管理模式(svc)。与此对应,在Linux系统中具有两种空间:
3.1补充:关于软中断
qquad这儿有一张ARM的异常工作模式的图表
正常执行时,ARM处于用户模式,当CPU执行swi指令时,会手动步入系统模式(SVCmode),并跳转到异常向量表。通过向量表再跳转到对应的函数中去对swi进行响应。
这儿的SVC模式就是SupervisorCall的简写,英文为管理程序调用。
4、linux设备驱动4.1linux系统中设备分类
linux系统将外设硬件分为三大类:
4.2linux驱动相关体系
如图,字符设备与块设备都被映射到Linux文件系统的文件和目录。
应用程序可通过套接字访问网路设备嵌入式linux高级驱动教程,并用两种手段访问字符设备与块设备:
以上是Linux内核2.1单内核与微内核的应用体系分析与应用的详细内容。更多信息请关注PHP中文网其他相关文章!