處理機調度與死鎖

處理機調度與死鎖?

處理機調度的層次

高級調度

高級調度又稱為作業調度或長程調度,其主要功能是根據某種算法,把外存上處于后備隊列中的那些作業調入內存,也就是說,它的調度對象是作業。

1.作業和作業步

作業:一個比程序廣泛的概念,不僅包含了通常的程序和數據,而且還應有一份作業說明書,系統根據說明書來對程序的運行進行控制。在批處理系統中,是以作業為基本單位從外存調入內存的。

作業步:在作業運行期間,每個作業都必須經過若干個相對獨立又相互關聯的順序加工步驟才能得到結果,我們把其中的每一個加工步驟稱為一個作業步,各作業步之間存在著相互聯系,往往是把上一個作業步的輸出作為下一個作業步的輸入。一個典型的作業可以分為三步:①編譯作業步;②連結裝配作業步;③運行作業步。

作業流:若干個作業進入系統后,被依次存放在外存上,這便形成了輸入的作業流,在OS控制下,逐個作業進行處理,便形成了作業流。

2.作業控制塊JCB

為了管理和調度作業,在多道批處理系統中為每個作業設置而來一個作業控制塊,其中保存了系統對作業進行管理和調度所需的全部信息。通常應包含:作業標識,用戶名稱,用戶賬戶,作業類型,作業狀態,調度信息,資源需求,進入系統時間,開始處理時間,作業完成時間,作業退出時間,資源使用情況等。JCB類似進程的PCB。

3.作業調度

作業調度的主要功能是根據作業控制塊中的信息,審查系統能否滿足用戶作業的資源需求,以及按照一定的算法,從外存的后備隊列中選取某些作業調入內存,并為它們創建進程,分配必要的資源。然后再將新創建的進程插入到就緒隊列,準備執行。

在每次執行作業調度時,都須做出以下兩個決定:接納多少個作業(取決于多道程序度);接納哪些作業(取決于所采用的調度算法)。

低級調度

低級調度也稱為進程調度或短程調度,它所調用的對象是進程。它是最基本的一種調度。

低級調度的主要功能如下:①保存處理機的現場信息;②按某種算法選取進程;③把處理器分配給進程。

進程調度中的三個基本機制:

①排隊器。為了提高進程調度的效率,應事先將系統中所有的就緒進程按一定的方式排成一個或多個隊列,以便調度程序能夠最快的找到它。

②分派器。分派器把由進程調度所選定的進程,從就緒隊列取出該進程,然后進行上下文切換,將處理機分配給它。

③上下文切換機制。當對處理機進行切換時,會發生兩對上下文切換操作。在第一對上下文切換時,操作系統將保存當前進程的上下文,而裝入分派程序的上下文,以便分派程序運行;在第二對上下文切換時,將移出分派程序,而把新選進程的CPU現場信息裝入到處理機的各個相應寄存器中。

3.進程調度方式

?1) 非搶占方式(Non-preemptive Mode)

在采用非搶占調度方式時,可能引起進程調度的因素可歸結為這樣幾個:① 正在執行的進程執行完畢, 或因發生某事件而不能再繼續執行; ② 執行中的進程因提出I/O請求而暫停執行;③ 在進程通信或同步過程中執行了某種原語操作,如P操作(wait操作)、Block原語、Wakeup原語等。這種調度方式的優點是實現簡單、系統開銷小,適用于大多數的批處理系統環境。但它難以滿足緊急任務的要求——立即執行,因而可能造成難以預料的后果。顯然,在要求比較嚴格的實時系統中,不宜采用這種調度方式。

2) 搶占方式(Preemptive Mode)

這種調度方式允許調度程序根據某種原則去暫停某個正在執行的進程,將已分配給該進程的處理機重新分配給另一進程。優點是可以防止一個長進程長時間占用處理機,能為大多數進程提供更公平的服務,特別是能滿足對響應時間有著較嚴格要求的實時任務的需求。搶占調度方式的原則:優先權原則(對一些重要的和緊急的作業賦予較高的優先權);短作業或進程優先原則(當新到達的作業比正在執行的作業明顯的短時,將暫停當前的長作業的執行,將處理機分配給新到達的作業);時間片原則(各進程按時間片輪轉運行,當一個時間片用完后,便停止該進程的執行而重新進行調度)。

中級調度

中級調度又稱中程調度(Medium-Term Scheduling)。 引入中級調度的主要目的,是為了提高內存利用率和系統吞吐量。 為此,應使那些暫時不能運行的進程不再占用寶貴的內存資源,而將它們調至外存上去等待,把此時的進程狀態稱為就緒駐外存狀態或掛起狀態。當這些進程重又具備運行條件、且內存又稍有空閑時,由中級調度來決定把外存上的哪些又具備運行條件的就緒進程,重新調入內存,并修改其狀態為就緒狀態,掛在就緒隊列上等待進程調度。?

調度隊列模型和調度準則

調度隊列模型

1. 僅有進程調度的調度隊列模型

操作系統(第三章 處理機調度與死鎖) - 簡單的豬 - 簡單的豬

2. 具有高級和低級調度的調度隊列模型

操作系統(第三章 處理機調度與死鎖) - 簡單的豬 - 簡單的豬

?3. 同時具有三級調度的調度隊列模型

操作系統(第三章 處理機調度與死鎖) - 簡單的豬 - 簡單的豬
選擇調度方式和調度算法的若干準則
1. 面向用戶的準則
(1) 周轉時間短 (2) 響應時間快 (3) 截止時間的保證 (4) 優先權準則。
2. 面向系統的準則:系統吞吐量高;處理機利用率好;各類資源的平衡利用。
調度算法
先來先服務調度算法(FCFS)
短作業(進程)優先調度算法(SJ(P)F)
SJ(P)F調度算法雖然能有效地降低作業的平均等待時間,提高系統的吞吐量。但也存在缺點:①對長作業不利;②該算法未考慮作業的緊迫程度,因而不能保證緊迫性作業會被及時處理;③用戶可能會有意或無意的縮短其作業的估計時間,致使該算法不一定能真正做到短作業優先。
高優先權優先調度算法
為了照顧緊迫型作業,使之在進入系統后便獲得優先處理,引入了最高優先權優先調度(FPF)算法。
1. 優先權調度算法的類型
①非搶占式優先權算法:系統一旦把處理機分配給就緒隊列中優先權最高的進程后,該進程便一直執行下去,直至完成; 或因發生某事件使該進程放棄處理機時,系統方可再將處理機重新分配給另一優先權最高的進程。這種調度算法主要用于批處理系統中;也可用于某些對實時性要求不嚴的實時系統中。
②搶占式優先權調度算法:系統同樣是把處理機分配給優先權最高的進程,使之執行。但在其執行期間,只要又出現了另一個其優先權更高的進程,進程調度程序就立即停止當前進程(原優先權最高的進程)的執行,重新將處理機分配給新到的優先權最高的進程。因此,在采用這種調度算法時,是每當系統中出現一個新的就緒進程i時,就將其優先權Pi與正在執行的進程j的優先權Pj進行比較。如果Pi≤Pj,原進程Pj便繼續執行;但如果是Pi>Pj, 則立即停止Pj的執行,做進程切換,使i進程投入執行。顯然,這種搶占式的優先權調度算法,能更好地滿足緊迫作業的要求,故而常用于要求比較嚴格的實時系統中, 以及對性能要求較高的批處理和分時系統中。
2. 優先權的類型
①靜態優先權:是在創建進程時確定的,且在進程的整個運行期間保持不變。確定進程優先權的依據有:進程類型;進程對資源的需求;用戶要求。
②動態優先權:在創建進程時所賦予的優先權,是可以隨進程的推進或隨其等待時間的增加而改變的,以便獲得更好的調度性能。
3. 高響應比優先調度算法
優先權的變化規律可描述為:
操作系統(第三章 處理機調度與死鎖) - 簡單的豬 - 簡單的豬
由于等待時間與服務時間之和,就是系統對該作業的響應時間,故該優先權又相當于響應比RP。據此,又可表示為:
?
操作系統(第三章 處理機調度與死鎖) - 簡單的豬 - 簡單的豬
由上式可以看出:
①如果作業的等待時間相同,則要求服務的時間愈短,其優先權愈高,因而該算法有利于短作業。
②當要求服務的時間相同時,作業的優先權決定于其等待時間,等待時間愈長,其優先權愈高,因而它實現的是先來先服務。
③?對于長作業,作業的優先級可以隨等待時間的增加而提高,當其等待時間足夠長時,其優先級便可升到很高, 從而也可獲得處理機。
基于時間片的輪轉調度算法
在分時系統中,為了能及時響應用戶的請求,必須采用基于時間片的輪轉式進程調度算法。
1. 時間片輪轉法
在早期的時間片輪轉法中,系統將所有的就緒進程按先來先服務的原則,排成一個隊列,每次調度時,把CPU分配給隊首進程,并令其執行一個時間片。時間片的大小從幾ms到幾百ms。當執行的時間片用完時,由一個計時器發出時鐘中斷請求,調度程序便據此信號來停止該進程的執行,并將它送往就緒隊列的末尾;然后,再把處理機分配給就緒隊列中新的隊首進程,同時也讓它執行一個時間片。這樣就可以保證就緒隊列中的所有進程,在一給定的時間內,均能獲得一時間片的處理機執行時間。
2. 多級反饋隊列調度算法
(1) 應設置多個就緒隊列,并為各個隊列賦予不同的優先級。 第一個隊列的優先級最高,第二個隊列次之,其余各隊列的優先權逐個降低。該算法賦予各個隊列中進程執行時間片的大小也各不相同,在優先權愈高的隊列中,為每個進程所規定的執行時間片就愈小。例如,第二個隊列的時間片要比第一個隊列的時間片長一倍,……,第i+1個隊列的時間片要比第i個隊列的時間片長一倍。
(2) 當一個新進程進入內存后,首先將它放入第一隊列的末尾,按FCFS原則排隊等待調度。當輪到該進程執行時,如它能在該時間片內完成,便可準備撤離系統;如果它在一個時間片結束時尚未完成,調度程序便將該進程轉入第二隊列的末尾,再同樣地按FCFS原則等待調度執行;如果它在第二隊列中運行一個時間片后仍未完成,再依次將它放入第三隊列,……,如此下去,當一個長作業(進程)從第一隊列依次降到第n隊列后,在第n隊列中便采取按時間片輪轉的方式運行。
(3) 僅當第一隊列空閑時,調度程序才調度第二隊列中的進程運行; 僅當第1~(i-1) 隊列均空時,才會調度第i隊列中的進程運行。如果處理機正在第i隊列中為某進程服務時,又有新進程進入優先權較高的隊列(第1~(i-1)中的任何一個隊列),則此時新進程將搶占正在運行進程的處理機,即由調度程序把正在運行的進程放回到第i隊列的末尾,把處理機分配給新到的高優先權進程。
3. 多級反饋隊列調度算法的性能:終端型作業用戶;短批處理作業用戶;長批處理作業用戶。
實時調度
實現實時調度的基本條件
1. 提供必要的信息
①就緒時間
②開始截止時間和完成截止時間?
③處理時間
④資源要求?
⑤優先級
2. 系統處理能力強
在實時系統中,通常都有著多個實時任務。若處理機的處理能力不夠強,則有可能因處理機忙不過來而使某些實時任務不能得到及時處理, 從而導致發生難以預料的后果。假定系統中有m個周期性的硬實時任務,它們的處理時間可表示為Ci,周期時間表示為Pi,則在單處理機情況下,必須滿足下面的限制條件:
操作系統(第三章 處理機調度與死鎖) - 簡單的豬 - 簡單的豬
解決的方法是提高系統的處理能力,其途徑有二:其一仍是采用單處理機系統, 但須增強其處理能力, 以顯著地減少對每一個任務的處理時間;其二是采用多處理機系統。假定系統中的處理機數為N,則限制條件應改為<=N。
3. 采用搶占式調度機制
當一個優先權更高的任務到達時,允許將當前任務暫時掛起,而令高優先權任務立即投入運行,這樣便可滿足該硬實時任務對截止時間的要求。但這種調度機制比較復雜。
對于一些小的實時系統,如果能預知任務的開始截止時間,則對實時任務的調度可采用非搶占調度機制,以簡化調度程序和對任務調度時所花費的系統開銷。但在設計這種調度機制時,應使所有的實時任務都比較小,并在執行完關鍵性程序和臨界區后,能及時地將自己阻塞起來,以便釋放出處理機, 供調度程序去調度那種開始截止時間即將到達的任務。
4. 具有快速切換機制
該機制應具有如下兩方面的能力:
(1) 對外部中斷的快速響應能力。為使在緊迫的外部事件請求中斷時系統能及時響應,要求系統具有快速硬件中斷機構,還應使禁止中斷的時間間隔盡量短, 以免耽誤時機(其它緊迫任務)。
(2) 快速的任務分派能力。在完成任務調度后,便應進行任務切換。為了提高分派程序進行任務切換時的速度, 應使系統中的每個運行功能單位適當的小,以減少任務切換的時間開銷。
實時調度算法的分類
非搶占式調度算法:非搶占式輪轉調度算法;非搶占式優先調度算法。
搶占式調度算法:基于時鐘中斷的搶占式優先權調度算法;立即搶占的優先權調度算法。
操作系統(第三章 處理機調度與死鎖) - 簡單的豬 - 簡單的豬
?常用的集中實時調度算法
1.最早截止時間優先即EDF(Earliest Deadline First)算法
2.最低松弛度優先即LLF(Least Laxity First)算法
產生死鎖的原因和必要條件
產生死鎖的原因:競爭資源;進程間推進順序非法。
產生死鎖的必要條件:互斥條件;請求和保持條件;不剝奪條件; 環路等待條件
處理死鎖的基本方法:預防死鎖;避免死鎖;檢測死鎖;解除死鎖。
預防死鎖的方法:摒棄“請求和保持”條件;摒棄“不剝奪”條件;摒棄“環路等待”條件
系統安全狀態:所謂安全狀態,是指系統能按某種進程順序(P1, P2, …,Pn)(稱〈P1, P2, …, Pn〉序列為安全序列),來為每個進程Pi分配其所需資源,直至滿足每個進程對資源的最大需求,使每個進程都可順利地完成。如果系統無法找到這樣一個安全序列,則稱系統處于不安全狀態。
利用銀行家算法避免死鎖
1. 銀行家算法中的數據結構
(1) 可利用資源向量Available。這是一個含有m個元素的數組,其中的每一個元素代表一類可利用的資源數目,其初始值是系統中所配置的該類全部可用資源的數目,其數值隨該類資源的分配和回收而動態地改變。如果Available[j]=K,則表示系統中現有Rj類資源K個。
(2) 最大需求矩陣Max。這是一個n×m的矩陣,它定義了系統中n個進程中的每一個進程對m類資源的最大需求。如果Max[i,j]=K,則表示進程i需要Rj類資源的最大數目為K。
(3) 分配矩陣Allocation。這也是一個n×m的矩陣,它定義了系統中每一類資源當前已分配給每一進程的資源數。如果Allocation[i,j]=K,則表示進程i當前已分得Rj類資源的數目為K。
(4) 需求矩陣Need。這也是一個n×m的矩陣,用以表示每一個進程尚需的各類資源數。如果Need[i,j]=K,則表示進程i還需要Rj類資源K個,方能完成其任務。
上述三個矩陣間存在下述關系:Need[i, j]=Max[i, j] - Allocation[i, j]
2. 銀行家算法
設Requesti是進程Pi的請求向量,如果Requesti[j]=K,表示進程Pi需要K個Rj類型的資源。當Pi發出資源請求后,系統按下述步驟進行檢查:
(1) 如果Requesti[j]≤Need[i,j],便轉向步驟2;否則認為出錯,因為它所需要的資源數已超過它所宣布的最大值。
(2) 如果Requesti[j]≤Available[j],便轉向步驟(3);否則, 表示尚無足夠資源,Pi須等待。
(3) 系統試探著把資源分配給進程Pi,并修改下面數據結構中的數值:
? Available[j]∶=Available[j]-Requesti[j];
? Allocation[i,j]∶=Allocation[i,j]+Requesti[j];
? Need[i,j]∶=Need[i,j]-Requesti[j];
(4) 系統執行安全性算法,檢查此次資源分配后,系統是否處于安全狀態。若安全,才正式將資源分配給進程Pi,以完成本次分配;否則, 將本次的試探分配作廢,恢復原來的資源分配狀態,讓進程Pi等待。
3. 安全性算法
(1) 設置兩個向量:① 工作向量Work: 它表示系統可提供給進程繼續運行所需的各類資源數目,它含有m個元素,在執行安全算法開始時,Work∶=Available; ② Finish: 它表示系統是否有足夠的資源分配給進程,使之運行完成。開始時先做Finish[i]∶=false; 當有足夠資源分配給進程時, 再令Finish[i]∶=true。
(2) 從進程集合中找到一個能滿足下述條件的進程: 
??????? ① Finish[i]=false; ② Need[i,j]≤Work[j]; 若找到, 執行步驟(3), 否則,執行步驟(4)。
(3) 當進程Pi獲得資源后,可順利執行,直至完成,并釋放出分配給它的資源,故應執行:
?Work[j]∶=Work[i]+Allocation[i,j];
? Finish[i]∶=true;
? go to step 2;
(4) 如果所有進程的Finish[i]=true都滿足, 則表示系統處于安全狀態;否則,系統處于不安全狀態。
死鎖定理:S為死鎖的充分條件是,當且僅當S狀態的資源分配圖示不可完全簡化的。
死鎖的解除:剝奪資源;撤銷進程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445146.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445146.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445146.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

各種卷積

從最開始的卷積層&#xff0c;發展至今&#xff0c;卷積已不再是當初的卷積&#xff0c;而是一個研究方向。在反卷積這篇博客中&#xff0c;介紹了一些常見的卷積的關系&#xff0c;本篇博客就是要梳理這些有趣的卷積結構。 閱讀本篇博客之前&#xff0c;建議將這篇博客結合在一…

springboot——kaptcha

導入包&#xff1a; <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version></dependency> 配置類&#xff1a; package com.now.community.community.config;import…

NLP復習資料(7)-機器翻譯、文本分類、情感分析

NLP復習資料國科大&#xff0c;宗老師《自然語言處理》課程復習筆記&#xff0c;個人整理&#xff0c;僅供參考。此部分為手稿&#xff0c;高清圖下載見鏈接&#xff1a;https://download.csdn.net/download/sinat_40624829/11662412

XMl文件解析讀取

DOM方式&#xff1a; http://www.w3schools.com/dom/dom_parser.asp

redis——對項目的一些優化方案

這是我們之前項目的業務流程&#xff0c;做一下簡單介紹。 登錄&#xff1a; 用戶輸入賬號、密碼、驗證碼。我們先判斷用戶輸入的驗證碼是不是我們session存的驗證碼&#xff0c;然后去查賬號密碼是否正確。 如果登錄成功&#xff0c;發送給用戶一張憑證&#xff08;ticket&a…

const的思考

const的思考 1、什么是const?常類型是指使用類型修飾符const說明的類型&#xff0c;常類型的變量或對象的值是不能被更新的。&#xff08;當然&#xff0c;我們可以偷梁換柱進行更新&#xff1a;&#xff09;2、為什么引入const&#xff1f;const 推出的初始目的&#xff0c;正…

深度模型壓縮論文(02)- BlockSwap: Fisher-guided Block Substitution for Network Compression

文章目錄1.摘要和背景1.1 摘要1.2 背景2.方法和貢獻2.1 方法2.2 貢獻3.實驗和結果3.1 實驗3.2 結果4.總結和展望4.1 總結4.2 展望本系列是在閱讀深度神經網絡模型小型化方面論文時的筆記&#xff01;內容大部分從論文中摘取&#xff0c;也會有部分自己理解&#xff0c;有錯誤的…

NLP復習資料(8)-知識圖譜、信息抽取

NLP復習資料第16講—知識圖譜第17講-信息抽取&#xff08;知識圖譜生命周期中信息獲取的關鍵技術&#xff09;國科大&#xff0c;宗老師《自然語言處理》課程復習筆記&#xff0c;個人整理&#xff0c;僅供參考。第16講—知識圖譜 知識圖譜經典知識表示理論語義網資源描述框架…

Collection源碼閱讀

package java.util;import java.util.function.Predicate; import java.util.stream.Stream; import java.util.stream.StreamSupport;/*** 集合層次結構的根接口&#xff0c;一個集合表示一組對象&#xff0c;稱為元素* JDK不提供任何該接口的直接實現&#xff0c;JDK提供實現…

socket阻塞和非阻塞的區別

讀操作 對于阻塞的socket,當socket的接收緩沖區中沒有數據時,read調用會一直阻塞住,直到有數據到來才返 回。當socket緩沖區中的數據量小于期望讀取的數據量時,返回實際讀取的字節數。當sockt的接收緩沖 區中的數據大于期望讀取的字節數時,讀取期望讀取的字節數,返回實際讀…

深度模型壓縮論文(01)- Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks

文章目錄1.摘要和介紹1.1摘要部分2.背景和方法2.1 背景2.2 貢獻2.3 方法3.實驗和結果3.1 實驗3.2 結果4.總結和展望4.1 總結4.2 展望本系列是在閱讀深度神經網絡模型小型化方面論文時的筆記&#xff01;內容大部分從論文中摘取&#xff0c;也會有部分自己理解&#xff0c;有錯誤…

架構分享--微博架構

先來分享下大神Tim Yang的關于微博的架構設計&#xff1a; 這里主要從 存儲和接口角度來講 對于大流量系統的架構設計&#xff0c;對于寫入方面是特別需要注意的&#xff0c;基本上現在遇到的系統都是對于主數據庫的寫入&#xff0c;然后對于從數據庫實現流量的分發。 對于存…

Pytorch(7)-自己設計神經網絡會遇到的問題

操作pytorch架構遇到的問題1.網絡參數初始化2.查看當前可學習參數3.增加可學習的參數4.參數優化函數Adagrad5.直接修改網絡梯度值6.optimizers.zero_grad()報錯7.tensor.detach() 和 tensor.data 的區別1.網絡參數初始化 在pytorch中&#xff0c;有自己默認初始化參數方式&…

Python里的OS模塊常用函數說明

Python的標準庫中的os模塊包含普遍的操作系統功能。如果你希望你的程序能夠與平臺無關的話&#xff0c;這個模塊是尤為重要的。即它允許一個程序在編寫后不需要任何改動&#xff0c;也不會發生任何問題&#xff0c;就可以在Linux和Windows下運行。 下面列出了一些在os模塊中比較…

深度模型壓縮論文(03)- Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self

文章目錄1.摘要和背景1.1 摘要1.2 背景2.方法和貢獻2.1 方法2.1.1 訓練過程2.1.2 loss介紹2.2 貢獻3.實驗和結果3.1 實驗3.2 結果4.總結和展望4.1 總結4.2 展望主要貢獻&#xff1a;基于網絡蒸餾方法&#xff0c;提出了一種提升裁剪后模型的精度的方法&#xff01;將訓練時間大…

關系數據庫——基礎

數據庫系統概論 四個基本概念 數據&#xff1a;數據庫中存儲的基本對象&#xff0c;描述一個事物的符號記錄&#xff0c;數據和其語義不可分開說 數據庫&#xff08;DB&#xff09;&#xff1a;是長期儲存在計算機內、有組織的、可共享的大量數據的集合。 數據庫管理系統&a…

Python(27)-模塊

模塊、包1.模塊導入的方式2.使用as給模塊取一個別名&#xff08;大駝峰命名法&#xff09;3.從模塊中導入部分工具4.從模塊中導入全部工具5.模塊搜索順序6__name__7.包8.發布模塊、安裝模塊、卸載包9.pip安裝第三方模塊本系列博文來自學習《Python基礎視頻教程》筆記整理&#…

Wow6432Node

64 位版本 Windows 中的注冊表分為 32 位注冊表項和 64 位注冊表項。許多 32 位注冊表項與其相應的 64 位注冊表項同名,反之亦然。 64 位版本 Windows 包含的默認 64 位版本注冊表編輯器 (Regedit.exe) 可顯示 64 位和 32 位的 注冊表項。WOW64 注冊表重定向器為 32 位程序提供…

如何使用docker配置深度學習開發環境

文章目錄1.底層驅動的安裝1.1 操作系統的安裝1.2 顯卡驅動的安裝1.3 cuda的安裝2.使用docker配置深度學習開發環境2.1 docker的安裝2.2 nvidia_docker的安裝2.3 安裝過程中的問題2.3.1 docker和nvidia_docker的版本不匹配的問題。2.3.2 解決每次運行docker命令的時候要加sudo.2…

反射全解

反射的概念 反射的引入&#xff1a; Object obj new Student(); 若程序運行時接收到外部傳入的一個對象&#xff0c;該對象的編譯類型是Object&#xff0c;但程序又需要調用該對象運行類型的方法&#xff1a; 1.若編譯和運行類型都知道&#xff0c;使用 instanceof判斷后&…