宋睿
【摘要】 嵌入式系統功能的提高,占用了較大內存空間,繼而時常出現運行無響應。基于用戶方面看,由于系統內存問題影響運行,針對系統內存與進程應用狀態研究,可以調整系統數值與執行文件elf分析,進行系統優化進而確保響應運行。并且經過實踐證明,嵌入式系統內存優化使用,能夠提升系統空間5%內存,確保系統順利運行。
【關鍵詞】 嵌入式 Linux系統 內存優化 使用方法研究
現如今,嵌入式系統軟件被廣泛應用于各行業發展中,小至人們生活,大到科技軍事。隨著智能設備功能的增加,造成嵌入式系統時常出現內存不足問題,繼而降低系統運行。怎樣降低軟件所占空間,成為軟件設計中的重要課題。
一、內存應用
1.1內存存在形式
嵌入式系統中,內存主要分為幾種形式:Kernel bootstrapping時期,主要為臨時內存。在系統啟動后,內存能夠自動回收為今后系統應用。在系統正常運行時期,內存分為幾種存在形式:系統作為代碼,數據信息劃分永久內存,在系統中無法變化,一些硬件I/O將有關文件映射在固定空間中。
動態內存分配:其內存無法固定劃分,需要結合系統進行劃分。若通過非虛擬空間管理體制,通常變化動態為內存劃分體制,進而提升性能。
1.2檢查內存運行狀態
/proc目錄內主要為一些系統核心與運行內容,其內容在空間中根據系統運行生成。在目錄文件中,能夠看到目前空間內存狀態,以及不同程序應用狀態。
在meminfo文件內,標記了當下系統空間全部應用狀態。在文件中利用不同參數能夠得出當下系統已用內存和空間內存占用。
/proc目錄中,不同程序都能夠建立相應的文件,在文件中記錄相關文件,利用一些文件查找系統應用內存狀態。
1.3空間內存回收
Kswapd作為Linux后臺關鍵程序,內核初始化過程中通過init構成。在系統內存在無運行狀態下小于某一個閥值后,kswapd被起動進行系統掃描并通過有效機制,釋放空閑頁。
二、嵌入式Linux系統內存優化使用方法
2.1系統總體優化
更改Linux內核數值。在proc/sys/vm文件中儲存著不同Linux數值,這其中一些與磁盤緩存關聯,通過參數優化系統內存。比如:dirty ratio數值控制系統緩沖大小,單位為百分比,說明使用系統內存的百分比,其概念為在緩沖應用在系統空間多少時,逐漸向磁盤寫出數值。
定制守護進程。Linux在運行過程中要起動較多系統,為本地與網絡用戶創造了Linux系統功能窗口,進而直接應對程序與用戶。其服務程序主要通過守護進程運行。守護進程命名形式為xxxd,生存時間較長并長留于空間中,具有穩定高的特點。相對于開放源代碼的Linux為用戶創造了另一種模式,能夠結合自身軟件條件,制定與管理Linux守護進程。因為守護進程具有一定的特殊性,所以需要降低數量。
2.2一般進程內存優化
Linux系統中,ELF是其二進制文件格式。ELF文件能夠進行文件的關聯與運行,編譯器與連接器視為section集合,加載器將其視為segment集合。從elf文件中能夠得出segmen是通過多個構成。在其執行時可以將無用的文件進行刪除,進而增加儲存空間。
第一,內存池優化。嵌入式系統中,內存池內trunk最小容納字節為16bytes,從系統自身來說有些多余。怎樣能夠有效的應用內存池,可以重組內存池,根據應用大小,多分配有關trunk進而實現優化。
內存泄漏檢查其主要在于攔截分配內存與釋放空間函數調用。所以,想要檢測堆內存泄漏,可以攔截free即可,進而了解動態運行應用狀態。可以通過虛擬化平臺進行檢測,這樣一來無需進行變更,并且其性能消耗只有10%。
第二,代碼和數據段。兩端和系統源代碼有著直接聯系,通常優化方法為:通過有效數據結構進行優化。科學設計編譯選項,應用相關軟件進行優化。在代碼優化過程中,如無法與系統要求相符,則可以通過有關代碼修改。嵌入式系統Neri,代碼位置只讀儲存器,數據去與棧區在RAM內,能夠將數據移動到代碼位置。降低運算強度、循環處理。
第三、優化檢驗。檢測條件為RHEL5系統,編譯器是arm-linux-gcc4.3.2。編寫代碼,代碼需要包含讀寫內存,同時形成多個進程;利用參數進行優化。及經過實驗數據顯示,優化程序相對于修改前減少了5%。
三、結語
嵌入式系統優化,還需要從內存管理、應用等多方面入手,以及軟件自身,掌握軟件在運行時占用內存狀態,通過有關方法減少內存應用,提升系統運行效果。
參 考 文 獻
[1]郭翠娟,盛雨晴,武志剛.基于DaVinci技術的嵌入式Web視頻監控系統的設計[J].天津工業大學學報,2016(02).
[2]孫明剛.基于嵌入式Linux的用電信息采集終端存儲數據的方法[J].中國新技術新產品,2016(12).
[3]葛吳超,周亦敏.基于ARM9體系架構的編譯優化研究[J].電子科技,2016(09).