目录
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中文網其他相關文章!