<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > Linux網(wǎng)絡存儲器的設計

          Linux網(wǎng)絡存儲器的設計

          作者: 時間:2010-09-02 來源:網(wǎng)絡 收藏

          1、硬件設計

          本文引用地址:http://www.ex-cimer.com/article/202516.htm

            硬件設計方框圖如圖1所示。


            從圖1可看到,除CPU單元以外,的實現(xiàn)主要包括兩個部分:I/O接口和存儲器接口。下面以CPU為中心,說明這兩個接口的主要功能。

            ①I/O接口。這里指CPU與Ethernet的接口(以太網(wǎng)接口)。它采用PCI的方式與以太網(wǎng)相連,是進入LAN(Local Area Network)的通道,在整個系統(tǒng)中負責發(fā)送或接收網(wǎng)絡上的數(shù)據(jù)包。

           ?、诖鎯ζ鹘涌?。包括兩個方面:一是RAM接口,主要存儲數(shù)據(jù),采用PCI接口方式;二是Flash接口,主要存儲操作系統(tǒng)及應用軟件,采用并口形式與CPU相連。

            ③磁盤冗余陣列卡(RAID)接口。包括與CPU的接口和與磁盤陣列的接口。磁盤陣列主要用來存儲網(wǎng)絡用戶資料,CPU通過磁盤陣列卡對磁盤陣列進行管理操作,允許一定的冗余來保證用戶數(shù)據(jù)的安全。

            2、軟件設計

            在整個軟件設計中,應選擇一個合適的操作系統(tǒng)。整個操作系統(tǒng)要求體積比較小、網(wǎng)絡功能比較強、適于裁減、能被嵌入到Flash中,并且有網(wǎng)絡管理和磁盤管理功能。針對這些要求,我們選擇操作系統(tǒng)作為軟件平臺,對其內(nèi)核進行裁減,從而實現(xiàn)嵌入式的功能。整個軟件實現(xiàn)可分為以下幾個部分。

            2.1 內(nèi)核的裁減

            (1)內(nèi)核簡介

            Linux內(nèi)核主要由五部分構成:進程調(diào)度、內(nèi)存管理、虛擬文件系統(tǒng)、網(wǎng)絡接口以及進程間通信。進程調(diào)度負責控制進程對CPU的訪問,調(diào)度程序使用一種策略確保所有的進程都能公平地訪問CPU,并且確保內(nèi)核在任意時刻能執(zhí)行必要的硬件操作。內(nèi)存管理負責管理系統(tǒng)的物理內(nèi)存,實現(xiàn)多進程安全地共享計算機的內(nèi)存;另外內(nèi)存管理支持虛擬內(nèi)存,使進程可以使用大于實際物理內(nèi)存的內(nèi)存地址空間,不用的內(nèi)存址空間被導出到文件系統(tǒng)中,并在需要使用時再導回到物理內(nèi)存中。虛擬文件系統(tǒng)通過將各種設備抽象為一種公共接口,屏蔽了各種硬件設備的細節(jié)。網(wǎng)絡接口實現(xiàn)了對各種網(wǎng)絡標準網(wǎng)絡硬件的訪問。進程間通信子系統(tǒng)實現(xiàn)了系統(tǒng)內(nèi)進程間的多種通信機制。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();