在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

從裸奔到操作系統,我們將面對什么挑戰

傳感器技術 ? 來源:未知 ? 作者:李倩 ? 2018-07-16 14:13 ? 次閱讀

嵌入式設備網絡化、u盤化、功能復雜化的趨勢,使越來越多的、過去可以用裸奔實現的嵌入式產品,產生了應用操作系統的需求。

而人力成本的持續上升、芯片成本的連續下降,以及cpu性能的迅速提高,又為大面積應用操作系統提供了物質基礎。

本文和大家一起討論一下,從裸奔到操作系統,我們將面對什么挑戰。

1、速度

我們首先面對的,將是cpu運行速度的問題,毋庸置疑,操作系統調度需要cpu開銷,需要cpu有更高的速度來彌補;再者,嵌入式系統經常用于實時控制,需要較高的定時精度,縮短tick時間間隔有利于提高控制精度,嵌入式系統中經常使用1mS甚至更短的tick間隔。然而,tick間隔越短,調度開銷就越高,同樣需要更高的cpu速度來彌補。當前日益提高的嵌入式cpu的性能,甚至單片機都32位了,很好地回答了這個問題。

2、內存容量

先討論一個問題,一個原先需要50K內存的裸奔程序,如果移植到自身開銷1K內存的RTOS下面,需要增加多少內存?是51K嗎?

有許多嵌入式操作系統,都把運行操作系統的內存開銷作為主要性能指標,有些甚至聲稱不到1K內存就可以運行。但我們千萬不要被誤導,以為用操作系統需要的內存與裸機差不多,只要比裸奔程序多那么1K、2K就行了。操作系統會使應用程序所需要的內存暴增,使用操作系統所增加的內存需求,主要來自以下方面:

1) 運行操作系統本身需要的內存。2) 創建線程控制塊、消息控制塊等操作系統組件需要的內存。3) 每個線程配置獨立的棧所增加的內存需求。

其中第一項很好理解,幾乎所有操作系統都會給出這個指標。第二項也容易理解,不用操作系統的情況下,我們常常定義標志位或全局變量來在不同模塊之間傳遞信息,需要的內存就很少。而操作系統模式下,需要用到同步、互斥、線程間交換數據等,這就需要使用信號量、郵箱等操作系統組件,信號量需要分配信號量控制塊,郵箱需要分配郵箱控制塊……,這些,都需要消耗可觀的內存。許多操作系統標明的,僅僅是OS本身運行需要的內存,并不包括信號量控制塊拉、郵箱控制塊拉等等這些操作系統組件需要的內存。我們知道,一個僅運行OS的系統,是毫無意義的,真正實現產品功能的,是應用程序。而djyos的si版本,大約需要的10K內存,則包含了一定數量的事件控制塊、信號量控制塊等操作系統組件所需內存的條件下的,完全滿足一個小型系統所需。

說了半天,其實也只講了操作系統對內存需求的冰山一角,OS下編程,對內存需求的影響最大的,當屬OS的多線程并發特性,這使得我們要為每一個線程分配獨立的棧。下面我們定性分析一下棧獨立化帶來的內存需求變化。棧是用來保存函數參數和局部變量的,可以說,有函數調用,就有局部變量。在單線程環境下,應用程序需要的棧,幾乎就是main函數需要的棧,而在多線程環境下,每個線程的棧是獨立的,分別等于該線程的線程執行函數所需要的棧,而系統總的棧需求,就是所有線程的棧需求之和。

假設有一不使用OS的應用程序,main函數如下:

void main(void){ while(1) { func1(); //本函數需要10K棧 func2(); //本函數需要5K棧 func3(); //本函數需要9K棧 func4(); //本函數需要8K棧 func5(); //本函數需要9K棧 }}

在超級循環中,分別調用了func1~func5這5個函數,他們的棧需求分別是10K、5K、9K、8K、9K。調用func1時,系統分配10K的ram作為棧,func1函數返回,這10K空間將被釋放,并且再次分配給func2使用,所以,整個程序的棧需求,就是這5個函數中需要棧最多的那個函數需要的棧空間:10K。

如果要把這個程序移植到OS下,最簡單的方法就是創建5個線程來調用func1~5這5個函數,這5個線程需要的棧分別是10K、5K、9K、8K、9K,而這5個棧是獨立的,不能共用,程序總共需要的棧空間是(10+5+9+8+9)=41K,線程棧一般是從堆中動態分配的,考慮到動態分配本身的開銷,硬件須準備50K以上的內存用于程序的運行棧。一下子增長到5倍,沒想到吧。

可見,上操作系統,雖然操作系統本身不需要很大內存,但會極度增加應用程序的內存需求。做項目時,一是不要盲目上OS,要根據需求綜合考慮,二是設計硬件系統時,應該充分考慮到內存方面的需求,配置充足的內存。

3、人

任何產品都是由人開發的,所以,討論嵌入式產品開發的任何話題,都不能離開人的因素,科技以人為本嘛!從裸奔到操作系統,那么程序員,也將由編寫裸奔程序轉為在操作系統下編程。這些迅速、大量增加的程序員,他們可能習慣了在裸奔環境下編程,他們可能是化工、建筑、地質等不同行業的專家,他們也許已經上了年紀,沒有太多的精力學習多線程編程等知識。然而,涉及到專業的程序,仍然離不開他們,如何從技術上降低他們的入門門檻,是一個亟需考慮的問題。但是,普通的操作系統下,你不掌握線程控制技術,就無法編寫正確的程序。djyos允許你按事件編程,沒有任何跟線程相關的api函數,無需程序員掌握線程技術,客觀上降低了裸奔到OS編程的轉換技術門檻。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5085

    文章

    19138

    瀏覽量

    305779
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10873

    瀏覽量

    212033
  • 操作系統
    +關注

    關注

    37

    文章

    6838

    瀏覽量

    123389

原文標題:裸奔和RTOS下的嵌入式開發,有啥不同

文章出處:【微信號:WW_CGQJS,微信公眾號:傳感器技術】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    實時操作系統和分時操作系統的區別

    操作系統能否滿足實時性要求來區分,可把操作系統分成分時操作系統和實時操作系統,分時操作系統按照相等的時間片調度進程輪流運行,分時
    發表于 11-14 17:39 ?1.3w次閱讀

    14種嵌入式操作系統的特點

    大家好,我是小舒,單片機編程時,都知道有兩種基本操作裸奔操作系統,所謂裸奔就是一個大循環往復執行。今天,講的是幾個常用的操作系統
    發表于 09-02 09:12 ?2912次閱讀

    什么是操作系統

    什么是操作系統  操作系統是一個大型的軟件系統,其功能復雜,體系龐大。從不同的角度看的結果也不同,正是“橫看成嶺側成峰”,下面我們通過最典型的兩個角度來分析一下。  1.
    發表于 09-13 10:10

    關于實時嵌入式操作系統的一些概念討論(一)

    操作系統:顯然不是.4\ 我們放棄裸奔選擇操作系統的最充分理由是什么:我考慮是程序易于維護,易于模塊化, 易于分解任務給不同的工程師協作.5\ 如果CPU能跑的無限快, 理論上
    發表于 02-07 00:05

    實時操作系統移植Linux系統應用

    從一個操作系統另一個操作系統應用程序的移植即使在最好的情況下也經常是一個艱巨的任務。把一個實時的嵌入式應用程序移植一個新的操作系統上可以
    發表于 07-15 07:25

    如何Linux操作系統移植目標平臺上?

    如何Linux操作系統移植目標平臺上?Linux交叉編譯環境的建立及內核配置和編譯Linux移植中實際指令集小于標準MIPS指令集的問題如何Linux
    發表于 04-22 07:04

    FreeRTOS單片機操作系統

    轉載【連載】單片機操作系統③——走進FreeRTOS【1】 單片機操作系統
    發表于 08-23 07:03

    請問Linux操作系統怎么初始操作系統升級到Android?

    請問,Linux操作系統怎么初始操作系統升級到Android
    發表于 12-31 06:20

    RT-Thread操作系統開機關機的操作過程是怎樣的?

    RT-Thread操作系統開機關機的操作過程是怎樣的?
    發表于 02-15 07:43

    裸奔操作系統面對什么挑戰

    嵌入式設備網絡化、u盤化、功能復雜化的趨勢,使越來越多的、過去可以用裸奔實現的嵌入式產品,產生了應用操作系統的需求。
    的頭像 發表于 12-11 15:45 ?2961次閱讀

    預計2023年 Linux操作系統的全球市場超過70億美元

    根據《市場研究未來》(MRFR)最新的研究報告,在2018-2023年的預測期內,Linux操作系統的全球市場預計達到CAGR的18.5%。 Linux操作系統的全球市場主要基于對安全操作系
    發表于 11-25 15:12 ?878次閱讀

    鴻蒙操作系統的關鍵特性

    ,就像我們人類身體中,大腦的角色一樣。我們每天面對大量的或大或小、或簡單或復雜、或緊迫或寬松的事情。大腦如何處理這些事情的處理的先后順序和邏輯關系。 來源:計算機教程 我們先了解一下,
    的頭像 發表于 12-24 16:53 ?2301次閱讀
    鴻蒙<b class='flag-5'>操作系統</b>的關鍵特性

    聊聊操作系統

    信息通信行業,還經常會和ubuntu、CentOS、Fedora這樣的Linux系統打交道。 其實,操作系統的種類極多,遠遠不止我們知道的這些。 使用場景來看,
    的頭像 發表于 05-12 11:13 ?1438次閱讀
    聊聊<b class='flag-5'>操作系統</b>

    14種主流的RTOS 單片機操作系統~來學!

    點擊上方名片關注我們單片機編程時,我們都知道有兩種基本操作裸奔操作系統。所謂裸奔,就是一個大
    的頭像 發表于 09-22 10:02 ?1w次閱讀
    14種主流的RTOS 單片機<b class='flag-5'>操作系統</b>~來學!

    單片機跑操作系統,到底有幾種選擇?

    單片機編程時,我們都知道有兩種基本操作裸奔操作系統。所謂裸奔,就是一個大循環往復執行。今天要講的是幾個常用的
    的頭像 發表于 09-26 10:56 ?2676次閱讀
    單片機跑<b class='flag-5'>操作系統</b>,到底有幾種選擇?
    主站蜘蛛池模板: 免费午夜在线视频| 不卡一级毛片免费高清| 九九久久久久午夜精选| 欧美同性精品xxxx| 大又大又粗又爽又黄毛片女人| 午夜影院毛片| 欧美成人天天综合天天在线| 高清毛片aaaaaaaaa片| 两性色午夜视频免费国产| 日本三级香港三级人妇网站| 亚洲jizzjizz中文在线播放| 亚洲免费区| 国语对白一区二区三区| 免费观看黄视频| 久久天天| 欧美午夜视频一区二区| 欧美乱强性伦xxxxx| 久久国产美女| 午夜dy888理论三级| 影音先锋午夜资源网站| xxxx69日本| 国产午夜精品久久久久| 成人爽a毛片在线视频网站| 日日夜夜天天操| 狠久久| 在线二区| 一级毛片免费全部播放完整| 亚洲xxx视频| 欧美feer| 成人亚洲欧美在线电影www色| 亚洲精品久久久久久久蜜桃| 久久作爱视频| 日韩在线一区二区| 婷婷六月在线| 激情都市亚洲| 色综合色狠狠天天综合色hd| 欧美性妇| 四虎伊人| 国产农村一一级特黄毛片| 欧美午夜在线观看| 欧美a欧美|