程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> ARM RTX操作系統—Overview—Product Description,rtxoverview

ARM RTX操作系統—Overview—Product Description,rtxoverview

編輯:關於C語言

ARM RTX操作系統—Overview—Product Description,rtxoverview


Product Description

RTX內核提供了基本的功能,可以創建和注銷任務進程。同時RTX內核還提供了一些額外的功能,用於任務進程之間的通信。利用這些通信功能,可以同步任務進程,管理系統公用的資源(例如外設或者內存),在任務進程之間傳遞消息。

開發者可以設置任務進程的調度優先級。

RTX內核提供了以下的任務進程通信功能:

1,事件標志位(Event flags)

事件標志位是實現任務進程之間同步的首要手段。每個任務進程有16個事件標志位。因此每個任務進程都可以等待16件事情或者其中一部分事件的發生,然後處理他們。

一個任務進程的事件標志位,可以被其他的任務進程或者ARM中斷程序置位。通過在ARM中斷程序中將事件標志位置位的方式,可以實現外部異步事件和RTX內核的同步。

簡單的來說,就是其他任務進程或者中斷程序置位標志位,而當前任務進程選擇等待某個任務標志位,如果某個標志位置位了,表明有某件事情已經發生了,那麼當前進程可以根據事件標志位代表的含義完成相應的工作。

 

2,信號量(Semaphores)

當多個任務需要同時訪問一個公用的資源時,會發生競爭。競爭會因為多個進程的交叉訪問,使得系統公用的資源工作不正常。

信號量(二進制信號量)就是解決這一問題的主要手段。信號量確保了一個時刻只有一個任務進程在訪問公用的資源。

RTX內核的具體實現方式為:

信號量是軟體實現一個對象,這個對象裡面包含一個虛擬token。RTX內核將這個token授予給第一個請求公用資源的那個任務進程。當有其他的任務進程再請求這個公用資源時,會因為當前token未被釋放給信號量,而被RTX內核設置為sleep狀態進行等候。直到第一個任務進程釋放掉token,token被RTX內核還給信號量,其他的任務進程會被RTX內核立即放置到ready list中,准備開始運行。

RTX內核還提供了超時機制,放置任務進程因為等待一個信號量而永久的處於sleep狀態。

 

互斥鎖(Mutexes)

互斥鎖也是解決競爭和內存訪問問題的手段之一。

互斥鎖是軟體實現的一個對象,任務進程可以利用他來鎖住某個公用資源。只有鎖住公用進程的這個任務進程擁有鎖,並可以訪問對應的公用資源。其他任務進程因為無法得到鎖而無法訪問公用資源。RTX內核會一直阻塞這些請求互斥鎖的任務進程,直到擁有鎖的任務進程釋放鎖。

 

郵件信箱(Mailboxes,原諒翻譯的不夠好)

郵件信箱應該是用來存放消息的。

任務進程之間可以通過郵件信箱的方式相互傳遞消息(message)。這種方式在創建一些高層級的協議時經常被用到,例如TCP-IP,UDP,以及ISDN。

消息其實是一個指針,指向一塊包含有消息內容的內存區域。任務進程必須負責動態創建和釋放掉這些內存區域,以防止出現內存洩露。

如果消息還未到達,RTX內核會將等待消息的任務進程設置為sleep狀態。內核會盡快的喚醒任務進程,當有其他任務進程發送消息過來。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved