導航:首頁 > 知識產權 > 一個進程獲得三個主存塊的使用權

一個進程獲得三個主存塊的使用權

發布時間:2021-08-14 09:48:10

1. 進程的內容

一個計算機系統進程包括(或者說「擁有」)下列數據:
那個程序的可運行機器碼的一個在存儲器的映像。 分配到的存儲器(通常包括虛擬內存的一個區域)。存儲器的內容包括可運行代碼、特定於進程的數據(輸入、輸出)、調用堆棧、堆棧(用於保存運行時運數中途產生的數據)。 分配給該進程的資源的操作系統描述符,諸如文件描述符(Unix術語)或文件句柄(Windows)、數據源和數據終端。 安全特性,諸如進程擁有者和進程的許可權集(可以容許的操作)。 處理器狀態(內文),諸如寄存器內容、物理存儲器定址等。當進程正在運行時,狀態通常儲存在寄存器,其他情況在存儲器。 進行進程切換就是從正在運行的進程中收回處理器,然後再使待運行進程來佔用處理器。
這里所說的從某個進程收回處理器,實質上就是把進程存放在處理器的寄存器中的中間數據找個地方存起來,從而把處理器的寄存器騰出來讓其他進程使用。那麼被中止運行進程的中間數據存在何處好呢?當然這個地方應該是進程的私有堆棧。
讓進程來佔用處理器,實質上是把某個進程存放在私有堆棧中寄存器的數據(前一次本進程被中止時的中間數據)再恢復到處理器的寄存器中去,並把待運行進程的斷點送入處理器的程序指針PC,於是待運行進程就開始被處理器運行了,也就是這個進程已經佔有處理器的使用權了。
這就像多個同學要分時使用同一張課桌一樣,所謂要收回正在使用課桌同學的課桌使用權,實質上就是讓他把屬於他的東西拿走;而賦予某個同學課桌使用權,只不過就是讓他把他的東西放到課桌上罷了。
在切換時,一個進程存儲在處理器各寄存器中的中間數據叫做進程的上下文,所以進程的 切換實質上就是被中止運行進程與待運行進程上下文的切換。在進程未佔用處理器時,進程 的上下文是存儲在進程的私有堆棧中的。 進程執行時的間斷性,決定了進程可能具有多種狀態。事實上,運行中的進程可能具有以下三種基本狀態。
1)就緒狀態(Ready):
進程已獲得除處理器外的所需資源,等待分配處理器資源;只要分配了處理器進程就可執行。就緒進程可以按多個優先順序來劃分隊列。例如,當一個進程由於時間片用完而進入就緒狀態時,排入低優先順序隊列;當進程由I/O操作完成而進入就緒狀態時,排入高優先順序隊列。
2)運行狀態(Running):
進程佔用處理器資源;處於此狀態的進程的數目小於等於處理器的數目。在沒有其他進程可以執行時(如所有進程都在阻塞狀態),通常會自動執行系統的空閑進程。
3)阻塞狀態(Blocked):
由於進程等待某種條件(如I/O操作或進程同步),在條件滿足之前無法繼續執行。該事件發生前即使把處理器資源分配給該進程,也無法運行。 程序
程序是指令和數據的有序集合,其本身沒有任何運行的含義,是一個靜態的概念。而進程是程序在處理機上的一次執行過程,它是一個動態的概念。
程序可以作為一種軟體資料長期存在,而進程是有一定生命期的。程序是永久的,進程是暫時的。
進程更能真實地描述並發,而程序不能;
進程是由進程式控制制塊、程序段、數據段三部分組成;
進程具有創建其他進程的功能,而程序沒有。
同一程序同時運行於若干個數據集合上,它將屬於若干個不同的進程,也就是說同一程序可以對應多個進程。
在傳統的操作系統中,程序並不能獨立運行,作為資源分配和獨立運行的基本單元都是進程。
線程
通常在一個進程中可以包含若干個線程,它們可以利用進程所擁有的資源,在引入線程的操作系統中,通常都是把進程作為分配資源的基本單位,而把線程作為獨立運行和獨立調度的基本單位,由於線程比進程更小,基本上不擁有系統資源,故對它的調度所付出的開銷就會小得多,能更高效的提高系統內多個程序間並發執行的程度。
當下推出的通用操作系統都引入了線程,以便進一步提高系統的並發性,並把它視為現代操作系統的一個重要指標。 進程式控制制是進程管理中最基本的功能。它用於創建一個新進程,終止一個已完成的進程,或者去終止一個因出現某事件而使其無法運行下去的進程,還可負責進程運行中的狀態轉換。
創建進程
1.引起創建進程的事件
在多道程序環境中,只有(作為)進程(時)才能在系統中運行。因此,為使程序能運行,就必須為它創建進程。導致一個進程去創建另一個進程的典型事件,可以有以下四類:
1) 用戶登錄
在分時系統中,用戶在終端鍵入登錄命令後,如果是合法用戶,系統將為該終端建立一個進程,並把它插入到就緒隊列中。
2)作業調度
在批處理系統中,當作業調度程序按照一定的演算法調度到某作業時,便將該作業裝入到內存,為它分配必要的資源,並立即為它創建進程,再插入到就緒隊列中。
3) 提供服務
當運行中的用戶程序提出某種請求後,系統將專門創建一個進程來提供用戶所需要的服務,例如,用戶程序要求進行文件列印,操作系統將為它創建一個列印進程,這樣,不僅可以使列印進程與該用戶進程並發執行,而且還便於計算出為完成列印任務所花費的時間。
4) 應用請求
在上述三種情況中,都是由系統內核為它創建一個新進程,而這一類事件則是基於應用進程的需求,由它創建一個新的進程,以便使新進程以並發的運行方式完成特定任務。
2.進程的創建過程
一旦操作系統發現了要求創建新進程的事件後,便調用進程創建原語create()按下述步驟創建一個新進程。
1) 申請空白PCB。為新進程申請獲得唯一的數字標識符,並從PCB集合中索取一個空白PCB。
2) 為新進程分配資源。為新進程的程序和數據以及用戶棧分配必要的內存空間。顯然,此時操作系統必須知道新進程所需要的內存大小。
3) 初始化進程式控制制塊。PCB的初始化包括:
①初始化標識信息,將系統分配的標識符和父進程標識符,填入新的PCB中。
②初始化處理機狀態信息,使程序計數器指向程序的入口地址,使棧指針指向棧頂。
③初始化處理機控制信息,將進程的狀態設置為就緒狀態或靜止就緒狀態,對於優先順序,通常是將它設置為最低優先順序,除非用戶以顯式的方式提出高優先順序要求。
4) 將新進程插入就緒隊列,如果進程就緒隊列能夠接納新進程,便將新進程插入到就緒隊列中。
進程終止
1.引起進程終止的事件
1)正常結束
在任何計算機系統中,都應該有一個表示進程已經運行完成的指示。例如,在批處理系統中,通常在程序的最後安排一條Hold指令或終止的系統調用。當程序運行到Hold指令時,將產生一個中斷,去通知OS本進程已經完成。
2)異常結束
在進程運行期間,由於出現某些錯誤和故障而迫使進程終止。這類異常事件很多,常見的有:越界錯誤,保護錯,非法指令,特權指令錯,運行超時,等待超時,算術運算錯,I/O故障。
3)外界干預
外界干預並非指在本進程運行中出現了異常事件,而是指進程應外界的請求而終止運行。這些干預有:操作員或操作系統干預,父進程請求,父進程終止。
2. 進程的終止過程
如果系統發生了上述要求終止進程的某事件後,OS便調用進程終止原語,按下述過程去終止指定的進程。
1)根據被終止進程的標識符,從PCB集合中檢索出該進程的PCB,從中讀出該進程狀態。
2)若被終止進程正處於執行狀態,應立即終止該進程的執行,並置調度標志為真。用於指示該進程被終止後應重新進行調度。
3)若該進程還有子孫進程,還應將其所有子孫進程予以終止,以防他們成為不可控的進程。
4)將被終止的進程所擁有的全部資源,或者歸還給其父進程,或者歸還給系統。
5)將被終止進程(它的PCB)從所在隊列(或鏈表)中移出,等待其它程序來搜集信息。
阻塞喚醒
1.引起進程阻塞和喚醒的事件
1)請求系統服務
當正在執行的進程請求操作系統提供服務時,由於某種原因,操作系統並不立即滿足該進程的要求時,該進程只能轉變為阻塞狀態來等待,一旦要求得到滿足後,進程被喚醒。
2)啟動某種操作
當進程啟動某種操作後,如果該進程必須在該操作完成之後才能繼續執行,則必須先使該進程阻塞,以等待該操作完成,該操作完成後,將該進程喚醒。
3)新數據尚未到達
對於相互合作的進程,如果其中一個進程需要先獲得另一(合作)進程提供的數據才能運行以對數據進行處理,則是要其所需數據尚未到達,該進程只有(等待)阻塞,等到數據到達後,該進程被喚醒。
4)無新工作可做
系統往往設置一些具有某特定功能的系統進程,每當這種進程完成任務後,便把自己阻塞起來以等待新任務到來,新任務到達後,該進程被喚醒。
2.進程阻塞過程
正在執行的進程,當發現上述某事件後,由於無法繼續執行,於是進程便通過調用阻塞原語block()把自己阻塞。可見,進程的阻塞是進程自身的一種主動行為。進入block過程後,由於此時該進程還處於執行狀態,所以應先立即停止執行,把進程式控制制塊中的現行狀態由執行改為阻塞,並將PCB插入阻塞隊列。如果系統中設置了因不同事件而阻塞的多個阻塞隊列,則應將本進程插入到具有相同事件的阻塞(等待)隊列。最後,轉調度程序進行重新調度,將處理機分配給另一就緒進程,並進行切換,亦即,保留被阻塞進程的處理機狀態(在PCB中),再按新進程的PCB中的處理機狀態設置CPU環境。
3. 進程喚醒過程
當被阻塞的進程所期待的事件出現時,如I/O完成或者其所期待的數據已經到達,則由有關進程(比如,用完並釋放了該I/O設備的進程)調用喚醒原語wakeup(),將等待該事件的進程喚醒。喚醒原語執行的過程是:首先把被阻塞的進程從等待該事件的阻塞隊列中移出,將其PCB中的現行狀態由阻塞改為就緒,然後再將該PCB插入到就緒隊列中。 進程的調度演算法包括:
實時系統中:FIFO(First Input First Output,先進先出演算法),SJF(Shortest Job First,最短作業優先演算法),SRTF(Shortest Remaining Time First,最短剩餘時間優先演算法)。
互動式系統中:RR(Round Robin,時間片輪轉演算法),HPF(Highest Priority First,最高優先順序演算法),多級隊列,最短進程優先,保證調度,彩票調度,公平分享調度。 進程是由進程式控制制塊、程序段、數據段三部分組成。一個進程可以包含若干線程(Thread),線程可以幫助應用程序同時做幾件事(比如一個線程向磁碟寫入文件,另一個則接收用戶的按鍵操作並及時做出反應,互相不幹擾),在程序被運行後,系統首先要做的就是為該程序進程建立一個默認線程,然後程序可以根據需要自行添加或刪除相關的線程。是可並發執行的程序。在一個數據集合上的運行過程,是系統進行資源分配和調度的一個獨立單位,也是稱活動、路徑或任務,它有兩方面性質:活動性、並發性。進程可以劃分為運行、阻塞、就緒三種狀態,並隨一定條件而相互轉化:就緒--運行,運行--阻塞,阻塞--就緒。
進程為應用程序的運行實例,是應用程序的一次動態執行。看似高深,我們可以簡單地理解為:它是操作系統當前運行的執行程序。在系統當前運行的執行程序里包括:系統管理計算機個體和完成各種操作所必需的程序;用戶開啟、執行的額外程序,當然也包括用戶不知道,而自動運行的非法程序(它們就有可能是病毒程序)。

2. 在C++中,用new申請了指針指向某內存卻不用delete銷毀,直到整個應用程序結束,會發生什麼後果試詳述原

這個要分情況討論:
1。在一般情況下,若你寫的程序是應用程序,那麼如果不用delete銷毀,操作系統會幫你銷毀……因為每一個程序都有一個4GB虛擬內存,程序關閉後會自動解除這個程序所有用過的對象…
2。在內核情況下,也就是說你的程序是驅動程序,調用的是native API的話,不delete卻關閉了程序,那麼這塊內存必須等到重新啟動後才能釋放,系統是不會自動釋放它的…
其實一般你只要知道1。就行了,如果想知道更多的內容,就先看一下IntelCPU的保護模式,弄清楚操作系統多線程的原理,然後再參考一些驅動開發的書籍,或者rootkit獲取ring0級許可權程序的原代碼(比如CIH)等……

3. 急求操作系統試題的答案

《操作系統》練習題及參考答案一、單項選擇題(每小題1分,共15分)

1.操作系統是一種()

A.系統軟體B.系統硬體C.應用軟體D.支援軟體

2.MS—DOS的存貯管理採用了()

A.段式存貯管理B.段頁式存貯管理C.單用戶連續存貯管理D.固定式分區存貯管理

3.用戶程序在目態下使用特權指令將引起的中斷是屬於()

A.硬體故障中斷B.程序中斷C.外部中斷D.訪管中斷

4.MS—DOS中用於軟盤整盤復制的命令是()

A.COMP B.DISKCOPY C.SYS D.BACKUP

5.位示圖方法可用於()

A.盤空間的管理B.盤的驅動調度C.文件目錄的查找D.頁式虛擬存貯管理中的頁面調度

6.下列演算法中用於磁碟移臂調度的是()

A.時間片輪轉法B.LRU演算法C.最短尋找時間優先演算法D.優先順序高者優先演算法

7.在以下存貯管理方案中,不適用於多道程序設計系統的是()

A.單用戶連續分配B.固定式分區分配C.可變式分區分配D.頁式存貯管理

8.已知,作業的周轉時間=作業完成時間-作業的到達時間。現有三個同時到達的作業J1,J2和J3,它們的執行時間分別是T1,T2和T3,且T1

A.T1+T2+T3 B.(T1+T2+T3)C.T1+T2+T3 D. T1+T2+T3

9.任何兩個並發進程之間()

A.一定存在互斥關系B.一定存在同步關系C.一定彼此獨立無關D.可能存在同步或互斥關系

10.進程從運行狀態進入就緒狀態的原因可能是()

A.被選中佔有處理機B.等待某一事件C.等待的事件已發生D.時間片用完

11.用磁帶作為文件存貯介質時,文件只能組織成()

A.順序文件B.鏈接文件C.索引文件D.目錄文件

12.一作業8:00到達系統,估計運行時間為1小時,若10:00開始執行該作業,其響應比是()

A.2 B.1 C.3 D.0.5

13.多道程序設計是指()

A.在實時系統中並發運行多個程序B.在分布系統中同一時刻運行多個程序C.在一台處理機上同一時刻運行多個程序D.在一台處理機上並發運行多個程序

14.文件系統採用多級目錄結構後,對於不同用戶的文件,其文件名()

A.應該相同B.應該不同C.可以相同,也可以不同D.受系統約束

15.在可變式分區分配方案中,某一作業完成後,系統收回其主存空間,並與相鄰空閑區合並,為此需修改空閑區表,造成空閑區數減1的情況是()

A.無上鄰空閑區,也無下鄰空閑區B.有上鄰空閑區,但無下鄰空閑區C.有下鄰空閑區,但無上鄰空閑區D.有上鄰空閑區,也有下鄰空閑區

二、雙項選擇題(每小題2分,共16分)

1.能影響中斷響應次序的技術是()和()。

A.時間片B.中斷C.中斷優先順序D.中斷屏蔽E.特權指令

2.文件的二級目錄結構由()和()組成。

A.根目錄B.子目錄C.主文件目錄D.用戶文件目錄E.當前目錄

3.驅動調度演算法中()和()演算法可能會隨時改變移動臂的運動方向。

A.電梯調度B.先來先服務C.掃描D.單向掃描E.最短尋找時間優先

4.有關設備管理概念的下列敘述中,()和()是不正確的。

A.通道是處理輸入、輸出的軟體B.所有外圍設備的啟動工作都由系統統一來做C.來自通道的I/O中斷事件由設備管理負責處理D.編制好的通道程序是存放在主存貯器中的E.由用戶給出的設備編號是設備的絕對號

5.一進程剛獲得三個主存塊的使用權,若該進程訪問頁面的次序是{1321215123}.當採用先進先出調度演算法時,發生缺頁次數是()次,而採用LRU演算法時,缺頁數是()次。

A.1 B.3 C.4 D.5 E.6

6.作業與進程的主要區別是()和()。

A.前者是由用戶提交,後者是由系統自動生成B.兩者執行不同的程序段C.前者以用戶任務為單位,後者是操作系統控制的單位D.前者是批處理的,後者是分時的E.後者可並發執行,前者則不行

7.下述MS—DOS的文件中()和()是有關設備管理的程序。

A.BOOT B.COMMAND.COM C.IBMBIO.COM D.IBMDOS.COM E.ROMBIOS

8.MS—DOS的文件類型為()和()的文件是不可執行的。

A……OBJ B……EXE C……COM D……BAK E……BAT

三、填空題(每空1分,共15分)

1.用戶程序使用_____________請求操作系統服務。

2.存貯管理應實現的功能是:主存空間的分配與保護,_________,主存空間的共享和___________.

3.分頁式存貯管理中,頁表是用來指出作業的____________與_____________的對應關系。

4.每個索引文件都至少有一張索引表,其中的每一個表項應包括能標識該記錄的_______________和該記錄的_____________.

5.分時系統必須為用戶提供__________以實現_________控制方式。

6.斯普林系統中,作業執行時,從磁碟上的__________中讀取信息,並把作業的執行結果暫時存放在磁碟上的____________中。

7.並發進程中涉及到___________的程序段稱為臨界區,兩個進程同時進入相關的臨界區會造成的錯誤。

8.MS—DOS中有三個文件:DOSIP.EXE,DOSIP.DAT和DOSZP.COM,____________若使用系統提供的替代符『*』和『?』,則這三個文件可統一表示為___________.

9.拼音碼是一種漢字__________碼。

四、改錯題(每小題2分,共10分)

1.以批處理方式和交互方式控製作業運行都需要注冊(LOGON)。

2.分時系統中,時間片越小越好。

3.銀行家演算法是防止死鎖發生的方法之一。

4.若無進程處於運行狀態,則就緒隊列和等待隊列均為空。

5.作業控制語言是供用戶編寫程序以實現某項計算任務。

五、簡答題(每小題4分,共20分)

1.程序狀態字包含哪些主要內容?

2.什麼是記錄的成組和分解?

3.進程間同步和互斥的含義是什麼?

4.什麼是輸入輸出操作?什麼是通道?

5.為實現分頁式虛擬存貯,頁表中至少應含有哪些內容?

六、綜合題(每小題8分,共24分)

1.假定在某移動臂磁碟上,剛剛處理了訪問75號柱面的請求,目前正在80號柱面讀信息,並且有下述請求序列等待訪問磁碟:

試用:(1)電梯調度演算法

(2)最短尋找時間優先演算法

分別列出實際處理上述請求的次序。

2.有三個進程P1,P2和P3並發工作。進程P1需用資源S3和S1;進程P2需用資源S1和S2;進程P3需用資源S2和S3.回答:

(1)若對資源分配不加限制,會發生什麼情況?為什麼?

(2)為保證進程正確工作,應採用怎樣的資源分配策略?為什麼?

3.某車站售票廳,任何時刻最多可容納20名購票者進入,當售票廳中少於20名購票者時,則廳外的購票者可立即進入,否則需在外面等待。若把一個購票者看作一個進程,請回答下列問題:

(1)用PV操作管理這些並發進程時,應怎樣定義信號量,寫出信號量的初值以及信號量各種取值的含義。

(2)根據所定義的信號量,把應執行的PV操作填入下述方框中,以保證進程能夠正確地並發執行。

COBEGIN PROCESS PI(I=1,2,……)

begin;

進入售票廳;

購票;

退出;

end;

COEND

(3)若欲購票者最多為n個人,寫出信號量可能的變化范圍(最大值和最小值)。

參考答案一、單項選擇題(每題1分,共15分)

1.(1)2.(3)3.(2)4.(2)5.(1)6.(3)7.(1)8.(3)

9.(4)10.(4)11.(1)

12.(3)13.(4)14.(3)15.(4)

二、雙項選擇題(每題2分,共16分)

1.(3)(4)2.(3)(4)3.(2)(5)4.(1)(5)5.(5)(4)

次序不可交換6.(1)(3)7.(3)(5)8.(1)(4)

三、填空題(每空格1分,共15分)

1.訪管指令(或系統調用)

2.主存空間的重定位,主存的擴充

3.邏輯頁號,主存塊號(可交換)

4.關鍵字(或記錄號),存放地址(或存放位置)

5.操作控制命令,交互(或聯機)

6.輸入#,輸出#

7.共享變數,與時間有關

8.DOS?P.*(或DOS?P.???)

9.輸入

四、改錯題(每題2分,共10分,若只作簡單否定,不能給分)

1.批處理方式是按用戶使用作業控制語言書寫的。

作業說明書控製作業運行,不需注冊。

或交互方式控製作業運行需要注冊。

2.當時間片過小時,進程調度時間所佔比重加大。

若僅回答:

時間片越小,響應時間可能加大,給1分。

3.銀行家演算法是避免死鎖的方法之一。

4.就緒隊列為空,等待隊列可能不空。

5.作業控制語言是供書寫作業說明書的,以控製作業的執行(不同於編程語言)。

五、簡答題(每題4分,共20分)

1.(1)程序基本狀態(2分)

(2)中斷碼(1分)

(3)中斷屏蔽位(1分)

2.(1)把若干邏輯記錄合並成一組,存入一個物理塊的工作稱為記錄的成組。(1分)

(2)從一組中把一個邏輯記錄分離出來的工作稱為記錄的分解。(2分)

3.同步:並發進程之間存在的相互制約和相互依賴的關系。(2分)

互斥:若干進程共享一資源時,任何時刻只允許一個進程使用。(2分)

4.主存與外圍設備之間的信息傳送操作稱為輸入輸出操作。(2分)

通道可稱為輸入輸出處理機。(2分)

5.頁號(1分)

標志(1分)

主存塊號(1分)

磁碟上的位置(1分)

六、綜合題(每題8分,共24分)

1.(1)電梯調度演算法的處理次序為:

5 8 1 4 3 6 2 7(得4分)

若寫出5 8(得1分)

若寫出5 8 1 4 3(得2分)

(2)最短尋找時間優先演算法的處理次序為:

5 8 6 2 7 1 4 3(得4分)

若寫出5 8(得1分)

若寫出5 8 6 2 7(得2分)

亦即:前2個對(得1分)

前5個對(得2分)

2.(1)可能會發生死鎖(2分)

例如:進程P1,P2和P3分別獲得資源S3,S1和S2後再繼續申請資源時都要等待(2分),這是循環等待。

(或進程在等待新源時均不釋放已佔資源)

(2)可有幾種答案:

A.採用靜態分配(2分)

由於執行前已獲得所需的全部資源,故不會出現佔有資源又等待別的資源的現象(或不會出現循環等待資源現象)。(2分)

或B.採用按序分配(2分)

不會出現循環等待資源現象。(2分)

或C.採用銀行家演算法(2分)

因為在分配時,保證了系統處於安全狀態。(2分)

3.(1)定義一信號量S,初始值為20.(1分)

意義:

S>0 S的值表示可繼續進入售票廳的人數(1分)

S=0表示售票廳中已有20名顧客(購票者)(1分)

4. 操作系統提 誰能幫幫我 急急急

選擇1.A 2.B 3.D 4.C 5.A
填空1錯2對3錯4錯5錯6錯7錯8錯9錯10對
問答1.每一個進程都有一個也只有一個進程式控制制塊,是操作系統用於記錄和刻畫進程狀態及有關信息的數據結構。進程有就緒、運行和阻塞(有的書籍上是「等待」)三種基本狀態。就緒-運行:進程通過處理機調度,獲得處理機使用權,就進入了運行狀態;運行-阻塞:當進程出現等待事件(例如需要使用I/O設備,等待開啟I/O);阻塞-就緒:等待事件發生;運行-就緒:時間片輪轉演算法中時間片到等事件導致。
2.P(s);當信號量s大於0時,把信號量s減去l;否則調用V(s)的進程等待直到信號量s大於0時。
V(s):把信號量s加1。
3.DMA是Direct Memory Access的縮寫,即直接存儲器存取。DMA方式中,主存和I/O設備之間有一條數據通路,他們需要傳輸數據時,CPU會發出傳送一段數據塊的命令,之後的實際操作由DMA直接執行完成,不需要CPU干預。

5. C++ 運算符重載 導致內存膨脹到問題

編譯器採取的一種優化措施。

首先要清楚的是:new運算符的功能是程序向操作系統申請內存分配,由操作系統從可用的內存中劃分出一塊給程序中的某一對象專用。在此期間,程序中的其它
對象或者其它程序就沒有權力再使用這塊內存了。delete的作用實際上是解除對象對這塊內存的專用權,把它重新歸還給系統,系統可根據情況重新把它劃歸
給其它new申請使用。向操作系統申請內存分配和釋放都是需要時間的,有時甚至花費較長的時間才能找到一塊合適的內存供使用。

為了降低動態內存分配和釋放帶來的時間,現在的編譯器在實現上通常是這么做的:程序中被delete的內存空間只是解除了對象對此內存的專用權,然而並不
馬上交還給系統,其使用權仍然屬於程序本身。這樣,在程序中再有new的時候,如果能在這些delete的內存中找到合適的,程序就不需要向操作系統申請
了,可以直接使用原來已經申請過的內存(即那些delete過後尚未被使用的內存),從而可節省時間,提高效率。

同樣可解釋你的for循環,A operator+(A a,int b);
每一次都會生成兩個臨時變數,一個是參數的,一個是返回值的,由於上述類似的編譯器優化策略,系統不會立即回收這些內存,因此導致程序內存越來越大

operator+一般使用如下方式,以保持和內置操作一致性,(返回值不用引用)

A operator+(const A &a,int b);

6. python頁面置換演算法問題

題目描述:一進程剛獲得3個主存塊的使用權,若該進程訪問頁面的次序是1,2,3,4,1,2,5,1,2,3,4,5。當採用LRU演算法時發生的缺頁次數是多少?

LRU是最近最少使用頁面置換演算法,該演算法用一個開放的棧來保存當前正在使用的各個頁面號。當有一個新的頁面要被訪問時,就將該頁面號加入棧頂(如果分配的內存不夠,就將棧底頁面號刪除,其它頁面號前移以給新頁面騰出位置)。當要訪問的頁面已經在棧中時,就只要將這個頁面移到棧頂,其它頁面維持順序即可。

缺頁中斷就是要訪問的頁不在主存,也就是本題中的開放的棧中沒有保存要訪問的頁面號的情況。

*列表切片模擬LRU演算法

[python]view plain

7. 在什麼情況下,當一個進程發生變遷3 時能立即引起另一個進程發生變遷1

從表面看,進程切換的功能是很簡單的。在某一時刻,一個正在運行的進程被中斷,操作系統指定另一個進程為運行態,並把控制權交給這個進程。但是這會引發若干問題。首先,什麼事件觸發進程的切換?另一個問題是必須認識到模式切換與進程切換之間的區別。最後,為實現進程切換,操作系統必須對它控制的各種數據結構做些什麼?

何時切換進程

進程切換可以在操作系統從當前正在運行的進程中獲得控制權的任何時刻發生

首先考慮系統中斷。實際上,大多數操作系統區分兩種類型的系統中斷。一種稱為中斷,另一種稱為陷阱。前者與當前正在運行的進程無關的某種類型的外部事件相關,如完成一次I/O 操作;後者與當前正在運行的進程所產生的錯誤或異常條件相關,如非法的文件訪問。對於普通中斷,控制首先轉移給中斷處理器,它做一些基本的輔助工作,然後轉到與已經發生的特定類型的中斷相關的操作系統常式。參見以下例子:

時鍾中斷:操作系統確定當前正在運行的進程的執行時間是否已經超過了最大允許時間段(時間片,即進程在被中斷前可以執行的最大時間段),如果超過了,進程必須切換到就緒態,調入另一個進程。

I/O 中斷:操作系統確定是否發生了I/O 活動。如果I/O 活動是一個或多個進程正在等待的事件,操作系統就把所有相應的阻塞態進程轉換到就緒態(阻塞/掛起態進程轉換到就緒/掛起態),操作系統必須決定是繼續執行當前處於運行態的進程,還是讓具有高優先順序的就緒態進程搶占這個進程。

內存失效:處理器訪問一個虛擬內存地址,且此地址單元不在內存中時,操作系統必須從外存中把包含這個引用的內存塊(頁或段)調入內存中。在發出調入內存塊的I/O 請求之後,操作系統可能會執行一個進程切換,以恢復另一個進程的執行,發生內存失效的進程被置為阻塞態,當想要的塊調入內存中時,該進程被置為就緒態。

對於陷阱,操作系統確定錯誤或異常條件是否是致命的。如果是,當前正在運行的進程被轉換到退出態,並發生進程切換;如果不是,操作系統的動作取決於錯誤的種類和操作系統的設計,其行為可以是試圖恢復或通知用戶,操作系統可能會進行一次進程切換或者繼續執行當前正在運行的進程。

最後,操作系統可能被來自正在執行的程序的系統調用激活。例如,一個用戶進程正在運行,並且正在執行一條請求I/O 操作的指令,如打開文件,這個調用導致轉移到作為操作系統代碼一部分的一個常式上執行。通常,使用系統調用會導致把用戶進程置為阻塞態。

8. 對於問題小孩這門課所學所識有什麼啟發

、單項選擇題(下列每小題列出的四個選項中只有一個是最符合題意的,請將其代碼填在括弧內。錯選、多選或未選均不得分。本大題共30小題,每小題1分,共30分)

1.教育目的是培養人的質量規格標准,教育目的要回答的問題是( )

A. 教育服務的方向B. 怎樣培養人

C. 實現教育目的的途徑D. 培養怎樣的人

2.在教育工作中搞「一刀切」,讓孩子同大人一樣去聽報告、搞思想政治活動。這就違背了學生身心發展的( )規律。

A. 順序性B. 階段性

C. 差異性D. 不平衡性

3.教師職業專門化始於( )

A. 師范學校的出現B. 獨立的教師行業的出現

C. 教師資格制度的形成D. 教師工作被視為專門的職業

4.「教育的目的就在於使人成為他自己、變成他自己。」這句話表明( )

A. 學生是能動的人B. 學生是發展中的人

C. 學生是自由的人D. 學生是個性化的人

5.素質教育的理論依據是( )

A. 以人為本B. 全面發展教育

C. 創新教育D. 社會實踐教育

6.小學德育的基本途徑是( )

A. 少先隊活動B. 課外、校外活動

C. 教學D. 社會實踐活動

7.德育模式是在德育實施過程中德育理念、德育內容、德育手段、德育方法、德育途徑等的¥組合方式。當代德育理論中流行最為廣泛、占據主導地位的德育模式是( )

A. 價值澄清模式B. 認知模式

C. 社會模仿模式D. 體諒模式

8.「教師能做的,教務處不做;學生能做的,教師不做」體現了班級管理的( )原則

A. 主體性B. 集體性

C. 獨立性D. 民主性

9.下列關於非制度化教育的表述,不正確的是( )

A. 非制度化教育是對制度化教育的全盤否定

B. 庫姆斯、伊里奇是非制度化教育思潮的代表人物

C. 提出構建學習化社會的理想正是非制度化教育的重要體現

D. 非制度化教育所推崇的理想是「教育不應再限於學校的圍牆之內」

10.教育現代化的核心是( )

A. 教育觀念現代化B. 教育內容現代化

C. 教育管理現代化D. 教師素質現代化

11.不屬於學生主觀能動性的表現形式的是( )

A. 自覺性B. 獨立性

C. 創造性D. 可塑性

12.做好班主任工作的前提和基礎是( )

A. 組織和培養班集體B. 全面了解學生

C. 培養優良班風D. 做好後進生的轉化工作

13.推動教育學發展的內在動力是( )

A. 教育規律B. 教育價值

C. 教育現象D. 教育問題

14.我國頒布的第一個現代學制是( )

A. 壬寅學制B. 癸卯學制

C. 壬戌學制D. 壬子癸丑學制

15.教師是教育工作的組織者和領導者,在教育過程中起( )作用。

A. 橋梁B. 關鍵

C. 主導D. 決定

16.教育內容是教育者與受教育者共同認識的( )

A. 主體B. 客體

C. 教的主體D. 學的主體

17.學生的向師性和模仿性心理特徵決定了教師勞動具有( )

A. 示範性B. 復雜性

C. 主體性D. 長期性

18.青年教師李某把大量時間花在維持同事、領導的關繫上,這表明李某的成長階段正處在( )

A. 關注學生B. 關注情境

C. 關注自我D. 關注生存

19.為研究近年來我國小學教育的發展狀況,張老師需要收集有關數據。最可靠的信息來源是( )

A. 教育論文B. 教育年鑒

C. 教育辭書D. 教育著作

20.有一次上課,亮亮因認真聽講受到了老師的表揚,自此亮亮逐步養成了上課專心聽講的習慣。這一現象屬於( )

A. 經典條件反射B. 聯結反應

C. 操作條件反射D. 習慣反應

21.明明在讀少年閏土時,頭腦中浮現了文中描述的閏土形象。明明的這種心理活動屬於( )

A. 有意記憶B. 無意記憶

C. 創造想像D. 再造想像

22.甜甜學習一首古詩,反復誦讀了10次正好記住,那麼甜甜讀( )次記憶效果最好。

A. 8B. 10

C. 12D. 15

23.創造性思維是人類思維的高級形式,其核心是( )

A. 直覺思維B. 形象思維

C. 發散思維D. 聚合思維

24.「舉一反三」和「觸類旁通」所說的是( )

A. 學習遷移B. 創造學習

C. 發現學習D. 學習替代

25.小明在解決了困擾他許久的數學難題後出現的喜悅感屬於( )

A. 道德感B. 效能感

C. 美感D. 理智感

26.美國心理學家埃里克森認為,6〜11歲兒童的人格發展正處於( )

A. 自主感對羞恥感B. 主動感對內疚感

C. 勤奮感對自卑感D. 信任感對不信任感

27.看到鳥飛翔,發明飛機。這類創造活動的主要心理機制是( )

A. 原型啟發B. 負向遷移

C. 定勢D. 正向遷移

28.按學習動機的社會意義,可將學習動機分為( )

A. 社會與個人B. 工作與提高

C. 高尚與低級D. 交往與榮譽

9. 網路快車!

內存不能為read的解決方案

「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

10. 進程的三個基本狀態及其轉換是什麼

三個基本狀態如下:

進程在運行時不斷地更改其運行狀態。通常,運行過程必須有以下三個基本狀態。

就緒狀態,當進程被分配到除CPU之外的所有必需資源時,如果處理器可以立即執行,進程狀態就稱為就緒狀態。

運行狀態,當一個進程獲得處理器時,它的程序在機器上執行,此時的進程狀態被稱為執行狀態。

阻塞狀態,由於等待事件發生而無法執行的事件被執行的進程。有許多事件會導致進程阻塞,例如,等待I/O完成,應用程序緩沖區不能滿足,等待字母(信號)等。

一個進程在運行期間,不斷地從一種狀態轉換到另一種狀態,它可以多次處於就緒狀態和執行狀態,也可以多次處於阻塞狀態。

處於就緒狀態的進程,當進程調度程序為之分配了處理機後,該進程便由就緒狀態轉變成執行狀態。

(2) 執行→就緒
處於執行狀態的進程在其執行過程中,因分配給它的一個時間片已用完而不得不讓出處理機,於是進程從執行狀態轉變成就緒狀態。

(3) 執行→阻塞
正在執行的進程因等待某種事件發生而無法繼續執行時,便從執行狀態變成阻塞狀態。

(4) 阻塞→就緒
處於阻塞狀態的進程,若其等待的事件已經發生,於是進程由阻塞狀態轉變為就緒狀態。

閱讀全文

與一個進程獲得三個主存塊的使用權相關的資料

熱點內容
創造豐盛傳銷2016 瀏覽:787
公共衛生服務年度工作報告 瀏覽:921
石獅城管投訴電話 瀏覽:538
武漢環保局投訴電話 瀏覽:87
伊成果個人資料 瀏覽:25
軟體著作權可以賺錢嗎 瀏覽:481
作業誰發明的名字 瀏覽:633
獅山工商局電話是多少 瀏覽:542
廈門工商局咨詢電話 瀏覽:374
農民大爺發明秸稈爐 瀏覽:210
碘伏開口有效期 瀏覽:455
馬鞍山二中盧大亮 瀏覽:583
建築證書培訓 瀏覽:62
馬鞍山潘榮 瀏覽:523
2019年公需課知識產權考試答案 瀏覽:280
基本衛生公共服務項目實施方案 瀏覽:62
初中數學校本研修成果 瀏覽:30
長沙市知識產權局張力 瀏覽:369
榮玉證書 瀏覽:382
凌文馬鞍山 瀏覽:34