❶ 直接存儲器存取(DMA)方式是__方式
DMA(Direct Memory Access),即直接存儲器存取,是一種快速傳送數據的機制。數據傳遞可以從適配卡到內存,從內存到適配卡或從一段內存到另一段內存。
-------------------------------------------------
DMA方式的數據傳送過程
DMA方式具有如下特點:
1、 外部設備的輸入輸出請求直接發給主儲存器。
主存儲器既可以被CPU訪問,也可以被外圍設備訪問。因此,在主存儲器中通常要有一個存儲管理部件來為各種訪問主存儲器的申請排隊,一般計算機系統把外圍設備的訪問申請安排在最高優先順序。
2、 不需要做保存現場和恢復現場等工作,從而使DMA方式的工作速度大大加快。
由於在外圍設備與主存儲器之間傳送數據不需要執行程序,因此,也不動用CPU中的數據寄存器和指令計數器等。
3、在DMA控制器中,除了需要設置數據緩沖寄存器、設備狀態寄存器或控制寄存器之外,還要設置主存儲器地址寄存器,設備地址寄存器和數據交換個數計數器。
外圍設備與主存儲器之間的整個數據交換過程全部要在硬體控制下完成。另外,由於外圍設備一般是以位元組為單位傳送的,而主存儲器是以字為單位訪問的,因此,在DMA控制器中還要有從位元組裝配成字和從字拆卸成位元組的硬體。
4、在DMA方式開始之前要對DMA控制器進行初始化,包括向DMA控制器傳送主存緩沖區首地址、設備地址、交換的數據塊的長度等,並啟動設備開始工 作。在DMA方式結束之後,要向CPU申請中斷,在中斷服務程序中對主存儲器中數據緩沖區進行後處理。如果需要繼續傳送數據的話,要再次對DMA控制器進 行初始化。
5、在DMA方式中,CPU不僅能夠與外圍設備並行工作,而且整個數據的傳送過程不需要CPU的干預。如果主存儲器的頻帶寬度足夠的話,外圍設備的工作可以絲毫不影響CPU運行它自身的程序。
DMA方式的工作流程如下:
對於輸入設備:
從輸入介質上讀一個位元組或字到DMA控制器中的數據緩沖寄存器BD中,如果輸入設備是面向字元的,則要把讀入的字元裝配成字。
若一個字還沒有裝配滿,則返回到上面;若校驗出錯,則發中斷申請;若一個字已經裝配滿,則將BD中的數據送入主存數據寄存器。
把主存地址寄存器BA(在DMA控制器中)中的地址送入主存地址寄存器,並且將BA中的地址增值至下一個字地址。
把DMA控制器內的數據交換個數計數器BC中的內容減"1"。
若BC中的內容為"0",則整個DMA數據傳送過程全部結束,否則返回到最上面繼續進行。
對於輸出設備:
把主存地址寄存器BA(在DMA控制器中)中的地址送入主存地址寄存器,並啟動主存儲器,同時將BA中的地址增值至下一個字地址。
將主存儲器數據寄存器中的數據送入DMA控制器的數據緩沖寄存器BD中。如果輸出設備是面向字元的,則要把BD中的數據拆卸字元。
把BD中數據逐個字元(對於面向字元的設備)或整個字寫到輸出介質上。
把DMA控制器內的數據交換個數計數器BC中的內容減"1"。
若BC中的內容為"0",則整個DMA數據傳送過程全部結束,否則返回到最上面繼續進行。
目前使用的DMA方式實際上有如下三種:
1、周期竊取方式
在每一條指令執行結束時,CPU測試有沒有DMA服務申請,如果有,則CPU進入一個DMA周期。在DMA周期中借用CPU完成上面所列出的DMA工作流程。包括數據和主存地址的傳送,交換個數計數器中的內容減"1",主存地址的增值及一些測試判斷等。
採用周期竊取方式時,主存儲器可以不與外圍設備直接相連接,而只與CPU連接,即仍然可以採用如圖4.4那樣的連接方式,因為外圍設備與主存儲器的數據交換與程序控制輸入輸出方式和中斷輸入輸出方式一樣都是要經過CPU的。
周期竊取方式與程序控制輸入輸出方式和中斷輸入輸出方式的不同處主要在:它不需要使用程序來完成數據的輸入或輸出,只是借用了一個CPU的周期來完成DMA流程。因此,其工作速度是很快的。
周期竊取方式的優點是硬體結構很簡單,比較容易實現。缺點是在數據輸入或輸出過程種實際上佔用了CPU的時間。
2、直接存取方式
這是一種真正的DMA方式。DMA控制器的數據傳送申請不是發向CPU,而是直接發往主存儲器。在得到主存儲器的響應之後,整個DMA工作流程全部在DMA控制器中用硬體完成。
直接存取方式的優點與缺點正好與周期竊取方式相反。
目前的多數計算機系統均採用直接存取方式工作。
3、數據塊傳送方式
在設備控制器中設置一個比較大的數據緩沖存儲器,一般要能夠存放下一個數據塊,如在軟磁碟存儲器中通常設置512個位元組的數據緩沖存儲器。與設備介質之間的數據交換在數據緩沖存儲器中進行。設備控制器與主存儲器之間的數據交換以數據塊為單位,並採用程序中斷方式進行。
數據塊傳送方式實際上並不是DMA方式,只是它在每次中斷輸入輸出過程中是以數據塊為單位獲得或發送數據的,這一點與上面兩種DMA方式相同,因此,通常也把這種輸入輸出方式歸入DMA方式。
採用數據塊傳送方式的外圍設備還有行式列印機,激光列印機,卡片閱讀機,部分繪圖儀等。
❷ 請教問答題:內存儲器和外存儲器有什麼不同它們各自有什麼優缺點
內存儲器是cpu與外部設備交換數據的直接場所,內存儲器速度次於cpu速度,但是也算是高速存儲設備,其包括ram(我們常說的內存),顯存,及一些高速緩存。
外存儲器是外部存儲設備,速度相對內存慢的多,但可以長時間保存數據,如硬碟,cd-rom,快閃記憶體等等。
❸ 什麼是直接內存訪問 (DMA)
DMA(Direct Memory Access),即直接存儲器存取,是一種快速傳送數據的機制。數據傳遞可以從適配卡到內存,從內存到適配卡或從一段內存到另一段內存。
利用它進行數據傳送時不需要CPU的參與。每台電腦主機板上都有DMA控制器,通常計算機對其編程,並用一個適配器上的ROM(如軟盤驅動控制器上的ROM)來儲存程序,這些程序控制DMA傳送數據。一旦控制器初始化完成,數據開始傳送,DMA就可以脫離CPU,獨立完成數據傳送。
在DMA傳送開始的短暫時間內,基本上有兩個處理器為它工作,一個執行程序代碼,一個傳送數據。利用DMA傳送數據的另一個好處是,數據直接在源地址和目的地址之間傳送,不需要中間媒介。如果通過CPU把一個位元組從適配卡傳送至內存,需要兩步操作。首先,CPU把這個位元組從適配卡讀到內部寄存器中,然後再從寄存器傳送到內存的適當地址。DMA控制器將這些操作簡化為一步,它操作匯流排上的控制信號,使寫位元組一次完成。這樣大大提高了計算機運行速度和工作效率。
計算機發展到今天,DMA已不再用於內存到內存的數據傳送,因為CPU速度非常快,做這件事,比用DMA控制還要快,但要在適配卡和內存之間傳送數據,仍然是非DMA莫屬。要從適配卡到內存傳送數據,DMA同時觸發從適配卡讀數據匯流排(即I/O讀操作)和向內存寫數據的匯流排。激活I/O讀操作就是讓適配卡把一個數據單位(通常是一個位元組或一個字)放到PC數據匯流排上,因為此時內存寫匯流排也被激活,數據就被同時從PC匯流排上拷貝到內存中。
直接內存訪問(DMA)方式是一種完全由硬體執行I/O交換的工作方式。DMA控制器從CPU完全接管對匯流排的控制。數據交換不經過CPU,而直接在內存和I/O設備之間進行。DMA控制器採用以下三種方式:
①停止CPU訪問內存:當外設要求傳送一批數據時,由DMA控制器發一個信號給CPU。DMA控制器獲得匯流排控制權後,開始進行數據傳送。一批數據傳送完畢後,DMA控制器通知CPU可以使用內存,並把匯流排控制權交還給CPU。
②周期挪用:當I/O設備沒有 DMA請求時,CPU按程序要求訪問內存:一旦 I/O設備有DMA請求,則I/O設備挪用一個或幾個周期。
③DMA與CPU交替訪內:一個CPU周期可分為2個周期,一個專供DMA控制器訪內,另一個專供CPU訪內。不需要匯流排使用權的申請、建立和歸還過程。
❹ Hibernate 中直接調用資料庫存儲過程的優點與缺點
直接通過Hibernate API進行批量更新和批量刪除都不值得推薦。而直接通過JDBC API執行相關的SQL語句或調用相關的存儲過程,是批量更新和批量刪除的最佳方式,這兩種方式都有以下優點:
(1) 無需把資料庫中的大批量數據先載入到內存中,然後逐個更新或修改它們,因此不會消耗大量內存。
(2) 能在一條SQL語句中更新或刪除大批量的數據。
值得注意的是,在Hibernate3.0中對批量更新和批量刪除提供了有力的支持,允許通過Hibernate3.0的有關介面,進行高性能的批量更新和批量刪除操作
❺ 說明直接存儲密碼法的優缺點
簡單講:1.存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度
❻ 常用存儲器片選控制方法有哪幾種它們各有什麼優缺點
行選擇,部分解碼,全部解碼。
線路選擇電路簡單,但會造成地址Z棧、空間利用率低和特定編程不宜編織。
全解碼具有較高的晶元利用率和無地址棧,但電路比選線方法復雜得多。
部分解碼介於兩者之間,也可以產生一定程度的地址棧,但存在一個相對相鄰的地址空間。
(6)直接儲存器訪問方式優缺點擴展閱讀
存儲器是用來存儲程序和各種數據信息的存儲器。記憶可分為兩類:初級記憶(簡稱初級記憶或BAI)和輔助記憶(簡稱輔助記憶或外部記憶)。它是主存,直接與CPU交換信息。
在主存儲器中收集存儲單元的載體稱為存儲體。存儲器中的每個單元都可以保存由二進制代碼表示的一串信息。信息的總比特數稱為存儲單元的字長。存儲單元的地址與存儲在其中的信息相對應。存儲單元的位置只有一個固定地址,存儲在其中的信息可以被替換。
❼ 直連存儲的優缺點是什麼
直連存儲的優點:配置成本最低,因為該方案只需要將存儲設備通過SCSI介面與伺服器相連接即可,配置十分簡單,適合小型公司使用。
直連存儲的缺點:因為整體配置過於簡單,該方案也存在一些缺陷伺服器如果故障,數據就不能訪問多伺服器系統不容易管理,存儲空間不能控制分配,會產生資源的浪費存儲備份操作復雜。
(7)直接儲存器訪問方式優缺點擴展閱讀:
直連式存儲的分類:
直連存儲又可分為內直連式存儲和外直連式存儲。
內直連式存儲是指存儲設備與伺服器通過串列或並行SCSI匯流排接1:3電纜直接集成在一起,但SCSI匯流排自身有傳輸距離和掛載設備的限制。
外直連式存儲通過SCSI或光纖通道將伺服器和外部的存儲設備直接連接,與內直連式存儲相比,外直連式存儲可通過光纖通道克服傳輸距離和掛載設備的限制。
對於少量PC機或伺服器,使用直連式存儲連接簡單、易於配置和管理、費用較低,但這種連接方式下,因每台計算機單獨擁有自己的存儲磁碟,所以不利於存儲容量的充分利用和伺服器間的數據共享,而且存儲系統沒有集中統一的管理方案,也不利於數據維護,因此直連式存儲不適合作為企業級的存儲解決方案。
❽ 比較各個存儲類型的優缺點
【塊存儲】
典型設備:磁碟陣列,硬碟
塊存儲主要是將裸磁碟空間整個映射給主機使用的,就是說例如磁碟陣列裡面有5塊硬碟(為方便說明,假設每個硬碟1G),然後可以通過劃邏輯盤、做Raid、或者LVM(邏輯卷)等種種方式邏輯劃分出N個邏輯的硬碟。(假設劃分完的邏輯盤也是5個,每個也是1G,但是這5個1G的邏輯盤已經於原來的5個物理硬碟意義完全不同了。例如第一個邏輯硬碟A裡面,可能第一個200M是來自物理硬碟1,第二個200M是來自物理硬碟2,所以邏輯硬碟A是由多個物理硬碟邏輯虛構出來的硬碟。)
接著塊存儲會採用映射的方式將這幾個邏輯盤映射給主機,主機上面的操作系統會識別到有5塊硬碟,但是操作系統是區分不出到底是邏輯還是物理的,它一概就認為只是5塊裸的物理硬碟而已,跟直接拿一塊物理硬碟掛載到操作系統沒有區別的,至少操作系統感知上沒有區別。
此種方式下,操作系統還需要對掛載的裸硬碟進行分區、格式化後,才能使用,與平常主機內置硬碟的方式完全無異。
優點:
1、 這種方式的好處當然是因為通過了Raid與LVM等手段,對數據提供了保護。
2、 另外也可以將多塊廉價的硬碟組合起來,成為一個大容量的邏輯盤對外提供服務,提高了容量。
3、 寫入數據的時候,由於是多塊磁碟組合出來的邏輯盤,所以幾塊磁碟可以並行寫入的,提升了讀寫效率。
4、 很多時候塊存儲採用SAN架構組網,傳輸速率以及封裝協議的原因,使得傳輸速度與讀寫速率得到提升。
缺點:
1、採用SAN架構組網時,需要額外為主機購買光纖通道卡,還要買光纖交換機,造價成本高。
2、主機之間的數據無法共享,在伺服器不做集群的情況下,塊存儲裸盤映射給主機,再格式化使用後,對於主機來說相當於本地盤,那麼主機A的本地盤根本不能給主機B去使用,無法共享數據。
3、不利於不同操作系統主機間的數據共享:另外一個原因是因為操作系統使用不同的文件系統,格式化完之後,不同文件系統間的數據是共享不了的。例如一台裝了WIN7/XP,文件系統是FAT32/NTFS,而Linux是EXT4,EXT4是無法識別NTFS的文件系統的。就像一隻NTFS格式的U盤,插進Linux的筆記本,根本無法識別出來。所以不利於文件共享。
【文件存儲】
典型設備:FTP、NFS伺服器
為了克服上述文件無法共享的問題,所以有了文件存儲。
文件存儲也有軟硬一體化的設備,但是其實普通拿一台伺服器/筆記本,只要裝上合適的操作系統與軟體,就可以架設FTP與NFS服務了,架上該類服務之後的伺服器,就是文件存儲的一種了。
主機A可以直接對文件存儲進行文件的上傳下載,與塊存儲不同,主機A是不需要再對文件存儲進行格式化的,因為文件管理功能已經由文件存儲自己搞定了。
優點:
1、造價交低:隨便一台機器就可以了,另外普通乙太網就可以,根本不需要專用的SAN網路,所以造價低。
2、方便文件共享:例如主機A(WIN7,NTFS文件系統),主機B(Linux,EXT4文件系統),想互拷一部電影,本來不行。加了個主機C(NFS伺服器),然後可以先A拷到C,再C拷到B就OK了。(例子比較膚淺,請見諒……)
缺點:
讀寫速率低,傳輸速率慢:乙太網,上傳下載速度較慢,另外所有讀寫都要1台伺服器裡面的硬碟來承擔,相比起磁碟陣列動不動就幾十上百塊硬碟同時讀寫,速率慢了許多。
【對象存儲】
典型設備:內置大容量硬碟的分布式伺服器
對象存儲最常用的方案,就是多台伺服器內置大容量硬碟,再裝上對象存儲軟體,然後再額外搞幾台服務作為管理節點,安裝上對象存儲管理軟體。管理節點可以管理其他伺服器對外提供讀寫訪問功能。
之所以出現了對象存儲這種東西,是為了克服塊存儲與文件存儲各自的缺點,發揚它倆各自的優點。簡單來說塊存儲讀寫快,不利於共享,文件存儲讀寫慢,利於共享。能否弄一個讀寫快,利 於共享的出來呢。於是就有了對象存儲。
首先,一個文件包含了了屬性(術語叫metadata,元數據,例如該文件的大小、修改時間、存儲路徑等)以及內容(以下簡稱數據)。
以往像FAT32這種文件系統,是直接將一份文件的數據與metadata一起存儲的,存儲過程先將文件按照文件系統的最小塊大小來打散(如4M的文件,假設文件系統要求一個塊4K,那麼就將文件打散成為1000個小塊),再寫進硬碟裡面,過程中沒有區分數據/metadata的。而每個塊最後會告知你下一個要讀取的塊的地址,然後一直這樣順序地按圖索驥,最後完成整份文件的所有塊的讀取。
這種情況下讀寫速率很慢,因為就算你有100個機械手臂在讀寫,但是由於你只有讀取到第一個塊,才能知道下一個塊在哪裡,其實相當於只能有1個機械手臂在實際工作。
而對象存儲則將元數據獨立了出來,控制節點叫元數據伺服器(伺服器+對象存儲管理軟體),裡面主要負責存儲對象的屬性(主要是對象的數據被打散存放到了那幾台分布式伺服器中的信息),而其他負責存儲數據的分布式伺服器叫做OSD,主要負責存儲文件的數據部分。當用戶訪問對象,會先訪問元數據伺服器,元數據伺服器只負責反饋對象存儲在哪些OSD,假設反饋文件A存儲在B、C、D三台OSD,那麼用戶就會再次直接訪問3台OSD伺服器去讀取數據。
這時候由於是3台OSD同時對外傳輸數據,所以傳輸的速度就加快了。當OSD伺服器數量越多,這種讀寫速度的提升就越大,通過此種方式,實現了讀寫快的目的。
另一方面,對象存儲軟體是有專門的文件系統的,所以OSD對外又相當於文件伺服器,那麼就不存在文件共享方面的困難了,也解決了文件共享方面的問題。
所以對象存儲的出現,很好地結合了塊存儲與文件存儲的優點。
最後為什麼對象存儲兼具塊存儲與文件存儲的好處,還要使用塊存儲或文件存儲呢?
1、有一類應用是需要存儲直接裸盤映射的,例如資料庫。因為資料庫需要存儲裸盤映射給自己後,再根據自己的資料庫文件系統來對裸盤進行格式化的,所以是不能夠採用其他已經被格式化為某種文件系統的存儲的。此類應用更適合使用塊存儲。
2、對象存儲的成本比起普通的文件存儲還是較高,需要購買專門的對象存儲軟體以及大容量硬碟。如果對數據量要求不是海量,只是為了做文件共享的時候,直接用文件存儲的形式好了,性價比高。
❾ 兩種存儲表示各有哪些主要優缺點
線性表可用順序表或鏈表存儲。
試問: 兩種存儲表示各有哪些主要優缺點?
答:順序存儲表示是將數據元素存放於一個連續的存儲空間中,實現順序存取或(按下標)直接存取。它的存儲效率高,存取速度快。但它的空間大小一經定義,在程序整個運行期間不會發生改變,因此,不易擴充。同時,由於在插入或刪除時,為保持原有次序,平均需要移動一半(或近一半)元素,修改效率不高。
鏈接存儲表示的存儲空間一般在程序的運行過程中動態分配和釋放,且只要存儲器中還有空間,就不會產生存儲溢出的問題。同時在插入和刪除時不需要保持數據元素原來的物理順序,只需要保持原來的邏輯順序,因此不必移動數據,只需修改它們的鏈接指針,修改效率較高。但存取表中的數據元素時,只能循鏈順序訪問,因此存取效率不高。