實驗四 兩級放大電路實驗報告及實驗四 頁式虛擬存儲管理中地址轉(zhuǎn)換和頁式中斷 FIFO LRU OPT C++版本_第1頁
實驗四 兩級放大電路實驗報告及實驗四 頁式虛擬存儲管理中地址轉(zhuǎn)換和頁式中斷 FIFO LRU OPT C++版本_第2頁
實驗四 兩級放大電路實驗報告及實驗四 頁式虛擬存儲管理中地址轉(zhuǎn)換和頁式中斷 FIFO LRU OPT C++版本_第3頁
實驗四 兩級放大電路實驗報告及實驗四 頁式虛擬存儲管理中地址轉(zhuǎn)換和頁式中斷 FIFO LRU OPT C++版本_第4頁
實驗四 兩級放大電路實驗報告及實驗四 頁式虛擬存儲管理中地址轉(zhuǎn)換和頁式中斷 FIFO LRU OPT C++版本_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

實驗四兩級放大電路一、實驗?zāi)康膌、掌握如何合理設(shè)置靜態(tài)工作點。2、學(xué)會放大器頻率特性測試方法。3、了解放大器的失真及消除方法。二、實驗原理1、對于二極放大電路,習(xí)慣上規(guī)定第一級是從信號源到第二個晶體管BG2的基極,第二級是從第二個晶體管的基極到負(fù)載,這樣兩極放大器的電壓總增益Av為:式中電壓均為有效值,且,由此可見,兩級放大器電壓總增益是單級電壓增益的乘積,由結(jié)論可推廣到多級放大器。當(dāng)忽略信號源內(nèi)阻RS和偏流電阻Rb的影響,放大器的中頻電壓增益為:必須要注意的是AV1、AV2都是考慮了下一級輸入電阻(或負(fù)載)的影響,所以第一級的輸出電壓即為第二級的輸入電壓,而不是第一級的開路輸出電壓,當(dāng)?shù)谝患壴鲆嬉延嬋胂录壿斎腚娮璧挠绊懞?,在計算第二級增益時,就不必再考慮前級的輸出阻抗,否則計算就重復(fù)了。2、在兩極放大器中β和IE的提高,必須全面考慮,是前后級相互影響的關(guān)系。3、對兩級電路參數(shù)相同的放大器其單級通頻帶相同,而總的通頻帶將變窄。三、實驗儀器l、雙蹤示波器。 2、數(shù)字萬用表。3、信號發(fā)生器。 4、毫伏表5、分立元件放大電路模塊四、實驗內(nèi)容1、實驗電路見圖4-1圖4-1兩級交流放大電路2、設(shè)置靜態(tài)工作點(l)按圖接線,注意接線盡可能短。(2)靜態(tài)工作點設(shè)置:要求第二級在輸出波形不失真的前提下幅值盡量大,第一級為增加信噪比,靜態(tài)工作點盡可能低。(3)在輸入端加上lKHz幅度為lmV的交流信號(一般采用實驗箱上加衰減的辦法,即信號源用一個較大的信號,例如l00mV,在實驗板上經(jīng)l00:1衰減電阻降為1mV)調(diào)整工作點使輸出信號不失真。注意:如發(fā)現(xiàn)有寄生振蕩,可采用以下措施消除:①重新布線,盡可能走線短。②可在三極管eb間加幾p到幾百p的電容。③信號源與放大器用屏蔽線連接。3、按表4-1要求測量并計算,注意測靜態(tài)工作點時應(yīng)斷開輸入信號。靜態(tài)工作點輸入/輸出電壓(mV)電壓放大倍數(shù)第1級第2級第1級第1級整體Vc1Vb1Ve1Vc2Vb2Ve2ViVo1Ao2Av1Av2Av空載32.5mv0.655v0.2mv6.14v2.625v2.025v0.017v19.2mv480mv1.132828.2負(fù)載32.5mv0.655v0.2mv6.13v2.626v2.025v0.015v4、接入負(fù)載電阻RL=3KΩ,按表4-l測量并計算,比較實驗內(nèi)容4-2的結(jié)果。5、測兩級放大器的頻率特性(l)將放大器負(fù)載斷開,先將輸入信號頻率調(diào)到lKHz,幅度調(diào)到使輸出幅度最大而不失真。(2)保持輸入信號幅度不變,改變頻率,按表4-2測量并記錄。(3)接上負(fù)載,重復(fù)上述實驗。表4-2f(Hz)501002505001000250050001000020000RL=∞RL=3K七.實驗總結(jié)及感想1.從實驗數(shù)據(jù)來看,實驗值和理論值還是存在一定差異。實驗中所采用的元件并非理想元件,理論計算時一般都忽略一些小數(shù)據(jù),所以兩者存在誤差。2、實驗結(jié)果分析(1)同單級放大電路,三極管共射放大電路的靜態(tài)工作點在工作區(qū)時,能實現(xiàn)將電流放大的功效。(2)采用直接耦合方式,每級放大器的工作點會逐漸提高。簡化部分電路,采用差分輸入,共射放大的形式。(3)、當(dāng)Ic偏小時,放大電路容易產(chǎn)生截止失真;當(dāng)Ic偏大時,容易產(chǎn)生飽和失真。飽和失真在圖像上的體現(xiàn)是“削頂”,而截止失真會“縮頂”。(4)、輸入信號和輸出信號反相,有較大的電流和電壓增益。3、實驗感想(1)、實驗所測參數(shù)均為放大器處于放大工作狀態(tài)下的工作參數(shù),當(dāng)示波器波形出現(xiàn)失真時,放大器工作在飽和區(qū)或截止區(qū),即放大器非正常工作,所以要在示波器監(jiān)視輸出波形不失真的情況下測試放大器的各項參數(shù)。(2)、一定要保證電路連接正確的情況下接通電源,避免短路燒壞實驗器材。(3)、輸入電壓不能過大也不能過小,頻率要選擇中頻段,避免失真以保證Au接近為定值。實驗四頁式虛擬存儲管理中地址轉(zhuǎn)換和頁式中斷FIFO一、實驗?zāi)康纳钊肓私忭撌酱鎯芾砣绾螌崿F(xiàn)地址轉(zhuǎn)換;進(jìn)一步認(rèn)識頁式虛擬存儲管理中如何處理缺頁中斷以及頁面置換算法。二、實驗主要內(nèi)容編寫程序完成頁式虛擬存儲管理中地址轉(zhuǎn)換過程和模擬缺頁中斷的處理。實驗具體內(nèi)容包括:首先對給定的地址進(jìn)行轉(zhuǎn)換工作,若發(fā)現(xiàn)缺頁則先進(jìn)行缺頁中斷處理,然后再進(jìn)行地址轉(zhuǎn)換;最后編寫主函數(shù)對所做工作進(jìn)行測試。假定主存64KB,每個主存塊1024字節(jié),作業(yè)最大支持到64KB,系統(tǒng)中每個作業(yè)分得主存塊4塊。三、實驗原理1)地址轉(zhuǎn)換過程:首先從邏輯地址中的高位取得頁號,然后根據(jù)頁號查頁表,得到塊號;然后從邏輯地址中的低位取得頁內(nèi)地址,將塊號和頁內(nèi)地址合并即得到物理地址。2)缺頁中斷處理根據(jù)頁號查找頁表,判斷該頁是否在主存儲器中,若該頁標(biāo)志位“0”,形成缺頁中斷。操作系統(tǒng)讓調(diào)出中斷處理程序處理中斷。四、實驗方法與步驟實現(xiàn)地址轉(zhuǎn)換與缺頁中斷處理,主要考慮三個問題:第一,設(shè)計頁式虛擬存儲管理方式中頁表的數(shù)據(jù)結(jié)構(gòu);第二,地址轉(zhuǎn)換算法的實現(xiàn);第三,缺頁中斷處理算法的實現(xiàn)。1)

設(shè)計頁表的數(shù)據(jù)結(jié)構(gòu)頁式虛擬存儲管理方式中頁表除了頁號和該頁對應(yīng)的主存塊號外,至少還要包括存在標(biāo)志(該頁是否在主存),磁盤位置(該頁的副本在磁盤上的位置)和修改標(biāo)志(該頁是否修改過)。在實驗中頁表用數(shù)組模擬,其數(shù)據(jù)結(jié)構(gòu)定義如下:struct{intlnumber;//頁號intflag;//表示頁是否在主存中,“1”表示在,“0”表示不在intpnumber;//該頁所在主存塊的塊號intwrite;//該頁是否被修改過,“1”表示修改過,“0“表示沒有修改過intdnumber;//該頁存放在磁盤上的位置,即磁盤塊號}page[n];//頁表定義2)地址轉(zhuǎn)換算法的實現(xiàn)地址轉(zhuǎn)換是由硬件完成的,實驗中使用軟件程序模擬地址轉(zhuǎn)換過程。在實驗中,每個主存塊1024字節(jié),則塊內(nèi)地址占10位;主存64KB,則主存共64塊,即塊號占6位;物理地址共占16位;作業(yè)最大64KB,則作業(yè)最大占64塊,即頁號占6位,邏輯地址共占16位。(用主存的大小計算物理地址位數(shù),用最大作業(yè)大小計算邏輯地址位數(shù))。在頁式虛擬存儲管理方式中,作業(yè)信息作為副本放在磁盤上,作業(yè)執(zhí)行時僅把作業(yè)信息的部分頁面裝入主存儲器,作業(yè)執(zhí)行時若訪問的頁面在主存中,則進(jìn)行地址轉(zhuǎn)換,若訪問的頁面不在主存中,則產(chǎn)生一個“缺頁中斷”,由操作系統(tǒng)把當(dāng)前所需要的頁面裝入主存儲器后,再次執(zhí)行時才可以按上述方法進(jìn)行地址轉(zhuǎn)換。

模擬地址轉(zhuǎn)換流程度3)

缺頁中斷處理算法的實現(xiàn)缺頁處理過程簡單闡述如下:a)根據(jù)當(dāng)前執(zhí)行指令中邏輯地址的頁號查找頁表,判斷該頁是否在主存儲器中,若該頁標(biāo)志為“0”,形成缺頁中斷。中斷裝置通過交換PSW讓操作系統(tǒng)的中斷處理程序占用處理器。b)操作系統(tǒng)處理缺頁中斷的方法及時查主存分配表,找一個空閑主存塊;若無空閑塊,查頁表,選擇一個已在主存的頁面,把它暫時調(diào)出主存。若在執(zhí)行過程中該頁被修改過,則需將該頁信息寫回磁盤,否則不比寫回;c)找出該頁的位置,啟動磁盤讀出該頁的信息,把磁盤上讀出的信息裝入第2不找到的主存塊,修改頁表中該頁的標(biāo)志為“1”;d)由于產(chǎn)生缺頁中斷的那條指令還沒有執(zhí)行完,所以頁面裝入后應(yīng)該重新執(zhí)行被中斷的指令。當(dāng)重新執(zhí)行該指令時,由于要訪問的頁面已在主存中,所以可以正常執(zhí)行。關(guān)于第二步的查找裝入新頁面的主存塊處理方式,不同系統(tǒng)采用的策略可能有所不同,這里采用局部置換算法,就是每個作業(yè)分得一定的主存塊,只能在分得的主存塊內(nèi)查找空閑塊,若無空閑主存塊,則從該作業(yè)中選擇一個頁面淘汰出主存。實驗中采用局部置換算法。使用局部置換算法時,存在這樣一個問題:就是在分配給作業(yè)主存空間時,裝入哪些頁?有的系統(tǒng)采取不裝入任何一頁,當(dāng)執(zhí)行過程中需要時才將其調(diào)入。有點系統(tǒng)采用頁面預(yù)置的方法,事先估計可能某些頁面會先用到,在分配主存塊后將這些頁面裝入。在本實驗中采用第二種方法,分配主存空間時將前幾頁調(diào)入主存,假定系統(tǒng)中每個作業(yè)分得主存塊m塊,則將第0~m-1頁裝入主存。因為是模擬硬件工作,所有在實驗中如果訪問的頁不再主存中時,則輸入該頁頁號,表示硬件產(chǎn)生缺頁中斷,然后直接轉(zhuǎn)去缺頁中斷處理;由于采用頁面預(yù)置方法,在給定的主存塊中一定無空閑塊,只能淘汰已在主存的一頁;沒有啟動磁盤的工作,淘汰的頁面需要寫回磁盤時,用輸入頁號表示,調(diào)入新的一頁時,將該頁在頁表中的存在標(biāo)志置為“1”,輸出頁號表示將該頁調(diào)入主存。當(dāng)主存中無空閑塊時,為裝入一個頁面,必須按照某種算法從已在主存的頁中選擇一頁,將它暫時調(diào)出主存,讓出主存空間,用來存放裝入的頁面,這個工作稱為“頁面調(diào)度”。常用的頁面調(diào)度算法有:先進(jìn)現(xiàn)出、最近最少用算法、和最近最不常用算法。在本實驗中采用先進(jìn)現(xiàn)出調(diào)度算法。先進(jìn)現(xiàn)出算法總是選擇駐留在主存時間最長的一頁調(diào)出。實驗中把主存儲器的頁的頁號按照進(jìn)入主存的先后次序拍成隊列,每次總是調(diào)出對首的頁,當(dāng)裝入一個新頁后,把新頁的頁號排入對尾。實驗中,用一個數(shù)組存放頁號的隊列。假定分配給作業(yè)的主存塊數(shù)為m,數(shù)組可由m個元素組成,p[0],p[1],p[2]……p[m-1];對首指針head;采用頁面預(yù)置的方法,頁號隊列的長度總是m,tail等于(head+1)%m。因此可以使用一個指針,只用head即可。在裝入一個新的頁時,裝入頁和淘汰頁同時執(zhí)行,當(dāng)裝入一個新的頁時,將其頁號存入數(shù)組:淘汰頁的頁號=p[head];p[head]=新裝入頁的頁號;head=(head+1)%m;實驗執(zhí)行一條指令時,不模擬指令的執(zhí)行,只是考慮指令執(zhí)行是否修改頁面,若修改頁面,則將該頁的頁表中的修改標(biāo)志位置“1”,然后輸出轉(zhuǎn)換后的物理地址,并輸出物理地址來表示一條指令執(zhí)行完成;如果訪問的頁不在主存時,則產(chǎn)生缺頁中斷,然后直接轉(zhuǎn)去缺頁中斷處理,最后模擬中斷返回,就是返回沖進(jìn)進(jìn)行地址轉(zhuǎn)換。因為沒有實際主存,所有在模擬程序中首先手工輸入頁表信息,創(chuàng)建該作業(yè)的頁表;然后循環(huán)執(zhí)行假定的指令,觀察地址轉(zhuǎn)換情況。五、練習(xí)題采用LRU頁面調(diào)度算法編程實現(xiàn)上述虛擬頁式存儲管理的地址轉(zhuǎn)換。源代碼#include<iostream.h>#definen64//頁表的最大長度#definelength4//系統(tǒng)為每個作業(yè)分配的主存塊數(shù)struct{ intlnumber;//頁號 intflag;//表示頁是否在主存中,“1”表示在,“0”表示不在 intpnumber;//該頁所在主存塊的塊號 intwrite;//該頁是否被修改過,“1”表示修改過,“0“表示沒有修改過 intdnumber;//該頁存放在磁盤上的位置,即磁盤塊號}page[n];//頁表定義intm;intpage_length;//頁表的實際長度intp[length];//用向量模擬主存inthead;voidpage_interrupt(int);//缺頁中斷處理函數(shù)voidcommand(unsigned,int);//命令處理函數(shù)voidmain(){ intlnumber,pnumber,write,dnumber; unsignedladdress; inti; cout<<"輸入頁表的信息,創(chuàng)建頁表(頁號從0開始,若頁號為-1,則結(jié)束輸入)\n"; cout<<"請輸入頁號和輔存地址:"; cin>>lnumber>>dnumber; cin.ignore(); i=0; while(lnumber!=-1) { page[i].lnumber=lnumber; page[i].flag=0; page[i].write=0; page[i].dnumber=dnumber; i++; cout<<"請輸入頁號和輔存地址:"; cin>>lnumber>>dnumber; } //預(yù)先將輸入的頁調(diào)入主存塊中 page_length=i; cout<<"輸入主存塊號(輸入少于或者等于"<<i<<"個數(shù)據(jù),若塊號數(shù)為-1,則結(jié)束輸入):"; cin>>pnumber; cin.ignore(); m=0; head=0; while(m<length&&pnumber!=-1) { if(m<i) { page[m].pnumber=pnumber; page[m].flag=1;//調(diào)入主存后,標(biāo)志為置1 p[m]=m;//記錄主存中的頁號 m++; } cout<<"輸入主存塊號(輸入少于或者等于"<<i<<"個數(shù)據(jù),若塊號數(shù)為-1,則結(jié)束輸入):"; cin>>pnumber; cin.ignore();}//while cout<<"輸入指令性質(zhì)(1-修改,0-不需要,其他-結(jié)束程序運行)和邏輯地址\n" <<"邏輯地址最大能支持2的16次方-1=65535。\n"; cout<<"輸入指令性質(zhì):"; cin>>write; cin.ignore(); cout<<"輸入邏輯地址:"; cin>>laddress; cin.ignore(); while(write==0||write==1) { command(laddress,write);//將輸入的邏輯地址轉(zhuǎn)換成物理地址 cout<<"輸入指令性質(zhì):"; cin>>write; cin.ignore(); if(write!=0&&write!=1)break; cout<<"輸入邏輯地址:"; cin>>laddress; cin.ignore(); }//while}//main/*中斷處理函數(shù),采用先進(jìn)先出的頁面調(diào)度算法*/voidpage_interrupt(intlnumber){intj; cout<<"發(fā)生缺頁中斷"<<lnumber<<endl; j=p[head]; p[head]=lnumber; head=(head+1)%m; if(page[j].write==1) cout<<"將頁"<<j<<"寫回磁盤第"<<page[j].dnumber<<"塊!\n"; page[j].flag=0; page[lnumber].pnumber=page[j].pnumber; page[lnumber].flag=1; page[lnumber].write=0; cout<<"淘汰主存塊"<<page[j].pnumber<<"中的頁"<<j<<",從磁盤第" <<page[lnumber].dnumber<<"塊中調(diào)入頁"<<lnumber<<endl;}/*地址轉(zhuǎn)換函數(shù),將邏輯地址轉(zhuǎn)換成物理地址,如果要查找的頁不在主存當(dāng)中則產(chǎn)生缺頁中斷*/voidcommand(unsignedladdress,intwrite){unsignedpaddress,ad,pnumber; intlnumber;kk: lnumber=laddress>>10;//取邏輯地址高6位,頁號 ad=laddress&0x3ff;//頁內(nèi)地址 cout<<"該邏輯地址的頁號為:"<<lnumber<<"頁內(nèi)地址為:"<<ad<<endl; if(lnumber>=page_length) {//頁號大于頁表的長度,則無效頁號 cout<<"該頁不存在!\n"; return; } if(page[lnumber].flag==1){//頁號為lnumber在內(nèi)存當(dāng)中 pnumber=page[lnumber].pnumber; paddress=pnumber<<10|ad; cout<<"邏輯地址是:"<<laddress<<"對應(yīng)物理地址是:"<<paddress<<endl; if(write==1)//該頁被修改過 page[lnumber].write=1; } else {//頁號為lnumber不在內(nèi)存當(dāng)中,則產(chǎn)生缺頁中斷 page_interrupt(lnumber); gotokk; }}//command頁式存儲管理OPT,LRU實驗報告一、實驗?zāi)康模赫莆辗猪撌酱鎯芾淼幕靖拍詈蛯崿F(xiàn)方法。要求編寫一個模擬的分頁式管理程序,并能對分頁式存儲的頁面置換算法進(jìn)行編寫和計算各個算法的缺頁率。二、程序設(shè)計:首先創(chuàng)建頁面鏈指針數(shù)據(jù)結(jié)構(gòu),并設(shè)計頁面映像表,采用數(shù)組的方法給定頁面映像。申請緩沖區(qū),將一個進(jìn)程的邏輯地址空間劃分成若干個大小相等的部分,每一部分稱做頁面或頁。每頁都有一個編號,叫做頁號,頁號從0開始依次編排,如0,1,2……。設(shè)置等大小的內(nèi)存塊。初始狀態(tài):將數(shù)據(jù)文件的第一個頁面裝入到該緩沖區(qū)的第0塊。設(shè)計頁面置換算法,這里分別采用最佳頁面置換算法OPT和最近最久未使用置換算法LRU,并分別計算它們的缺頁率,以比較它們的優(yōu)劣。三、算法說明:執(zhí)行程序時,當(dāng)主存沒有可用頁面時,為了選擇淘汰主存中的哪一頁面,騰出1個空閑塊以便存放新調(diào)入的頁面。淘汰哪個頁面的首要問題是選擇何種置換算法。該程序采用人工的方法選擇,依置換策略選擇一個可置換的頁,并計算它們的缺頁率以便比較。/*分頁式管理實驗-源程序*/#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>#defineN16#definenum5/*進(jìn)程分配物理塊數(shù)目*/intA[N]={1,2,3,4,5,6,7,8,5,2,3,2,7,8,1,4};/*頁表映像*/typedefstructpage{ intaddress;/*頁面地址*/ structpage*next;}page;structpage*head,*run,*rear;voidjccreat()/*進(jìn)程分配物理塊*/{ inti=1; page*p,*q; head=(page*)malloc(sizeof(page)); p=head; for(i=1;i<=num;i++) { q=(page*)malloc(sizeof(page)); p->next=q; q->address=0; q->next=NULL; p=q; } rear=p;}intsearch(intn){ page*p; inti=0; p=head; while(p->next) { if(p->next->address==n) { printf("Getitatthepage%d\n",i+1); run=p; return1; } p=p->next; i++; } return0;}voidchangeOPT(intn,intposition){ inti; inttotal=0; intflag=1; intdistance[num]; intMAX; intorder=0; page*p,*q; p=head->next; q=head->next; for(i=0;i<num;i++) distance[i]=100; i=0; while(p) { if(p->address==0) { flag=0;break; } p=p->next; i++; } if(!flag) { p->address=n; printf("Changethepage%d\n",i+1); } else { while(q) { for(i=position;i<N;i++) { if(q->address==A[i]) distance[total]=i-position;} total++; q=q->next; } MAX=distance[0]; for(i=0;i<num;i++) { if(distance[i]>MAX) { MAX=distance[i]; order=i; } } printf("Changethepage%d\n",order+1); i=0; while(p) { if(i==order) p->address=n; i++; p=p->next; } } }voidchangeLRU(intn){ inti=0; intflag=1; page*p,*delect; p=head->next; while(p) { if(p->address==0) { flag=0; p->address=n; printf("Changethepage%d\n",i+1); break; } p=p->next; i++; } if(flag) { delect=head->next; head->next=delect->next; printf("Delectfromthehead,andaddnewtotheend.\n"); delect->address=n; rear->next=delect; rear=delect; rear->next=NUL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論