[發明專利]基于用戶模式多任務下控制硬件設備的方法及其裝置有效
| 申請號: | 201210143390.9 | 申請日: | 2012-05-09 |
| 公開(公告)號: | CN102693159A | 公開(公告)日: | 2012-09-26 |
| 發明(設計)人: | 王建;孫明勇 | 申請(專利權)人: | 上海晨思電子科技有限公司;晨星半導體股份有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48 |
| 代理公司: | 深圳市威世博知識產權代理事務所(普通合伙) 44280 | 代理人: | 何青瓦 |
| 地址: | 200120 上海*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 用戶 模式 任務 控制 硬件 設備 方法 及其 裝置 | ||
技術領域
本發明涉及計算機技術領域,特別是涉及基于用戶模式多任務下驅動器控制硬件設備的方法及其裝置。
背景技術
Unix系統如Linux下的程序都可以工作在兩種模式下:用戶模式(User?Mode)以及內核模式(Kernel?Mode)。
用戶模式:一個在用戶模式下運行的程序,只能受限制地訪問部分系統資源,不能直接訪問內核(Kernel)數據結構,不能直接與內核程序交互。
內核模式:一個在內核模式下運行的程序,可以執行任何CPU指令,訪問4G【以32位中央處理器CPU(Central?Processing?Unit)為例】存儲空間的任意位置,也可以直接訪問內核數據結構或程序。
驅動器是指通過某個文件系統格式化并帶有一個驅動器號的存儲區域。驅動器在整個控制環節中,正好處于主控制箱(Main?Controller)以及馬達(Motor)的中間環節,它的主要功能是接收來自主控制箱的信號,然后將信號進行處理再轉移至馬達以及和馬達有關的感應器,并且將馬達的工作情況反饋至主控制箱。
為了實現多任務下的硬件設備及數據共享,主流的Linux驅動器(Driver)都是工作在內核模式下的,但這樣會導致產生至少以下幾個缺陷:
第一,由于驅動器做在了Linux內核里面,難以回避通用公共許可證(GPL?license)傳染,并且必須公開自己的源代碼(Source?Code),這在某些商用領域是很難接受的。
第二,應用程序需要頻繁地出入內核模式,對一些功能復雜的硬件設備,例如:圖形處理顯示器頻繁地出入內核,將帶來巨大的系統開銷,直接導致整個系統性能的下降。
第三,在內核模式下的驅動器,一旦某個程序訪問擁堵通常會造成整個系統運行的擁堵,即便這個程序訪問擁堵只是由某一個進程(Process)的錯誤造成的。而在用戶模式下驅動器某個程序訪問擁堵通常只會導致使用它的那一個進程擁堵,不會影響到系統及其它進程。
第四,硬件設備調試很不方便,特別是對一些需要經常訪問硬件設備寄存器(Register)的情況,更是如此。
現行已有的某些基于用戶模式的驅動器,也只能應用在一些相對簡單的硬件設備上,無法做到在多任務環境下,應用程序隨機、安全地對硬件設備進行訪問。
發明內容
本發明主要解決的技術問題是提供一種基于用戶模式多任務下驅動器控制硬件設備的方法及其裝置,能夠大幅提升訪問復雜硬件設備時驅動器的性能,又能很好地實現在多任務環境下對硬件設備的隨機安全訪問。
為解決上述技術問題,本發明采用的一個技術方案是:提供一種基于用戶模式多任務下驅動器控制硬件設備的方法,包括:在用戶模式下接收需要訪問硬件設備的進程訪問該硬件設備的請求,該請求中含有所述需要訪問硬件設備的進程的標識(ID);判斷所述需要訪問硬件設備的進程是否獲取了訪問該硬件設備的互斥鎖;若所述需要訪問硬件設備的進程獲取了訪問該硬件設備的互斥鎖,則判斷所述需要訪問硬件設備的進程的ID與最近一次訪問該硬件設備的進程的ID是否相同;若所述需要訪問硬件設備的進程的ID與最近一次訪問該硬件設備的進程的ID不相同,則在所述需要訪問硬件設備的進程和最近一次訪問該硬件設備的進程之間進行上下文切換,使得所述需要訪問硬件設備的進程使用該硬件設備。
其中,還包括:從已保存的所述需要訪問硬件設備的進程的進程鏡像文件讀出寄存器和I/O狀態數據或上述兩者之一,并將其寫入該硬件設備,該硬件設備恢復為所述需要訪問硬件設備的進程的配置。
其中,所述進程鏡像文件是指用戶模式下驅動器的進程鏡像中的文件,該文件用于保存該硬件設備寄存器和I/O狀態數據或上述兩者之一且為每個進程所獨享的數據。
其中,還包括:若所述需要訪問硬件設備的進程獲取了訪問該硬件設備的互斥鎖,判斷所述需要訪問硬件設備的線程的ID與已經獲得該互斥鎖的線程的ID是否相同;若與已經獲得該互斥鎖的線程的ID相同,則將互斥鎖計數器的值加1,并且所述需要訪問硬件設備的線程繼續使用該硬件設備;若與已經獲得該互斥鎖的線程的ID不相同,則所述需要訪問硬件設備的線程等待,直到獲得該互斥鎖。
其中,還包括:若所述需要訪問硬件設備的進程的ID與最近一次訪問該硬件設備的進程的ID相同,則所述需要訪問硬件設備的進程繼續使用該硬件設備。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海晨思電子科技有限公司;晨星半導體股份有限公司,未經上海晨思電子科技有限公司;晨星半導體股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210143390.9/2.html,轉載請聲明來源鉆瓜專利網。





