❶ 在單cpu.多道程序環境下的各道程序在宏觀上是什麼運行
回答:如下
請注意,多道程序設計是在計算機內存中同時存放幾道相互獨立的程序,使它們在管理程序控制之下,相互穿插的運行。
兩個或兩個以上程序在計算機系統中同處於開始或結束之間的狀態。這就稱為多道程序技術運行的特徵:多道、宏觀上並行、微觀上串列。
所謂多道程序設計指的是允許多個程序同時進入一個計算機系統的主存儲器並啟動進行計算的方法。
也就是說,計算機內存中可以同時存放多道(兩個以上相互獨立的)程序,它們都處於開始和結束之間。從宏觀上看是並行的,多道程序都處於運行中,並且都沒有運行結束;
從微觀上看是串列的,各道程序輪流使用CPU,交替執行。
引入多道程序設計技術的根本目的是為了提高CPU的利用率,充分發揮計算機系統部件的並行性,現代計算機系統都採用了多道程序設計技術。
❷ 操作系統內存管理發展史
內存是計算機很重要的一個資源,因為程序只有被載入到內存中才可以運行;此外,CPU所需要的指令與數據也都是來自內存的。可以說,內存是影響計算機性能的一個很重要的因素。
隨著技術的發展,現在計算機的內存容量已經有了很大的增長,但是程序大小的增長速度比內存容量的增長速度要快得多。正如帕金森定律所指出,「不論存儲器有多大,程序都可以把它填滿」。所以問題來了,當一個程序大小超過內存容量時,如何把調入內存中?這篇文章將總結內存管理的一些技術。
在介紹內存管理的細節前,先要了解一下分層存儲器體系(一圖勝千言)。
分層存儲體系這個模型並不是一開始就有的,而是隨著計算機的發展來一步步完善,最終才形成了現在的體系。所以,分層存儲體系的發展歷史也是這篇文章的一個線索。
早期的計算機是沒有存儲器抽象的,直接將物理內存暴露給程序。可以把內存想像成中醫中放草葯的盒子,每個盒子都有標記放的是哪種草葯,當有兩種草葯同時放到一個盒子中去,就會出現醫療事故。
所以,這種情況下的內存管理是有問題的:
為了解決保護和重定位的問題,人們創造了一個新的內存抽象:地址空間。地址空間是一個進程可用於定址內存的一套地址集合。每個進程都有一個自己的地址空間,並且這個地址空間獨立於其他的地址空間。
地址空間在現實生活中有多的應用。比如電話的區號,北京是010,上海是021。這樣即使同一個電話號碼,區號不同也能區分開來。
考慮上個例子中的程序A、B,如果使用地址空間的話,B程序跳轉28,就不會跳轉到A程序的指令了。因為兩個28分別屬於不同地址空間。
了解地址空間這個概念,接下來看一下計算機是如何實現將兩個28映射到不同地址空間里的。
經典的辦法是給每個CPU配置兩個寄存---基址寄存器和界限寄存器。基址寄存器記錄程序的起始物理地址,界限寄存器記錄程序的長度。
還是用這個圖舉例,程序A的基址為0,界限為16384,程序B基址為16384,界限值為32768。每次一個進程訪問內存時,取一條指令,讀或寫一個數據字,CPU硬體會把地址發送到內存匯流排前自動把基址值加到進程發出的地址上。比如,進程A發出的訪問地址是28,而A的基址是0,那麼,A實際訪問的物理地址就是28,而進程B的基址為16384,加上28,得到的地址為16412,進程B實際訪問的地址是16412.這樣就解決了之前提到過的絕對物理地址所帶來的問題。
按照帕金森定律,「不論存儲器有多大,程序都可以把它填滿」。當程序大小超過內存容量時,計算機應該如何管理內存?
有兩種處理內存超載的通用方法。一種是交換技術,即把一個進程完整調入內存,使該進程運行一段數據啊in,然後存回磁碟。空閑進程主要存在於磁碟上,所以,當他們不運行的時候不會佔用內存。另一種是虛擬內存,該策略允許程序在只有一部分被調入內存的情況下運行。
我們重點關注虛擬內存。大體包含以下內容:
虛擬內存基本思想是每個程序都有自己的地址空間,這個空間被分割成多個塊。每個塊稱作一頁或頁面。每一頁有連續的地址范圍。這些頁被映射到物理內存,但是並不是所有的頁都必須在內存中才能運行程序。當程序引用到一部分在物理內存中的地址空間時,由硬體執行必要的映射。當程序引用到一部分不在物理內存中的的地址空間時,由操作系統負責將缺失的部分裝入物理內存並重新執行失敗的指令。
至此,對操作系統中的內存管理有了一個大體的了解,如內存模型對象的發展過程,每種內存管理的優缺點。同時我感受到了提出問題,解決問題這條線索也是閱讀計算機書籍的一個思路。
❸ 程序執行的四個特性 操作系統
嵌入式系統是以應用為中心,軟硬體可裁減的,適用於對功能、可靠性、成本、體積、功耗等綜合性嚴格要求的專用計算機系統。具有軟體代碼小、高度自動化、響應速度快等特點,特別適合於要求實時和多任務的體系。嵌入式系統主要由嵌入式處理器、相關支撐硬體、嵌入式操作系統及應用軟體系統等組成,它是可獨立工作的「器件」。
一、嵌入式操作系統的發展
作為嵌入式系統(包括硬、軟體系統)極為重要的組成部分的嵌入式操作系統,通常包括與硬體相關的底層驅動軟體、系統內核、設備驅動介面、通信協議、圖形界面、標准化瀏覽器等。嵌入式操作系統具有通用操作系統的基本特點,如能夠有效管理越來越復雜的系統資源;能夠把硬體虛擬化,使得開發人員從繁忙的驅動程序移植和維護中解脫出來;能夠提供庫函數、驅動程序、工具集以及應用程序。與通用操作系統相比較,嵌入式操作系統在系統實時高效性、硬體的相關依賴性、軟體固態化以及應用的專用性等方面具有較為突出的特點。
嵌入式操作系統伴隨著嵌入式系統的發展經歷了四個比較明顯的階段:
第一階段:無操作系統的嵌入演算法階段,以單晶元為核心的可編程式控制制器形式的系統,具有與監測、伺服、指示設備相配合的功能。應用於一些專業性極強的工業控制系統中,通過匯編語言編程對系統進行直接控制,運行結束後清除內存。系統結構和功能都相對單一,處理效率較低,存儲容量較小,幾乎沒有用戶介面。
第二階段:以嵌人式CPU為基礎、簡單操作系統為核心的嵌入式系統。CPU種類繁多,通用性比較差;系統開銷小,效率高;一般配備系統模擬器,操作系統具有一定的兼容性和擴展性;應用軟體較專業,用戶界面不夠友好;系統主要用來控制系統負載以及監控應用程序運行。
第三階段:通用的嵌人式實時操作系統階段,以嵌入式操作系統為核心的嵌入式系統。能運行於各種類型的微處理器上,兼容性好;內核精小、效率高,具有高度的模塊化和擴展性;具備文件和目錄管理、設備支持、多任務、網路支持、圖形窗口以及用戶界面等功能;具有大量的應用程序介面(APl);嵌入式應用軟體豐富。
第四階段:以基於Intemet為標志的嵌入式系統。這是一個正在迅速發展的階段。目前大多數嵌入式系統還孤立於lnlemet之外,但隨著Intemet的發展以及Intemet技術與信息家電、工業控制技術等結合日益密切,嵌入式設備與Intemet的結合將代表著嵌入式技術的真正未來。
二、使用實時操作系統的必要性
嵌入式實時操作系統在目前的嵌入式應用中用得越來越廣泛,尤其在功能復雜、系統龐大的應用中顯得愈來愈重要。
1.嵌人式實時操作系統提高了系統的可靠性。在控制系統中,出於安全方面的考慮,要求系統起碼不能崩潰,而且還要有自愈能力。不僅要求在硬體設計方面提高系統的可靠性和抗干擾性,而且也應在軟體設計方面提高系統的抗干擾性,盡可能地減少安全漏洞和不可靠的隱患。長期以來的前後台系統軟體設計在遇到強干擾時,使得運行的程序產生異常、出錯、跑飛,甚至死循環,造成了系統的崩潰。而實時操作系統管理的系統,這種干擾可能只是引起若干進程中的一個被破壞,可以通過系統運行的系統監控進程對其進行修復。通常情況下,這個系統監視進程用來監視各進程運行狀況,遇到異常情況時採取一些利於系統穩定可靠的措施,如把有問題的任務清除掉。
2.提高了開發效率,縮短了開發周期。在嵌入式實時操作系統環境下,開發一個復雜的應用程序,通常可以按照軟體工程中的解耦原則將整個程序分解為多個任務模塊。每個任務模塊的調試、修改幾乎不影響其他模塊。商業軟體一般都提供了良好的多任務調試環境。
3.嵌入式實時操作系統充分發揮了32位CPU的多任務潛力。32位CPU比8、16位CPU快,另外它本來是為運行多用戶、多任務操作系統而設計的,特別適於運行多任務實時系統。32位CPU採用利於提高系統可靠性和穩定性的設計,使其更容易做到不崩潰。例如,CPU運行狀態分為系統態和用戶態。將系統堆棧和用戶堆棧分開,以及實時地給出CPU的運行狀態等,允許用戶在系統設計中從硬體和軟體兩方面對實時內核的運行實施保護。如果還是採用以前的前後台方式,則無法發揮32位CPU的優勢。從某種意義上說,沒有操作系統的計算機(裸機)是沒有用的。在嵌入式應用中,只有把CPU嵌入到系統中,同時又把操作系統嵌入進去,才是真正的計算機嵌入式應用。
三、嵌入式操作系統選型
當我們在設計信息電器、數字醫療設備等嵌入式產品時,嵌入式操作系統的選擇至關重要。一般而言,在選擇嵌入式操作系統時,可以遵循以下原則。總的來說,就是「做加法還是做減法」的問題。
(一)市場進入時間
制定產品時間表與選擇操作系統有關系,實際產品和一般演示是不同的。目前是Windows程序員可能是人力資源最豐富的。現成資源最多的也就可能是WinCE。使用WinCE能夠很快進入市場。因為WinCE+X86做產品實際上是在做減法,去掉你不要的功能,能很快出產品,但伴隨的可能是成本高,核心競爭力差。而某些高效的操作系統可能由於編程人員缺乏,或由於這方面的技術積累不夠,影響開發進度。
(二)可移植性
操作系統相關性。當進行嵌入式軟體開發時,可移植性是要重點考慮的問題。良好的軟體移植性應該比較好,可以在不同平台、不同系統上運行,跟操作系統無關。軟體的通用性和軟體的性能通常是矛盾的。即通用以損失某些特定情況下的優化性能為代價。很難設想開發一個嵌入式瀏覽器而僅能在某一特定環境下應用。反過來說,當產品與平台和操作系統緊密結合時,往往你的產品的特色就蘊含其中。
(三)可利用資源
產品開發不同於學術課題研究,它是以快速、低成本、高質量的推出適合用戶需求的產品為目的的。集中精力研發出產品的特色,其他功能盡量由操作系統附加或採用第三方產品,因此操作系統的可利用資源對於選型是一個重要參考條件。Linux和WinCE都有大量的資源可以利用,這是他們被看好的重要原因。其他有些實時操作系統由於比較封閉,開發時可以利用的資源比較少,因此多數功能需要自己獨立開發。從而影響開發進度。近來的市場需求顯示,越來越多的嵌入式系統,均要求提供全功能的Web瀏覽器。而這要求有一個高性能、高可靠的GUI的支持。
(四)系統定製能力
信息產品不同於傳統PC的Wintel結構的單純性,用戶的需求是千差萬別的,硬體平台也都不一樣,所以對系統的定製能力提出了要求。要分析產品是否對系統底層有改動的需求,這種改動是否伴隨著產品特色?Linux由於其源代碼開放的天生魅力,在定製能力方面具有優勢。隨著WinCE3.0原碼的開放,以及微軟在嵌入式領域力度的加強,其定製能力會有所提升。
(五)成本
成本是所有產品不得不考慮的問題。操作系統的選擇會對成本有什麼影響呢?Linux免費,WinCE等商業系統需要支付許可證使用費,但這都不是問題的答案。成本是需要綜合權衡以後進行考慮的——選擇某一系統可能會對其他一系列的因素產生影響,如對硬體設備的選型、人員投入、以及公司管理和與其他合作夥伴的共同開發之間的溝通等許多方面的影響。
(六)中文內核支持
國內產品需要對中文的支持。由於操作系統多數是採用西文方式,是否支持雙位元組編碼方式,是否遵循GBK,GBl8030等各種國家標准,是否支持中文輸入與處理,是否提供第三方中文輸入介面是針對國內用戶的嵌入式產品的必需考慮的重要因素。
上面提到用WinCE+x86出產品是減法,這實際上就是所謂PC家電化;另外一種做法是加法,利用家電行業的硬體解決方案(絕大部分是非x86的)加以改進,加上嵌入式操作系統,再加上應用軟體。這是所謂家電PC化的做法,這種加法的優勢是成本低,特色突出,缺點是產品研發周期長,難度大(需要深入了解硬體和操作系統)。如果選擇這種做法,Linux是一個好選擇,它讓你能夠深入到系統底層,如果你願意並且有能力。
四、幾種代表性嵌入式操作系統比較
(一)VxWorks
VxWorks操作系統是美國WindRiver公司於1983年設計開發的一種嵌入式實時操作系統(RTOS),是Tornado嵌入式開發環境的關鍵組成部分。良好的持續發展能力、高性能的內核以及友好的用戶開發環境,在嵌人式實時操作系統領域逐漸占據一席之地。
VxWorks具有可裁剪微內核結構;高效的任務管理;靈活的任務間通訊;微秒級的中斷處理;支持POSIX 1003.1b實時擴展標准;支持多種物理介質及標準的、完整的TCP/IP網路協議等。
然而其價格昂貴。由於操作系統本身以及開發環境都是專有的,價格一般都比較高,通常需花費10萬元人民幣以上才能建起一個可用的開發環境,對每一個應用一般還要另外收取版稅。一般不通供源代碼,只提供二進制代碼。由於它們都是專用操作系統,需要專門的技術人員掌握開發技術和維護,所以軟體的開發和維護成本都非常高。支持的硬體數量有限。
(二)Windows CE
Windows CE與Windows系列有較好的兼容性,無疑是Windows CE推廣的一大優勢。其中WinCE3.0是一種針對小容量、移動式、智能化、32位、了解設備的模塊化實時嵌人式操作系統。為建立針對掌上設備、無線設備的動態應用程序和服務提供了一種功能豐富的操作系統平台,它能在多種處理器體系結構上運行,並且通常適用於那些對內存佔用空間具有一定限制的設備。它是從整體上為有限資源的平台設計的多線程、完整優先權、多任務的操作系統。它的模塊化設計允許它對從掌上電腦到專用的工業控制器的用戶電子設備進行定製。操作系統的基本內核需要至少200KB的ROM。由於嵌入式產品的體積、成本等方面有較嚴格的要求,所以處理器部分佔用空間應盡可能的小。系統的可用內存和外存數量也要受限制,而嵌入式操作系統就運行在有限的內存(一般在ROM或快閃記憶體)中,因此就對操作系統的規模、效率等提出了較高的要求。從技術角度上講,Windows CE作為嵌入式操作系統有很多的缺陷:沒有開放源代碼,使應用開發人員很難實現產品的定製;在效率、功耗方面的表現並不出色,而且和Windows一樣佔用過的系統內存,運用程序龐大;版權許可費也是廠商不得不考慮的因素。
(三)嵌入式Linux
這是嵌入式操作系統的一個新成員,其最大的特點是源代碼公開並且遵循GPL協議,在近一年多以來成為研究熱點,據IDG預測嵌入式Linux將占未來兩年的嵌入式操作系統份額的50%。
由於其源代碼公開,人們可以任意修改,以滿足自己的應用,並且查錯也很容易。遵從GPL,無須為每例應用交納許可證費。有大量的應用軟體可用。其中大部分都遵從GPL,是開放源代碼和免費的。可以稍加修改後應用於用戶自己的系統。 有大量的免費的優秀的開發工具,且都遵從GPL,是開放源代碼的。有龐大的開發人員群體。無需專門的人才,只要懂Unix/Linux和C語言即可。隨著Linux在中國的普及,這類人才越來越多。所以軟體的開發和維護成本很低。優秀的網路功能,這在Internet時代尤其重要。穩定——這是Linux本身具備的一個很大優點。內核精悍,運行所需資源少,十分適合嵌入式應用。
支持的硬體數量龐大。嵌入式Linux和普通Linux並無本質區別,PC上用到的硬體嵌入式Linux幾乎都支持。而且各種硬體的驅動程序源代碼都可以得到,為用戶編寫自己專有硬體的驅動程序帶來很大方便。
在嵌入式系統上運行Linux的一個缺點是Linux體系提供實時性能需要添加實時軟體模塊。而這些模塊運行的內核空間正是操作系統實現調度策略、硬體中斷異常和執行程序的部分。由於這些實時軟體模塊是在內核空間運行的,因此代碼錯誤可能會破壞操作系統從而影響整個系統的可靠性,這對於實時應用將是一個非常嚴重的弱點。
(四)µC/OS一Ⅱ
µC/OS一Ⅱ是著名的源代碼公開的實時內核,是專為嵌入式應用設計的,可用於8位,16位和32位單片機或數字信號處理器(DSP)。它是在原版本µC/OS的基礎上做了重大改進與升級,並有了近十年的使用實踐,有許多成功應用該實時內核的實例。它的主要特點如下:
1.公開源代碼,容易就能把操作系統移植到各個不同的硬體平台上。
2.可移植性,絕大部分源代碼是用C語言寫的,便於移植到其他微處理器上。
3.可固化。
4.可裁剪性,有選擇的使用需要的系統服務,以減少斗所需的存儲空間。
5.佔先式,完全是佔先式的實時內核,即總是運行就緒條件下優先順序最高的任務。
6.多任務,可管理64個任務,任務的優先順序必須是不同的,不支持時間片輪轉調度法。
7.可確定性,函數調用與服務的執行時間具有其可確定性,不依賴於任務的多少。
8.實用性和可靠性,成功應用該實時內核的實例,是其實用性和可靠性的最好證據。
由於µC/OS一Ⅱ僅是一個實時內核,這就意味著它不像其他實時存在系統那樣提供給用戶的只是一些API函數介面,還有很多工作需要用戶自己去完成。
五、結束語
在嵌入式應用中,使用實時操作系統(RTOS)是當前嵌入式應用的一個特點,一種趨勢,也是單片機應用從低水平向高水平的一個進步。在實際的應用中,根據不同的要求和條件選擇合適的操作系統,使開發工作更容易,設計出更完美的嵌入式系統。
❹ 計算機程序的執行過程
執行程序的過程 :
開始執行程序時,必須先給程序計數器PC賦以第一條指令的首地址00H,然後就進入第一條指令的取令的取指令階段。
第一條指令的執行過程:
取指令階段:
①將程序計數器PC的內容(00H)送至地址寄存器AR,記為PC AR。
②程序計數器PC的內容自動加1變為01H,為取下一個指令位元組作準備,記為PC+1 PC。
③地址寄存器AR將00H通過地址匯流排送至存儲器,經地址解碼器解碼,選中00號單元,記為AR M。
④CPU發出"讀"命令。
⑤所選中的00號單元的內容B0H讀至數據匯流排DB,記為(00H) DB。
⑥經數據匯流排DB,將讀出的B0H送至數據寄存器,記為DB DR。
⑦數據寄存器DR將其內容送至指令寄存器IR,經過解碼,控制邏輯發出招待該條指令的一系列控制信號,記為DR IR,IR ID、PLA。經過解碼,CPU"識別"出這個操作碼就是MOV A,03指令,於是,它"通知"控制器發出執行這條指令的各種控制命令。
❺ 計算機組成原理(三)存儲系統
輔存中的數據要調入主存後才能被CPU訪問
按存儲介質,存儲器可分為磁表面存儲器(磁碟、磁帶)、磁心存儲器半導體存儲器(MOS型存儲器、雙極型存儲器)和光存儲器(光碟)。
隨機存取存儲器(RAM):讀寫任何一個存儲單元所需時間都相同,與存儲單元所在的物理位置無關,如內存條等
順序存取存儲器(SAM):讀寫一個存儲單元所需時間取決於存儲單元所在的物理位置,如磁碟等
直接存取存儲器(DAM):既有隨機存取特性,也有順序存取特性。先直接選取信息所在區域,然後按順序方式存取。如硬碟等
相聯存儲器,即可以按內容訪問的存儲器(CAM)可以按照內容檢索到存儲位置進行讀寫,「快表」就是一種相聯存儲器
讀寫存儲器—即可讀、也可寫(如:磁碟、內存、Cache)
只讀存儲器—只能讀,不能寫(如:實體音樂專輯通常採用CD-ROM,實體電影採用藍光光碟,BIOS通常寫在ROM中)
斷電後,存儲信息消失的存儲器——易失性存儲器(主存、Cache)
斷電後,存儲信息依然保持的存儲器——非易失性存儲器(磁碟、光碟)
信息讀出後,原存儲信息被破壞——破壞性讀出(如DRAM晶元,讀出數據後要進行重寫)
信息讀出後,原存儲信息不被破壞——非破壞性讀出(如SRAM晶元、磁碟、光碟)
存儲器晶元的基本電路如下
封裝後如下圖所示
圖中的每條線都會對應一個金屬引腳,另外還有供電引腳、接地引腳,故可以由此求引腳數目
n位地址對應2 n 個存儲單元
假如有8k×8位的存儲晶元,即
現代計算機通常按位元組編址,即每個位元組對應一個地址
但也支持按位元組定址、按字定址、按半字定址、按雙字定址
(Dynamic Random Access Memory,DRAM)即動態RAM,使用柵極電容存儲信息
(Static Random Access Memory,SRAM)即靜態RAM,使用雙穩態觸發器存儲信息
DRAM用於主存、SRAM用於Cache,兩者都屬於易失性存儲器
簡單模型下需要有 根選通線,而行列地址下僅需 根選通線
ROM晶元具有非易失性,斷電後數據不會丟失
主板上的BIOS晶元(ROM),存儲了「自舉裝入程序」,負責引導裝入操作系統(開機)。邏輯上,主存由 輔存RAM+ROM組成,且二者常統一編址
位擴展的連接方式是將多個存儲晶元的地址端、片選端和讀寫控制端相應並聯,數據端分別引出。
字擴展是指增加存儲器中字的數量,而位數不變。字擴展將晶元的地址線、數據線、讀寫控制線相應並聯,而由片選信號來區分各晶元的地址范圍。
實際上,存儲器往往需要同時擴充字和位。字位同時擴展是指既增加存儲字的數量,又增加存儲字長。
兩個埠對同一主存操作有以下4種情況:
當出現(3)(4)時,置「忙」信號為0,由判斷邏輯決定暫時關閉一個埠(即被延時),未被關閉的埠正常訪問,被關閉的埠延長一個很短的時間段後再訪問。
多體並行存儲器由多體模塊組成。每個模塊都有相同的容量和存取速度,各模塊都有獨立的讀寫控制電路、地址寄存器和數據寄存器。它們既能並行工作,又能交義工作。多體並行存儲器分為高位交叉編址(順序方式)和低位交叉編址(交叉方式)兩種.
①高位交叉編址
②低位交叉編址
採用「流水線」的方式並行存取(宏觀上並行,微觀上串列),連續取n個存儲字耗時可縮短為
宏觀上,一個存儲周期內,m體交叉存儲器可以提供的數據量為單個模塊的m倍。存取周期為T,存取時間/匯流排傳輸周期為r,為了使流水線不間斷,應保證模塊數
單體多字系統的特點是存儲器中只有一個存儲體,每個存儲單元存儲m個字,匯流排寬度也為m個字。一次並行讀出m個字,地址必須順序排列並處於同一存儲單元。
缺點:每次只能同時取m個字,不能單獨取其中某個字;指令和數據在主存內必須是連續存放的
為便於Cache 和主存之間交換信息,Cache 和主存都被劃分為相等的塊,Cache 塊又稱Cache 行,每塊由若干位元組組成。塊的長度稱為塊長(Cache 行長)。由於Cache 的容量遠小於主存的容盤,所以Cache中的塊數要遠少於主存中的塊數,它僅保存主存中最活躍的若干塊的副本。因此 Cache 按照某種策略,預測CPU在未來一段時間內欲訪存的數據,將其裝入Cache.
將某些主存塊復制到Cache中,緩和CPU與主存之間的速度矛盾
CPU欲訪問的信息已在Cache中的比率稱為命中率H。先訪問Cache,若Cache未命中再訪問主存,系統的平均訪問時間t 為
同時訪問Cache和主存,若Cache命中則立即停止訪問主存系統的平均訪問時間t 為
空間局部性:在最近的未來要用到的信息(指令和數據),很可能與現在正在使用的信息在存儲空間上是鄰近的
時間局部性:在最近的未來要用到的信息,很可能是現在正在使用的信息
基於局部性原理,不難想到,可以把CPU目前訪問的地址「周圍」的部分數據放到Cache中
直接映射方式不需要考慮替換演算法,僅全相聯映射和組相聯映射需要考慮
①隨機演算法(RAND):若Cache已滿,則隨機選擇一塊替換。實現簡單,但完全沒考慮局部性原理,命中率低,實際效果很不穩定
②先進先出演算法(FIFO):若Cache已滿,則替換最先被調入Cache的塊。實現簡單,依然沒考慮局部性原理
③近期最少使用演算法(LRU):為每一個Cache塊設置一個「計數器」,用於記錄每個Cache塊已經有多久沒被訪問了。當Cache滿後替換「計數器」最大的.基於「局部性原理」,LRU演算法的實際運行效果優秀,Cache命中率高。
④最不經常使用演算法(LFU):為每一個Cache塊設置一個「計數器」,用於記錄每個Cache塊被訪問過幾次。當Cache滿後替換「計數器」最小的.並沒有很好地遵循局部性原理,因此實際運行效果不如LRU
現代計算機常採用多級Cache,各級Cache之間常採用「全寫法+非寫分配法」;Cache-主存之間常採用「寫回法+寫分配法」
寫回法(write-back):當CPU對Cache寫命中時,只修改Cache的內容,而不立即寫入主存,只有當此塊被換出時才寫回主存。減少了訪存次數,但存在數據不一致的隱患。
全寫法(寫直通法,write-through):當CPU對Cache寫命中時,必須把數據同時寫入Cache和主存,一般使用寫緩沖(write buffer)。使用寫緩沖,CPU寫的速度很快,若寫操作不頻繁,則效果很好。若寫操作很頻繁,可能會因為寫緩沖飽和而發生阻塞訪存次數增加,速度變慢,但更能保證數據一致性
寫分配法(write-allocate):當CPU對Cache寫不命中時,把主存中的塊調入Cache,在Cache中修改。通常搭配寫回法使用。
非寫分配法(not-write-allocate):當CPU對Cache寫不命中時只寫入主存,不調入Cache。搭配全寫法使用。
頁式存儲系統:一個程序(進程)在邏輯上被分為若干個大小相等的「頁面」, 「頁面」大小與「塊」的大小相同 。每個頁面可以離散地放入不同的主存塊中。CPU執行的機器指令中,使用的是「邏輯地址」,因此需要通「頁表」將邏輯地址轉為物理地址。頁表的作用:記錄了每個邏輯頁面存放在哪個主存塊中
邏輯地址(虛地址):程序員視角看到的地址
物理地址(實地址):實際在主存中的地址
快表是一種「相聯存儲器」,可以按內容尋訪,表中存儲的是頁表項的副本;Cache中存儲的是主存塊的副本
地址映射表中每一行都有對應的標記項
主存-輔存:實現虛擬存儲系統,解決了主存容量不夠的問題
Cache-主存:解決了主存與CPU速度不匹配的問題
❻ 儲存過程在什麼情況下調用的,怎麼調用
存儲過程的優勢在於執行速度快和調試獨立。
所以,當你覺得某一資料庫操作過程在程序中執行速度不夠快,或者考慮到資料庫結構等可能經常改變而導致程序修改頻繁,這種情況下可以選擇使用存儲過程。
在資料庫中定義好存儲過程後,即可根據該存儲過程名進行調用,就像程序語言里調用一個函數一樣。具體語法參見你使用的開發語言的規則。
❼ C語言文件的編譯與執行的四個階段並分別描述
開發C程序有四個步驟:編輯、編譯、連接和運行。
任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。
1、預處理:導入源程序並保存(C文件)。
2、編譯:將源程序轉換為目標文件(Obj文件)。
3、鏈接:將目標文件生成為可執行文件(EXE文件)。
4、運行:執行,獲取運行結果的EXE文件。
(7)存儲體系環境下程序怎麼被執行擴展閱讀:
將C語言代碼分為程序的幾個階段:
1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。
2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。
3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。
4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。
❽ 0x000000e8..30分
系統問題吧。。我以前也有過。很多人都是這養才覺得的,別的辦法很多。下面多是找來的
運行某些程序的時候,有時會出現內存錯誤的提示,然後該程序就關閉。
「0x????????」指令引用的「0x????????」內存。該內存不能為「read」。
「0x????????」指令引用的「0x????????」內存,該內存不能為「written」。
以上的情況相信大家都應該見到過,甚至說一些網友因為不爽於這個經常出現的錯誤提示而屢次重裝系統。相信普通用戶應該不會理解那些復雜的十六進制代碼。
出現這個現象有方面的,一是硬體,即內存方面有問題,二是軟體,這就有多方面的問題了。
一:先說說硬體:
一般來說,電腦硬體是很不容易壞的。內存出現問題的可能性並不大(除非你的內存真的是雜牌的一塌徒地),主要方面是:1。內存條壞了(二手內存情況居多)、2。使用了有質量問題的內存,3。內存插在主板上的金手指部分灰塵太多。4。使用不同品牌不同容量的內存,從而出現不兼容的情況。5。超頻帶來的散熱問題。你可以使用MemTest 這個軟體來檢測一下內存,它可以徹底的檢測出內存的穩定度。
二、如果都沒有,那就從軟體方面排除故障了。
先說原理:內存有個存放數據的地方叫緩沖區,當程序把數據放在緩沖區,需要操作系統提供的「功能函數」來申請,如果內存分配成功,函數就會將所新開辟的內存區地址返回給應用程序,應用程序就可以通過這個地址使用這塊內存。這就是「動態內存分配」,內存地址也就是編程中的「游標」。內存不是永遠都招之即來、用之不盡的,有時候內存分配也會失敗。當分配失敗時系統函數會返回一個0值,這時返回值「0」已不表示新啟用的游標,而是系統向應用程序發出的一個通知,告知出現了錯誤。作為應用程序,在每一次申請內存後都應該檢查返回值是否為0,如果是,則意味著出現了故障,應該採取一些措施挽救,這就增強了程序的「健壯性」。若應用程序沒有檢查這個錯誤,它就會按照「思維慣性」認為這個值是給它分配的可用游標,繼續在之後的執行中使用這塊內存。真正的0地址內存區儲存的是計算機系統中最重要的「中斷描述符表」,絕對不允許應用程序使用。在沒有保護機制的操作系統下(如DOS),寫數據到這個地址會導致立即當機,而在健壯的操作系統中,如Windows等,這個操作會馬上被系統的保護機制捕獲,其結果就是由操作系統強行關閉出錯的應用程序,以防止其錯誤擴大。這時候,就會出現上述的內存不能為「read」錯誤,並指出被引用的內存地址為「0x00000000「。內存分配失敗故障的原因很多,內存不夠、系統函數的版本不匹配等都可能有影響。因此,這種分配失敗多見於操作系統使用很長時間後,安裝了多種應用程序(包括無意中「安裝」的病毒程序),更改了大量的系統參數和系統檔案之後。
在使用動態分配的應用程序中,有時會有這樣的情況出現:程序試圖讀寫一塊「應該可用」的內存,但不知為什麼,這個預料中可用的游標已經失效了。有可能是「忘記了」向操作系統要求分配,也可能是程序自己在某個時候已經注銷了這塊內存而「沒有留意」等等。注銷了的內存被系統回收,其訪問權已經不屬於該應用程序,因此讀寫操作也同樣會觸發系統的保護機制,企圖「違法」的程序唯一的下場就是被操作終止執行,回收全部資源。計算機世界的法律還是要比人類有效和嚴厲得多啊!像這樣的情況都屬於程序自身的BUG,你往往可在特定的操作順序下重現錯誤。無效游標不一定總是0,因此錯誤提示中的內存地址也不一定為「0x00000000」,而是其它隨機數字。
首先建議:
1、 檢查系統中是否有木馬或病毒。這類程序為了控制系統往往不負責任地修改系統,從而導致操作系統異常。平常應加強信息安全意識,對來源不明的可執行程序絕不好奇。
2、 更新操作系統,讓操作系統的安裝程序重新拷貝正確版本的系統檔案、修正系統參數。有時候操作系統本身也會有BUG,要注意安裝官方發行的升級程序。
3、 盡量使用最新正式版本的應用程序、Beta版、試用版都會有BUG。
4、 刪除然後重新創建 Winnt/System32/Wbem/Repository 文件夾中的文件:在桌面上右擊我的電腦,然後單擊管理。 在"服務和應用程序"下,單擊服務,然後關閉並停止 Windows Management Instrumentation 服務。 刪除 Winnt/System32/Wbem/Repository 文件夾中的所有文件。(在刪除前請創建這些文件的備份副本。) 打開"服務和應用程序",單擊服務,然後打開並啟動 Windows Management Instrumentation 服務。當服務重新啟動時,將基於以下注冊表項中所提供的信息重新創建這些文件: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WBEM/CIMOM/Autorecover MOFs
內存指令不能read,這是在電腦使用中經常出現的問題,內存是主板上的存儲部件,是CPU直接與之溝通,並用其存放當前正在使用的的數據和命令的重要部件。當你用鍵盤或滑鼠輸入某個命令後,CPU就會解釋命令並將指令或程式載入到內存中,這樣程序才能夠被執行。而一旦內存發生問題了,程序就不能被執行,因此就產生了前面我們提到的「該內存不能為read」錯誤的警告。當然,出現了「該內存不能為read」的故障也不一定都是內存的問題,電腦中了病毒或木馬以及運行的程序本身的Bug也會造成這種現象。很難分清究竟是什麼原因造成的,一時半會不好排除,但沒關系,按確定、取消,重啟,即可。感興趣的網友可用下述辦法試著去解決:
1、打開的程序太多,如果同時打開的文檔過多或者運行的程序過多,沒有足夠的內存運行其他程序,要隨時關閉不用的程序和窗口。
2、自動運行的程序太多,關閉一些啟動程序, 開始-運行-Msconfig---啟動 ,除殺毒軟體、輸入法外一般的程序都可以關掉。
3、物理內存過小,加大物理內存;內存和主板沒插好或其他硬體不兼容 重插內存或換個插槽 ;雙內存不兼容 ,要使用同品牌的內存或只要一條內存 ;劣質內存條或內存條壞了 更換內存條;合理設置虛擬內存。
4、市電電壓過大的波動,或者PC機上使用劣質電源,都會給內存帶來損害,更換功率大、質量好的電源。
5、PC機箱內充滿灰塵,或者PC工作環境相對潮濕,也會造成運行不正常。及時除塵。
6 、CPU、顯卡散熱問題 ,改善散熱 。
7、硬碟有問題 ,掃描修復或更換硬碟 。
8 、驅動問題 重裝更新驅動 。
9、非法操作,系統無法執行。
10、 軟體損壞 重裝軟體 ;軟體有BUG 打補丁或更新到最新版本 ; 軟體和系統不兼容 給軟體打上補丁或是試試系統的兼容模式 ; 軟體和軟體之間有沖突 如果最近安裝了什麼新軟體,卸載了試試 。
11、 系統本身有問題 有時候操作系統本身也會有BUG,要注意安裝官方發行的更新程序最好及時補上,必要時重裝系統。
12、 病毒問題 殺毒 ;殺毒軟體與系統或軟體相沖突 由於殺毒軟體是進入底層監控系統的,可能與一些軟體相沖突,卸載試試 。
行某些程序的時候,有時會出現內存錯誤的提示,然後該程序就關閉。
「0x????????」指令引用的「0x????????」內存。該內存不能為「read」。
「0x????????」指令引用的「0x????????」內存,該內存不能為「written」。
不知你出現過類似這樣的故障嗎?(0x後面內容有可能不一樣。)
一般出現這個現象有方面的,一是硬體,即內存方面有問題,二是軟體,這就有多方面的問題了。
下面先說說硬體:
一般來說,內存出現問題的可能性並不大,主要方面是:內存條壞了、內存質量有問題,還有就是2個不同牌子不同容量的內存混插,也比較容易出現不兼容的情況,同時還要注意散熱問題,特別是超頻後。你可以使用MemTest 這個軟體來檢測一下內存,它可以徹底的檢測出內存的穩定度。
假如你是雙內存,而且是不同品牌的內存條混插或者買了二手內存時,出現這個問題,這時,你就要檢查是不是內存出問題了或者和其它硬體不兼容。
如果都沒有,那就從軟體方面排除故障了。
先簡單說說原理:內存有個存放數據的地方叫緩沖區,當程序把數據放在其一位置時,因為沒有足夠空間,就會發生溢出現象。舉個例子:一個桶子只能將一斤的水,當你放入兩斤的水進入時,就會溢出來。而系統則是在屏幕上表現出來。這個問題,經常出現在windows2000和XP系統上,Windows 2000/XP對硬體的要求是很苛刻的,一旦遇到資源死鎖、溢出或者類似Windows 98里的非法操作,系統為保持穩定,就會出現上述情況。另外也可能是硬體設備之間的兼容性不好造成的。
下面我從幾個例子給大家分析:
例一:打開IE瀏覽器或者沒過幾分鍾就會出現"0x70dcf39f"指令引用的"0x00000000"內存。該內存不能為「read」。要終止程序,請單擊「確定」的信息框,單擊「確定」後,又出現「發生內部錯誤,您正在使用的其中一個窗口即將關閉」的信息框,關閉該提示信息後,IE瀏覽器也被關閉。 解決方法:修復或升級IE瀏覽器,同時打上補丁。看過其中一個修復方法是,Win2000自升級,也就是Win2000升級到Win2000,其實這種方法也就是把系統還原到系統初始的狀態下。比如你的IE升級到了6.0,自升級後,會被IE5.0代替。
例二:在windows xp下雙擊光碟裡面的「AutoRun.exe」文件,顯示「0x77f745cc」指令引用的「0x00000078」內存。該內存不能為「written」,要終止程序,請單擊「確定」,而在Windows 98里運行卻正常。 解決方法:這可能是系統的兼容性問題,winXP的系統,右鍵「AutoRun.exe」文件,屬性,兼容性,把「用兼容模式運行這個程序」項選擇上,並選擇「Windows 98/Me」。win2000如果打了SP的補丁後,只要開始,運行,輸入:regsvr32 c:\winnt\apppatch\slayerui.dll。右鍵,屬性,也會出現兼容性的選項。
例三:RealOne Gold關閉時出現錯誤,以前一直使用正常,最近卻在每次關閉時出現「0xffffffff」指令引用的「0xffffffff」內存。該內存不能為「read」 的提示。 解決方法:當使用的輸入法為微軟拼音輸入法2003,並且隱藏語言欄時(不隱藏時沒問題)關閉RealOne就會出現這個問題,因此在關閉RealOne之前可以顯示語言欄或者將任意其他輸入法作為當前輸入法來解決這個問題。
例四:我的豪傑超級解霸自從上網後就不能播放了,每次都提示「0x060692f6」(每次變化)指令引用的「0xff000011」內存不能為「read」,終止程序請按確定。 解決方法:試試重裝豪傑超級解霸,如果重裝後還會,到官方網站下載相應版本的補丁試試。還不行,只好換就用別的播放器試試了。
例五:雙擊一個游戲的快捷方式,「0x77f5cd0」指令引用「0xffffffff」內 存,該內存不能為「read」 ,並且提示Client.dat程序錯誤。 解決方法:重裝顯卡的最新驅動程序,然後下載並且安裝DirectX9.0。
例六:一個朋友發信息過來,我的電腦便出現了錯誤信息:「0x772b548f」指令引用的「0x00303033」內存,該內存不能為「written」,然後QQ自動下線,而再打開QQ,發現了他發過來的十幾條的信息。 解決方法:這是對方利用QQ的BUG,發送特殊的代碼,做QQ出錯,只要打上補丁或升級到最新版本,就沒事了。
原因 解決方法
1 內存條壞了 更換內存條
2 雙內存不兼容 使用同品牌的內存或只要一條內存
3 內存質量問題 更換內存條
4 散熱問題 加強機箱內部的散熱
5 內存和主板沒插好或其他硬體不兼容 重插內存或換個插槽
6 硬體有問題 更換硬碟
7 驅動問題 重裝驅動,如果是新系統,應先安裝主板驅動
8 軟體損壞 重裝軟體
9 軟體有BUG 打補丁或更新到最新版本
10 軟體和系統不兼容 給軟體打上補丁或是試試系統的兼容模式
11 軟體和軟體之間有沖突 如果最近安裝了什麼新軟體,卸載了試試
12 軟體要使用其他相關的軟體有問題 重裝相關軟體,比如播放某一格式的文件時出錯,可能是這個文件的解碼器有問題
13 病毒問題 殺毒
14 殺毒軟體與系統或軟體相沖突 由於殺毒軟體是進入底層監控系統的,可能與一些軟體相沖突,卸載試試
15 系統本身有問題 有時候操作系統本身也會有BUG,要注意安裝官方發行的更新程序,象SP的補丁,最好打上.如果還不行,重裝系統,或更換其他版本的系統。
〔又一說〕
在控制面板的添加/刪除程序中看看你是否安裝了微軟NET.Framework,如果已經安裝了,可以考慮卸載它,當然如果你以後在其它程序需要NET.Framework時候,可以再重新安裝。
另外,如果你用的是ATI顯卡並且你用的是SP2的補丁,據我所知,一些ATI的顯卡驅動需要在NET.Framework正常工作的環境下。這種情況你可以找一款不需要NET.Framework支持的ATI顯卡驅動。
如果以上兩種方法並不能完全解決問題,你試著用一下「IE修復」軟體,並可以查查是否有病毒之類的。
〔微軟NET.Framework升級到1.1版應該沒問題了〕
〔還有一說〕
Tag: 「內存只能為只讀」的解決
方法一:
微軟新聞組的朋友指點:開始--運行:regsvr32 jscript.dll
開始--運行:regsvr32 vbscript.dll
不過沒解決---但提供了路子-----一次運行注冊所有dll
搜索查找到方法如下:
運行 輸入cmd 回車在命令提示符下輸入
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
這個命令老兄你慢慢輸 輸入正確的話會看到飛快地滾屏 否則……否則失敗就是沒這效果
回車後慢慢等(需要點時間1-2分鍾) 都運行完再打開看
方法二:
這是個典型問題~~~~~引起這個問題的原因很多
一般來講就是給系統打上補丁和更換內存、給內存換個插槽這3種方法來解決
[系統補丁只要到Microsoft Update網站在線更新就可以了]
行某些程序的時候,有時會出現內存錯誤的提示,然後該程序就關閉。
「0x????????」指令引用的「0x????????」內存。該內存不能為「read」。
「0x????????」指令引用的「0x????????」內存,該內存不能為「written」。
不知你出現過類似這樣的故障嗎?(0x後面內容有可能不一樣。)
一般出現這個現象有方面的,一是硬體,即內存方面有問題,二是軟體,這就有多方面的問題了。
下面先說說硬體:
一般來說,內存出現問題的可能性並不大,主要方面是:內存條壞了、內存質量有問題,還有就是2個不同牌子不同容量的內存混插,也比較容易出現不兼容的情況,同時還要注意散熱問題,特別是超頻後。你可以使用MemTest 這個軟體來檢測一下內存,它可以徹底的檢測出內存的穩定度。
假如你是雙內存,而且是不同品牌的內存條混插或者買了二手內存時,出現這個問題,這時,你就要檢查是不是內存出問題了或者和其它硬體不兼容。
如果都沒有,那就從軟體方面排除故障了。
先簡單說說原理:內存有個存放數據的地方叫緩沖區,當程序把數據放在其一位置時,因為沒有足夠空間,就會發生溢出現象。舉個例子:一個桶子只能將一斤的水,當你放入兩斤的水進入時,就會溢出來。而系統則是在屏幕上表現出來。這個問題,經常出現在windows2000和XP系統上,Windows 2000/XP對硬體的要求是很苛刻的,一旦遇到資源死鎖、溢出或者類似Windows 98里的非法操作,系統為保持穩定,就會出現上述情況。另外也可能是硬體設備之間的兼容性不好造成的。
下面我從幾個例子給大家分析:
例一:打開IE瀏覽器或者沒過幾分鍾就會出現"0x70dcf39f"指令引用的"0x00000000"內存。該內存不能為「read」。要終止程序,請單擊「確定」的信息框,單擊「確定」後,又出現「發生內部錯誤,您正在使用的其中一個窗口即將關閉」的信息框,關閉該提示信息後,IE瀏覽器也被關閉。 解決方法:修復或升級IE瀏覽器,同時打上補丁。看過其中一個修復方法是,Win2000自升級,也就是Win2000升級到Win2000,其實這種方法也就是把系統還原到系統初始的狀態下。比如你的IE升級到了6.0,自升級後,會被IE5.0代替。
例二:在windows xp下雙擊光碟裡面的「AutoRun.exe」文件,顯示「0x77f745cc」指令引用的「0x00000078」內存。該內存不能為「written」,要終止程序,請單擊「確定」,而在Windows 98里運行卻正常。 解決方法:這可能是系統的兼容性問題,winXP的系統,右鍵「AutoRun.exe」文件,屬性,兼容性,把「用兼容模式運行這個程序」項選擇上,並選擇「Windows 98/Me」。win2000如果打了SP的補丁後,只要開始,運行,輸入:regsvr32 c:\winnt\apppatch\slayerui.dll。右鍵,屬性,也會出現兼容性的選項。
例三:RealOne Gold關閉時出現錯誤,以前一直使用正常,最近卻在每次關閉時出現「0xffffffff」指令引用的「0xffffffff」內存。該內存不能為「read」 的提示。 解決方法:當使用的輸入法為微軟拼音輸入法2003,並且隱藏語言欄時(不隱藏時沒問題)關閉RealOne就會出現這個問題,因此在關閉RealOne之前可以顯示語言欄或者將任意其他輸入法作為當前輸入法來解決這個問題。
例四:我的豪傑超級解霸自從上網後就不能播放了,每次都提示「0x060692f6」(每次變化)指令引用的「0xff000011」內存不能為「read」,終止程序請按確定。 解決方法:試試重裝豪傑超級解霸,如果重裝後還會,到官方網站下載相應版本的補丁試試。還不行,只好換就用別的播放器試試了。
例五:雙擊一個游戲的快捷方式,「0x77f5cd0」指令引用「0xffffffff」內 存,該內存不能為「read」 ,並且提示Client.dat程序錯誤。 解決方法:重裝顯卡的最新驅動程序,然後下載並且安裝DirectX9.0。
例六:一個朋友發信息過來,我的電腦便出現了錯誤信息:「0x772b548f」指令引用的「0x00303033」內存,該內存不能為「written」,然後QQ自動下線,而再打開QQ,發現了他發過來的十幾條的信息。 解決方法:這是對方利用QQ的BUG,發送特殊的代碼,做QQ出錯,只要打上補丁或升級到最新版本,就沒事了。
原因 解決方法
1 內存條壞了 更換內存條
2 雙內存不兼容 使用同品牌的內存或只要一條內存
3 內存質量問題 更換內存條
4 散熱問題 加強機箱內部的散熱
5 內存和主板沒插好或其他硬體不兼容 重插內存或換個插槽
6 硬體有問題 更換硬碟
7 驅動問題 重裝驅動,如果是新系統,應先安裝主板驅動
8 軟體損壞 重裝軟體
9 軟體有BUG 打補丁或更新到最新版本
10 軟體和系統不兼容 給軟體打上補丁或是試試系統的兼容模式
11 軟體和軟體之間有沖突 如果最近安裝了什麼新軟體,卸載了試試
12 軟體要使用其他相關的軟體有問題 重裝相關軟體,比如播放某一格式的文件時出錯,可能是這個文件的解碼器有問題
13 病毒問題 殺毒
14 殺毒軟體與系統或軟體相沖突 由於殺毒軟體是進入底層監控系統的,可能與一些軟體相沖突,卸載試試
15 系統本身有問題 有時候操作系統本身也會有BUG,要注意安裝官方發行的更新程序,象SP的補丁,最好打上.如果還不行,重裝系統,或更換其他版本的系統。
〔又一說〕
在控制面板的添加/刪除程序中看看你是否安裝了微軟NET.Framework,如果已經安裝了,可以考慮卸載它,當然如果你以後在其它程序需要NET.Framework時候,可以再重新安裝。
另外,如果你用的是ATI顯卡並且你用的是SP2的補丁,據我所知,一些ATI的顯卡驅動需要在NET.Framework正常工作的環境下。這種情況你可以找一款不需要NET.Framework支持的ATI顯卡驅動。
如果以上兩種方法並不能完全解決問題,你試著用一下「IE修復」軟體,並可以查查是否有病毒之類的。
〔微軟NET.Framework升級到1.1版應該沒問題了〕
〔還有一說〕
Tag: 「內存只能為只讀」的解決
方法一:
微軟新聞組的朋友指點:開始--運行:regsvr32 jscript.dll
開始--運行:regsvr32 vbscript.dll
不過沒解決---但提供了路子-----一次運行注冊所有dll
搜索查找到方法如下:
運行 輸入cmd 回車在命令提示符下輸入
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
這個命令老兄你慢慢輸 輸入正確的話會看到飛快地滾屏 否則……否則失敗就是沒這效果
回車後慢慢等(需要點時間1-2分鍾) 都運行完再打開看
方法二:
這是個典型問題~~~~~引起這個問題的原因很多
一般來講就是給系統打上補丁和更換內存、給內存換個插槽這3種方法來解決
[系統補丁只要到Microsoft Update網站在線更新就可以了]
〔我個人的最後解決和看法〕
我今天嘗試了多種辦法,最後我發現問題出在微軟的NET.Framework上面。
我升級了這個軟體,並打齊了補丁,短暫平安後,又出現「內存不能為read」的情況。後來我受上面文章的啟發,卸載了微軟的NET.Framework1.0和1.1,好像世界太平了。
其實這裡面有我的女朋友的功勞,她用的瀏覽器和我一樣,但從未發生過這種情況,我查看了他的「控制面板-管理工具」裡面沒有微軟的NET.Framework,於是恍然大悟——原來是它!
看來微軟的軟體是夠垃圾的!
❾ 請問一個代碼是如何最終被計算機執行的呢
目前計算機還是二進制的,以電路的通斷,電壓的高低,電荷的多寡來表示1或者0。這是硬體基礎。
計算機執行0和1就像簡單的路徑選擇,到一個路口,綠燈是1,就繼續走,紅燈是0,就停下。
進而就是邏輯電路,比如與或非門,簡單說就是二進制運算的,比如 來倆1結果就是1否則是0這就是與運算;來倆0結果就是0否則是1是或運算;來0結果是1來1結果是0就是非運算。與或非門是邏輯電路的基礎,就像蓋房子的轉頭一樣。上面所有的東西都是基於這個來弄的。
CPU是邏輯電路、演算法程序以及少量存儲的總成,簡單說,你要讓CPU幹活,你得告訴它:我有活了,怎麼干放到演算法程序部分,原材料放到存儲部分。而邏輯電路是CPU工程師設計好的了。 然後CPU就根據你的演算法程序,把原材料通過邏輯電路變成成品,就是輸出結果了。輸出結果還是在CPU里的,還得你自己取走。
你寫的代碼就是演算法程序和部分原材料的集合。代碼經過編譯轉化成適合特定機器和CPU體系的目標代碼,目標代碼執行時就是前面4所說的過程。 為什麼說是部分原材料呢?因為可能會有些執行過程中另外加入的輸入。
❿ 計算機程序是怎麼運行的
計算機程序是指導計算機執行某個功能或功能組合的一套指令。要使指令得到執行,計算機必須執行程序,也就是說,計算機要讀取程序,然後按准確的順序實施程序中編碼的步驟,直至程序結束。一個程序可多次執行,而且每次用戶輸給計算機的選項和數據不同,就有可能得到不同的結果。
程序可分為兩大類:應用程序和操作系統。應用程序直接為用戶執行某項功能,如字處理或玩游戲。操作系統管理計算機和與之相連的各種資源和設備,如隨機訪問存儲器、硬碟驅動器、監視器、鍵盤、列印機和數據機,以便使其他程序可以使用它們。操作系統的例子包括:DOS、Windows 95、OS/2和UNIX。