欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      北郵操作系統(tǒng)第二次實(shí)驗(yàn)[模版]

      時(shí)間:2019-05-14 14:11:09下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《北郵操作系統(tǒng)第二次實(shí)驗(yàn)[模版]》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《北郵操作系統(tǒng)第二次實(shí)驗(yàn)[模版]》。

      第一篇:北郵操作系統(tǒng)第二次實(shí)驗(yàn)[模版]

      北京郵電大學(xué)操作系統(tǒng)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告

      班號:2011211314姓名:oneseven學(xué)號:

      實(shí)驗(yàn)日期: 2013.12.16 實(shí)驗(yàn)名稱: 操作系統(tǒng)實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?/p>

      通過模擬實(shí)現(xiàn)內(nèi)存分配的伙伴算法和請求頁式存儲管理的幾種基本頁面置換算法,了解存儲技術(shù)的特點(diǎn)。掌握虛擬存儲請求頁式存儲管理中幾種基本頁面置換算法的基本思想和實(shí)現(xiàn)過程,并比較它們的效率。

      二、實(shí)驗(yàn)內(nèi)容

      1.實(shí)現(xiàn)一個(gè)內(nèi)存管理的伙伴算法,實(shí)現(xiàn)內(nèi)存塊申請時(shí)的分配和釋放后的回收。

      實(shí)驗(yàn)準(zhǔn)備

      用隨機(jī)函數(shù)仿真進(jìn)程進(jìn)行內(nèi)存申請,并且以較為隨機(jī)的次序進(jìn)行釋放。對其碎片進(jìn)行統(tǒng)計(jì),當(dāng)申請分配內(nèi)存失敗時(shí)區(qū)分實(shí)際空間不足和由于碎片而不能滿足。

      2.設(shè)計(jì)一個(gè)虛擬存儲區(qū)和內(nèi)存工作區(qū),并使用下述算法計(jì)算訪問命中率。

      1)最佳置換算法(Optimal)

      2)先進(jìn)先出法(Fisrt In First Out)

      3)最近最久未使用(Least Recently Used)4)最不經(jīng)常使用法(Least Frequently Used)

      其中,命中率=1-頁面失效次數(shù)/頁地址流長度。試對上述算法的性能加以較各:頁面?zhèn)€數(shù)和命中率間的關(guān)系;同樣情況下的命中率比較。

      實(shí)驗(yàn)準(zhǔn)備

      本實(shí)驗(yàn)中主要的流程:首先用srand()和rand()函數(shù)定義和產(chǎn)生指令序列,然后將指令序列變換成相應(yīng)的頁地址流,并針對不同的算法計(jì)算出相應(yīng)的命中率。

      實(shí)驗(yàn)可先從一個(gè)具體的例子出發(fā)。

      (1)通過隨機(jī)數(shù)產(chǎn)生一個(gè)指令序列,共2048條指令。指令的地址按下述原則生成: A:50%的指令是順序執(zhí)行的

      B:25%的指令是均勻分布在前地址部分 C:25%的指令是均勻分布在后地址部分 具體的實(shí)施方法是:

      A:在[0,1023]的指令地址之間隨機(jī)選取一起點(diǎn)m B:順序執(zhí)行一條指令,即執(zhí)行地址為m+1的指令

      C:在前地址[0,m+1]中隨機(jī)選取一條指令并執(zhí)行,該指令的地址為m’ D:順序執(zhí)行一條指令,其地址為m’+1 E:在后地址[m’+2,2047]中隨機(jī)選取一條指令并執(zhí)行 F:重復(fù)步驟A-E,直到2048次指令(2)將指令序列變換為頁地址流 設(shè):頁面大小為4K;

      用戶內(nèi)存容量4頁到32頁; 用戶虛存容量為32K。

      在用戶虛存中,按每K存放64條指令排列虛存地址,即2048條指令在虛存中的存放方式為:

      第 0 條-第 63 條指令為第0頁(對應(yīng)虛存地址為[0,63])第64條-第127條指令為第1頁(對應(yīng)虛存地址為[64,127])

      ………………………………

      -1- 第1984條-第2047條指令為第31頁(對應(yīng)虛存地址為[1984,2047])按以上方式,用戶指令可組成32頁。

      以此為基礎(chǔ),給出較為一般的情形:仿真內(nèi)存容量和虛存容量參數(shù)變化時(shí)的情形。

      3.實(shí)現(xiàn)內(nèi)存的slab分配器:

      其基本思想是:一次向內(nèi)核獲取整數(shù)頁,slab根據(jù)數(shù)據(jù)結(jié)構(gòu)的大小進(jìn)行劃分為一個(gè)個(gè)小的數(shù)據(jù)結(jié)構(gòu),當(dāng)需要時(shí)直接從該鏈表上摘取一個(gè)返回應(yīng)用程序,當(dāng)應(yīng)用程序釋放時(shí),而非真正釋放,只需要該空間放回到鏈表中,當(dāng)分散的一頁多塊又聚集一頁時(shí),又會拼成一頁,同時(shí)判斷slab空閑的頁數(shù),如果空閑頁超過一定的頁數(shù),就會向系統(tǒng)釋放一定的頁數(shù)。一個(gè)slab分配器只能管理一個(gè)指定大小的數(shù)據(jù)結(jié)構(gòu)分配。

      三、項(xiàng)目要求及分析

      3.1實(shí)現(xiàn)一個(gè)內(nèi)存管理的伙伴算法,實(shí)現(xiàn)內(nèi)存塊申請時(shí)的分配和釋放后的回收。假設(shè)系統(tǒng)的可利用內(nèi)存空間容量為2m個(gè)字(地址從0到2m-1),則在開始運(yùn)行時(shí),整個(gè)內(nèi)存區(qū)是一個(gè)大小為2m的空閑塊,在運(yùn)行了一段時(shí)間之后,被分隔成若干占用塊和空閑塊。為了在分配時(shí)查找方便起見,我們將所有大小相同的空閑塊建于一張子表中。每個(gè)子表是一個(gè)雙重鏈表,這樣的鏈表可能有m+1個(gè),將這m+1個(gè)表頭指針用向量結(jié)構(gòu)組織成一個(gè)表,這就是伙伴系統(tǒng)中的可利用空間表,如圖所示:

      分配算法:

      當(dāng)用戶提出大小為n的內(nèi)存請求時(shí),首先在可利用表上尋找結(jié)點(diǎn)大小與n相匹配的子表,若此子表非空,則將子表中任意一個(gè)結(jié)點(diǎn)分配之即可;若此子表為空,則需從結(jié)點(diǎn)更大的非空子表中去查找,直至找到一個(gè)空閑塊,則將其中一部分分配給用戶,而將剩余部分插入相應(yīng)的子表中。

      若2k-1 < n ≤ 2k-1,又第k+1個(gè)子表不空,則只要?jiǎng)h除此鏈表中第一個(gè)結(jié)點(diǎn)并分配給用戶即可;若 2k-2 < n ≤ 2k-1-1,此時(shí)由于結(jié)點(diǎn)大小為2k-1 的子表為空,則需從結(jié)點(diǎn)大小為2k 的子表中取出一塊,將其中一半分配給用戶,剩余的一半作為一個(gè)新結(jié)點(diǎn)插入在結(jié)點(diǎn)大小為2k-1的子表中,若2k-i-1 < n ≤ 2k-i-1(i為小于是的整數(shù)),并且所有結(jié)點(diǎn)小于2k的子表均為空,則同樣需從結(jié)點(diǎn)大小為2k的子表中取出一塊,將其中2k-i的一小部分分配給用戶,剩余部分分割成若干個(gè)結(jié)點(diǎn)分別插入在結(jié)點(diǎn)大小為2k-1、2k-

      2、…、2k-i的子表中?;厥账惴ǎ?/p>

      在用戶釋放不再使用的占用塊時(shí),系統(tǒng)需將這新的空閑塊插入到可利用空間表中去。這里,同樣有一個(gè)地址相鄰的空閑塊歸并成大塊的問題。但是在伙伴系統(tǒng)中僅考慮互為“伙伴”的兩個(gè)空閑塊的歸并。

      何謂“伙伴”?如前所述,在分配時(shí)經(jīng)常需要將一個(gè)大的空閑塊分裂成兩個(gè)大小相等的存

      -2- 儲區(qū),這兩個(gè)由同一大塊分裂出來的小塊就稱之“互為伙伴”。例如:假設(shè)p為大小為pow(2,k)的空閑塊的初始地址,且p MOD pow(2,k+1)=0,則初始地址為p和p+pow(2,k)的兩個(gè)空閑塊互為伙伴。在伙伴系統(tǒng)中回收空閑塊時(shí),只當(dāng)其伙伴為空閑塊時(shí)才歸并成大塊。也就是說,若有兩個(gè)空閑塊,即使大小相同且地址相鄰,但不是由同一大塊分裂出來的,也不歸并在一起。

      由此,在回收空閑塊時(shí),應(yīng)首先判別其伙伴是否為空閑塊,若否,則只要將釋放的空閑塊簡單插入在相應(yīng)子表中即可;若是,則需在相應(yīng)子表中找到其伙伴并刪除之,然后再判別合并后的空閑塊的伙伴是否是空閑塊。依此重復(fù),直到歸并所得空閑塊的伙伴不是空閑塊時(shí),再插入到相應(yīng)的子表中去。

      3.2.設(shè)計(jì)一個(gè)虛擬存儲區(qū)和內(nèi)存工作區(qū),并使用下述算法計(jì)算訪問命中率。

      頁式虛擬存儲器實(shí)現(xiàn)的一個(gè)難點(diǎn)是設(shè)計(jì)頁面調(diào)度(置換)算法,即將新頁面調(diào)入內(nèi)存時(shí),如果內(nèi)存中所有的物理頁都已經(jīng)分配出去,就要按某種策略來廢棄某個(gè)頁面,將其所占據(jù)的物理頁釋放出來,供新頁面使用。頁面替換算法主要用于如下幾個(gè)地方:

      (1)虛擬存儲器中,主存頁面(或程序段)的替換。

      (2)Cache中的塊替換。

      (3)虛擬存儲器的快慢表中,快表的替換。

      (4)虛擬存儲器中,用戶基地址寄存器的替換。

      在虛擬存儲器中常用的頁面替換算法有如下幾種:

      (1)最優(yōu)替換算法,即OPT算法(OPTimal replacement algorithm)。上面介紹的幾種頁面替換算法主要是以主存儲器中頁面調(diào)度情況的歷史信息為依據(jù)的,它假設(shè)將來主存儲器中的頁面調(diào)度情況與過去一段時(shí)間內(nèi)主存儲器中的頁面調(diào)度情況是相同的。顯然,這種假設(shè)不總是正確的。最好的算法應(yīng)該是選擇將來最久不被訪問的頁面作為被替換的頁面,這種替換算法的命中率一定是最高的,它就是最優(yōu)替換算法。

      要實(shí)現(xiàn)OPT算法,唯一的辦法是讓程序先執(zhí)行一遍,記錄下實(shí)際的頁地址流情況。根據(jù)這個(gè)頁地址流才能找出當(dāng)前要被替換的頁面。顯然,這樣做是不現(xiàn)實(shí)的。因此,OPT算法只是一種理想化的算法,然而,它也是一種很有用的算法。實(shí)際上,經(jīng)常把這種算法用來作為評價(jià)其它頁面替換算法好壞的標(biāo)準(zhǔn)。在其它條件相同的情況下,哪一種頁面替換算法的命中率與OPT算法最接近,那么,它就是一種比較好的頁面替換算法。(2)先進(jìn)先出算法,即FIFO算法(First-In First-Out algorithm)。這種算法選擇最先調(diào)入主存儲器的頁面作為被替換的頁面。它的優(yōu)點(diǎn)是比較容易實(shí)現(xiàn),能夠利用主存儲器中頁面調(diào)度情況的歷史信息,但是,沒有反映程序的局部性。因?yàn)樽钕日{(diào)入主存的頁面,很可能也是經(jīng)常要使用的頁面。

      (3)最久沒有使用算法,即LRU算法(Least Recently Used algorithm)。這種算法把近期最久沒有被訪問過的頁面作為被替換的頁面。它把LFU算法中要記錄數(shù)量上的“多”與“少”簡化成判斷“有”與“無”,因此,實(shí)現(xiàn)起來比較容易。

      (4)近期最少使用算法,即LFU算法(Least Frequently Used algorithm)。這種算法選擇近期最少訪問的頁面作為被替換的頁面。顯然,這是一種非常合理的算法,因?yàn)榈侥壳盀橹棺钌偈褂玫捻撁?,很可能也是將來最少訪問的頁面。該算法既充分利用了主存中頁面調(diào)度情況的歷史信息,又正確反映了程序的局部性。但是,這種算法實(shí)現(xiàn)起來非常困難,它要為每個(gè)頁面設(shè)置一個(gè)很長的計(jì)數(shù)器,并且要選擇一個(gè)固定的時(shí)鐘為每個(gè)計(jì)數(shù)器定時(shí)計(jì)數(shù)。在選擇被替換頁面時(shí),要從所有計(jì)數(shù)器中找出一個(gè)計(jì)數(shù)值最大的計(jì)數(shù)器。因此,通常采用如下一種相 -3- 對比較簡單的方法。

      3.3實(shí)現(xiàn)內(nèi)存的slab分配器

      slab描述符和空閑對象管理部分成為 slab的管理部分,也可以稱為slab頭

      slab的頭可以放在slab自身,也可以放在 slab 之外。如果slab頭放在了slab 之外,那么用戶申請obj時(shí),需要首先訪問 slab頭,slab頭提供未使用free obj的指針

      然后再訪問這個(gè)free obj的地址。完成這項(xiàng)工作需要訪問2個(gè)頁塊。會帶來效率上的損失。slab頭始終位于slab 也存在問題,比如一個(gè)頁面只有4K,objsize = 2K,那么slab 頭在slab 上,就意味著,這個(gè)4K的頁面只能夠分配一個(gè)obj。造成了內(nèi)存的浪費(fèi)。

      如果 頁數(shù)太少,存放的 obj個(gè)數(shù)少,那么 增加管理開銷,同時(shí) 內(nèi)存使用率低,如果頁數(shù)太多對伙伴內(nèi)存系統(tǒng)不好,所以需要一定的策略妥協(xié)。

      這個(gè)妥協(xié)過程是有calculate_slab_order 這個(gè)函數(shù)來實(shí)現(xiàn)的。從 0階(即一頁)到kmalloc的最高階 KMALLOC_MAX_ORDER,挨個(gè)嘗試,由cache_estimate這個(gè)函數(shù)計(jì)算 如果選用order 階,那么能分配 多少個(gè) obj(num),剩余空間是多少(remainder)。所謂剩余空間,就是除去slab頭(如果有的話),除去 obj*num,剩下的邊角料空間是多少。需要分成兩種情況去計(jì)算,分成兩種情況的原因,很快就能看到 A)slab頭不在slab上,即 flag & CFLGS_OFF_SLAB == 1的時(shí)候 這種情況比較簡單,由于管理數(shù)據(jù)完全不在slab 上,size_tslab_size = PAGE_SIZE <

      換句話,slab頭的大小取決于obj的個(gè)數(shù),obj的個(gè)數(shù)取決于 slab頭的大小,四、具體實(shí)現(xiàn)

      4.1實(shí)現(xiàn)一個(gè)內(nèi)存管理的伙伴算法,實(shí)現(xiàn)內(nèi)存塊申請時(shí)的分配和釋放后的回收。

      程序:

      #include #include #include

      #define MIN_MOMORY_SIZE 536870912

      //隨機(jī)產(chǎn)生的最小內(nèi)存空間 #define WORKTIME 1500

      //系統(tǒng)工作時(shí)間

      #define MAX_REQ_SIZE 268435456

      //申請空閑內(nèi)存分配的最大容量:256M #define MIN_DUE 30

      //使用內(nèi)存塊的最短時(shí)間 #define MAX_DUE 90

      //使用內(nèi)存塊的最長時(shí)間 #define OCCUPY_INTERVAL 60

      //每次分配的最大間隔 #define USED 1

      //內(nèi)存塊被使用 #define UNUSED 0

      //內(nèi)存塊未被使用

      //內(nèi)存塊鏈表結(jié)點(diǎn)結(jié)構(gòu) typedefstructbuddy_node { int flag;

      //標(biāo)記空間是否被使用

      -4- int base;

      //本塊兒內(nèi)存的基地址

      int occupy;

      //實(shí)際使用空間大小

      int fragment;

      //碎片大小

      intduetime;

      //使用時(shí)間

      structbuddy_node *nextPtr;

      //指向下一個(gè)結(jié)點(diǎn) } Buddy, *BuddyPtr;

      IndexTable table[INDEX_SIZE];//使用哈希表管理伙伴系統(tǒng) int ready = 0;

      //需要分配內(nèi)存的時(shí)刻 intavailSpace;

      //可分配空間大小 inttotalFragment = 0;

      //總碎片大小

      //函數(shù):添加結(jié)點(diǎn)(形參為內(nèi)存塊結(jié)點(diǎn)的信息)

      void insert_node(inti, intinbase, int f, intocc, int frag, int d){ BuddyPtrnewnodePtr = NULL, prePtr = NULL, curPtr = NULL;

      newnodePtr =(BuddyPtr)malloc(sizeof(Buddy));//分配結(jié)點(diǎn) newnodePtr->base = inbase;newnodePtr->flag = f;newnodePtr->occupy = occ;newnodePtr->fragment = frag;newnodePtr->duetime = d;newnodePtr->nextPtr = NULL;

      if(table[i].headPtr == NULL)

      table[i].headPtr = newnodePtr;

      else { curPtr = table[i].headPtr;prePtr = NULL;

      //按地址順序插入內(nèi)存塊

      while(curPtr&&curPtr->base nextPtr;

      }

      if(prePtr == NULL){

      //插在最前 newnodePtr->nextPtr = curPtr;

      table[i].headPtr = newnodePtr;

      }

      else if(curPtr == NULL){

      //插在最后 prePtr->nextPtr = newnodePtr;

      }

      else {

      //插在中間 prePtr->nextPtr = newnodePtr;newnodePtr->nextPtr = curPtr;

      -5-

      }

      } }

      //函數(shù):刪除結(jié)點(diǎn)

      intdelete_node(inti, BuddyPtrdelPtr){ BuddyPtrprePtr = NULL, curPtr = NULL;intbasehold = delPtr->base;

      curPtr = table[i].headPtr;

      while(curPtr!= delPtr){ //尋找要?jiǎng)h除的結(jié)點(diǎn)的位置 prePtr = curPtr;curPtr = curPtr->nextPtr;

      }

      if(prePtr == NULL)

      //要?jiǎng)h除的結(jié)點(diǎn)在最前

      table[i].headPtr = curPtr->nextPtr;

      else

      //要?jiǎng)h除的結(jié)點(diǎn)不在鏈表的最前 prePtr->nextPtr = curPtr->nextPtr;

      free(curPtr);

      //釋放結(jié)點(diǎn)

      return basehold;

      //返回刪除的內(nèi)存塊結(jié)點(diǎn)的基地址 }

      //函數(shù):伙伴系統(tǒng)的分配算法 void buddy_allocate(inttime_slice){ inti, j, size, due;int state = 0;

      //分配狀態(tài):0為未分配,1為已分配 intinbase, basehold;BuddyPtrcurPtr = NULL;

      if(ready == time_slice){ //到達(dá)分配內(nèi)存的時(shí)刻 printf(“Time %d:”, time_slice);

      size = 1 + rand()% MAX_REQ_SIZE;

      //申請使用內(nèi)存的大小

      due = MIN_DUE + rand()%(MAX_DUEsize;curPtr->duetime = due + ready;

      //修改可系統(tǒng)分配空間和碎片大小 availSpace-= table[i].nodesize;totalFragment += curPtr->fragment;

      state = 1;//標(biāo)記已分配

      break;

      }

      //空閑塊的大小剛大于申請大小的2倍

      else { basehold = delete_node(i, curPtr);//刪除較大的空閑塊并保留其基地址 inbase = basehold + table[i].nodesize;

      j = i;

      //分割空閑塊

      do {

      j--;inbase-= table[j].nodesize;

      //設(shè)置要添加內(nèi)存塊結(jié)點(diǎn)的基地址 insert_node(j, inbase, UNUSED, 0, 0, 0);//添加較小的空閑塊 printf(“A block cut takes placen”);

      } while(table[j].nodesize / size > 1);

      //分配

      insert_node(j, basehold, USED, size, table[j].nodesizesize;

      state = 1;//標(biāo)記已分配

      }

      }

      //塊被占用,查看下一結(jié)點(diǎn)

      else curPtr = curPtr->nextPtr;

      }

      }

      } printf(“Allocated %d,Fragment %d,Due %dn”, size, totalFragment, ready+due);

      -7-

      }

      else if((availSpace< size)&&((availSpace + totalFragment)>= size))printf(“Allocation failed because of fragment!n”);

      else printf(“Allocation failed because of no enough unused space!n”);

      ready +=(1 + rand()% OCCUPY_INTERVAL);//下次需要分配內(nèi)存的時(shí)刻

      } }

      //函數(shù):伙伴系統(tǒng)的回收算法 void buddy_retrieve(inttime_slice){ inti, basehold, dif;int f = 0;intModnext=0;BuddyPtrcurPtr = NULL, todelPtr = NULL;

      //依次查找,并回收需要回收的塊

      for(i = 0;i< INDEX_SIZE;i ++){

      if(table[i].headPtr){ curPtr = table[i].headPtr;

      while(curPtr){

      if((curPtr->flag == USED)&&(curPtr->duetime == time_slice)){//需要回收

      //修改可系統(tǒng)分配空間和碎片大小 availSpace += table[i].nodesize;totalFragment-= curPtr->fragment;

      //回收為空閑塊 curPtr->flag = UNUSED;curPtr->occupy = 0;curPtr->fragment = 0;curPtr->duetime = 0;printf(“Time %d:Retrieve %d,Fragment %dn”, time_slice, table[i].nodesize, totalFragment);

      } curPtr = curPtr->nextPtr;

      }

      }

      }

      //合并空閑塊

      for(i = 0;i< INDEX_SIZE;i ++){

      if(table[i].headPtr){

      -8- curPtr = table[i].headPtr;

      while(curPtr&&curPtr->nextPtr){

      //將地址連續(xù)且都為空閑的塊合并后加入下一級的鏈表中

      if(curPtr->flag == UNUSED &&(curPtr->nextPtr)->flag == UNUSED){ dif =(curPtr->nextPtr)->base-curPtr->base;

      Modnext =((int)(curPtr->nextPtr->base))%(2*table[i].nodesize);

      if((dif == table[i].nodesize)&&(Modnext==0)){

      //刪除兩個(gè)結(jié)點(diǎn) todelPtr = curPtr;curPtr = curPtr->nextPtr;basehold = delete_node(i, todelPtr);todelPtr = curPtr;curPtr = curPtr->nextPtr;delete_node(i, todelPtr);insert_node(i+1, basehold, UNUSED, 0, 0, 0);//添加合并后的結(jié)點(diǎn) printf(“Two blocks mergen”);

      }

      else curPtr = curPtr->nextPtr;

      }

      else curPtr = curPtr->nextPtr;

      }

      }

      } }

      //函數(shù):伙伴系統(tǒng)的處理過程 void buddy_system(void){ inttime_slice = 0;

      //在每個(gè)時(shí)間片內(nèi)使用分配算法和回收算法

      for(;time_slice< WORKTIME;time_slice ++){ buddy_allocate(time_slice);

      //分配算法 buddy_retrieve(time_slice);

      //回收算法

      } }

      int main(intargc, char *argv[]){ intmemory_size;

      -9- ini_index();

      //初始化哈希索引表 srand(time(NULL));

      //設(shè)置隨機(jī)數(shù)種子

      //隨機(jī)產(chǎn)生需要管理的內(nèi)存大小:512M ~ 1G

      memory_size = MIN_MOMORY_SIZE + rand()% MIN_MOMORY_SIZE;printf(“The size of memory is:%dn”, memory_size);

      int_system(memory_size);

      //初始化伙伴系統(tǒng)

      buddy_system();

      //伙伴系統(tǒng)的處理過程

      printf(“Time %d:System execution stops and the spaces are all freed.n”, WORKTIME);

      free_system();

      //釋放所有結(jié)點(diǎn)

      system(“pause”);

      return 0;}

      4.2.設(shè)計(jì)一個(gè)虛擬存儲區(qū)和內(nèi)存工作區(qū),并使用下述算法計(jì)算訪問命中率。程序:

      #include #include #include #define TRUE 1 #define FALSE 0 #define INVALID-1 #define NUL 0 #define total_instruction 320 //指令流長 #define total_vp 32

      //虛頁長 #define clear_period 50

      //清零周期

      typedefstruct {

      intpn;

      //頁號 intpfn;

      // 面號

      int counter;

      // 一個(gè)周期內(nèi)訪問該頁面的次數(shù) int time;

      // time為訪問時(shí)間 }pl_type;pl_typepl[total_vp];//頁面結(jié)構(gòu)數(shù)組

      structpfc_struct{

      //頁面控制結(jié)構(gòu) intpn,pfn;structpfc_struct *next;};typedefstructpfc_structpfc_type;

      -10-

      pfc_typepfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;intdiseffect,a[total_instruction];int page[total_instruction], offset[total_instruction];/*

      Name: void Lprintf(void)

      Achieve: 格式控制 */ void Lprintf(void){ inti,j;printf(“|”);

      for(i = 1;i<=6;i++)

      {

      for(j = 1;j<=9;j++)printf(“-”);

      if(i!=6)printf(“+”);

      } printf(“|n”);

      } /*

      Name: void initialize(inttotal_pf)

      Achieve:初始化相關(guān)數(shù)據(jù)結(jié)構(gòu) */ void initialize(inttotal_pf){ inti;diseffect=0;

      for(i=0;i

      { pl[i].pn=i;pl[i].pfn=INVALID;

      //置頁面控制結(jié)構(gòu)中的頁號,頁面為空

      pl[i].counter=0;pl[i].time=-1;//頁面控制結(jié)構(gòu)中的訪問次數(shù)為0,時(shí)間為-1

      }

      for(i=1;i

      { pfc[i-1 ].next=&pfc[i];pfc[i-1].pfn=i-1;//建立pfc[i-1]和pfc[i]之間的連接

      }

      pfc[total_pf-1].next=NUL;pfc[total_pf-1].pfn=total_pf-1;

      freepf_head=&pfc[0];

      //頁面隊(duì)列的頭指針為pfc[0] } /*

      -11- Name:void FIFO(inttotal_pf)

      Achieve:先進(jìn)先出法(Fisrt In First Out)*/

      void FIFO(inttotal_pf){ inti,j;pfc_type *p;//中間變量

      initialize(total_pf);//初始化相關(guān)頁面控制用數(shù)據(jù)結(jié)構(gòu)

      busypf_head=busypf_tail=NULL;//忙頁面隊(duì)列頭,隊(duì)列尾鏈接

      for(i=0;i

      if(pl[page[i]].pfn==INVALID)

      //頁面失效

      {

      diseffect+=1;//失效次數(shù)

      if(freepf_head==NULL)//無空閑頁面

      {

      p=busypf_head->next;

      pl[busypf_head->pn].pfn=INVALID;

      freepf_head=busypf_head;//釋放忙頁面隊(duì)列的第一個(gè)頁面

      freepf_head->next=NULL;//表明還是缺頁*/

      busypf_head=p;

      }

      p=freepf_head->next;

      freepf_head->pn=page[i];

      pl[page[i]].pfn=freepf_head->pfn;

      freepf_head->next=NULL;//使busy的尾為null

      if(busypf_tail==NULL)

      {

      busypf_tail=busypf_head=freepf_head;

      }

      else

      {

      busypf_tail->next=freepf_head;

      busypf_tail=freepf_head;

      }

      freepf_head=p;

      } } printf(“%6.3f”,1-(float)diseffect/320);} /*

      Name: void LRU(inttotal_pf)

      Achieve: 最近最久未使用(Least Recently Used)*/

      -12- void LRU(inttotal_pf){ intmin,minj,i,j,present_time;//minj為最小值下標(biāo)

      initialize(total_pf);present_time=0;for(i=0;i

      if(pl[page[i]].pfn==INVALID)//頁面失效

      {

      diseffect++;

      if(freepf_head==NULL)//無空閑頁面

      {

      min=32767;//設(shè)置最大值

      for(j=0;j

      {

      if(min>pl[j].time&&pl[j].pfn!=INVALID)

      {

      min=pl[j].time;

      minj=j;

      }

      }

      freepf_head=&pfc[pl[minj].pfn];

      //空出一個(gè)單元

      pl[minj].pfn=INVALID;

      pl[minj].time=0;

      freepf_head->next=NULL;

      }

      pl[page[i]].pfn=freepf_head->pfn;//有空閑頁面,改為有效

      pl[page[i]].time=present_time;

      freepf_head=freepf_head->next;//減少一個(gè)free 頁面

      }

      else

      {

      pl[page[i]].time=present_time;//命中則增加該單元的訪問次數(shù)

      present_time++;

      } } printf(“%6.3f”,1-(float)diseffect/320);} /* Name:void OPT(inttotal_pf)

      Achieve:最佳置換算法(Optimal)*/ void OPT(inttotal_pf){

      -13- inti,j, max,maxpage,d,dist[total_vp];pfc_type *t;initialize(total_pf);for(i=0;i

      if(pl[page[i]].pfn==INVALID)

      /*頁面失效*/

      {

      diseffect++;

      if(freepf_head==NULL)

      /*無空閑頁面*/

      {

      for(j=0;j

      {

      if(pl[j].pfn!=INVALID)

      dist[j]=32767;

      else

      dist[j]=0;

      }

      for(j=0;j

      {

      if((pl[j].pfn!=INVALID)&&(dist[j]==32767))

      {

      dist[j]=j;

      }

      }

      max=0;

      for(j=0;j

      if(max

      {

      max=dist[j];

      maxpage=j;

      }

      freepf_head=&pfc[pl[maxpage].pfn];

      freepf_head->next=NULL;

      pl[maxpage].pfn=INVALID;

      }

      pl[page[i]].pfn=freepf_head->pfn;

      freepf_head=freepf_head->next;

      } } printf(“%6.3f”,1-(float)diseffect/320);} /*

      Name: vodi LFU(inttotal_pf)

      Achieve:最不經(jīng)常使用法(Least Frequently Used)

      -14- */ void LFU(inttotal_pf)

      { inti,j,min,minpage;pfc_type *t;initialize(total_pf);for(i=0;i

      if(pl[page[i]].pfn==INVALID)//頁面失效

      {

      diseffect++;

      if(freepf_head==NULL)//無空閑頁面

      {

      min=32767;

      //獲取counter的使用用頻率最小的內(nèi)存

      for(j=0;j

      {

      if(min>pl[j].counter&&pl[j].pfn!=INVALID)

      {

      min=pl[j].counter;

      minpage=j;

      }

      }

      freepf_head=&pfc[pl[minpage].pfn];

      pl[minpage].pfn=INVALID;

      pl[minpage].counter=0;

      freepf_head->next=NULL;

      }

      pl[page[i]].pfn=freepf_head->pfn;//有空閑頁面,改為有效

      pl[page[i]].counter++;

      freepf_head=freepf_head->next;//減少一個(gè)free 頁面

      }

      else

      {

      pl[page[i]].counter;

      pl[page[i]].counter=pl[page[i]].counter+1;

      } } printf(“%6.3f”,1-(float)diseffect/320);}

      int main(int){

      intS,i;

      -15- srand((int)getpid());

      for(i=0;i

      {

      S=(int)rand()%320;

      a[i]=S;

      //任選一指令訪問點(diǎn)

      a[i+1]=a[i]+1;//順序執(zhí)行一條指令

      a[i+2]=(int)rand()%a[i+1];//執(zhí)行前地址指令m'

      a[i+3]=a[i+2]+1;//順序執(zhí)行一條指令

      a[i+4]=(int)rand()%(319-a[i+2]-1)+a[i+2]+2;//執(zhí)行后地址指令

      } for(i=0;i

      {

      page[i]=a[i]/10;

      offset[i]=a[i]%10;}

      printf(“FrametOPTtFIFOtLRUtLFU n”);for(i=4;i<=32;i++)//用戶內(nèi)存工作區(qū)從4個(gè)頁面到32個(gè)頁面

      {

      printf(“%dt”,i);OPT(i);printf(“t”);

      FIFO(i);printf(“t”);

      LRU(i);

      printf(“t”);

      LFU(i);

      printf(“n”);} system(“pause”);return 0;} 4.3 實(shí)現(xiàn)內(nèi)存的slab分配器 程序: #include #include #include using namespace std;-16-

      -17-

      }

      五、調(diào)試運(yùn)行結(jié)果

      -18- 5.1 實(shí)現(xiàn)一個(gè)內(nèi)存管理的伙伴算法

      5.2設(shè)計(jì)一個(gè)虛擬存儲區(qū)和內(nèi)存工作區(qū),并使用下述算法計(jì)算訪問命中率。

      -19-

      5.3 實(shí)現(xiàn)內(nèi)存的slab分配器

      六、所遇問題及解決方法

      1.在寫第一個(gè)程序的時(shí)候,對樹的合并在之前的學(xué)習(xí)中,有比較多的學(xué)習(xí),數(shù)據(jù)結(jié)構(gòu)中此程序有詳細(xì)的介紹,因此在編寫這個(gè)程序的時(shí)候,比較順利的完成了要求。但要求中需要產(chǎn)生一些隨機(jī)的數(shù)據(jù),重新對隨機(jī)仿真函數(shù)進(jìn)行回顧,最后較為順利的完成了程序。2.第二個(gè)程序,要求隨機(jī)產(chǎn)生一些數(shù)據(jù),對srand()和rand()函數(shù)定義和產(chǎn)生指令序列,在進(jìn)一步的學(xué)習(xí)中,完成了這些函數(shù),仿真內(nèi)存容量和虛存容量參數(shù)變化時(shí)的情形,對此不太熟悉,四個(gè)算法對要求較高,在完成算法的學(xué)習(xí)后,完成了程序。

      3.第三個(gè)程序因不太理解其要求,上網(wǎng)搜尋了一些代碼,但對其最后的結(jié)果依然沒有得出,為此詢問了同學(xué),但不知是否正確。

      -20-

      第二篇:北郵微波仿真實(shí)驗(yàn)1

      微波仿真實(shí)驗(yàn)報(bào)告

      學(xué) 院:電子工程學(xué)院 班 級 學(xué) 號: 姓 名: 班內(nèi)序號:

      微波仿真課作業(yè)1

      1.了解ADS Schematic的使用和設(shè)置

      2.在Schematic里,分別仿真理想電容20pF和理想電感5nH,仿真頻率為(1Hz-100GHz),觀察仿真結(jié)果,并分析原因。20pF理想電容

      仿真圖

      原因分析:史密斯原圖下半部分是容性,隨頻率增加,電容由開路點(diǎn)變到短路點(diǎn),通高頻,阻低頻。5nH理想電感

      仿真圖

      原因分析:史密斯原圖上半部分是感性,隨頻率增加,電容由短路點(diǎn)變到開路點(diǎn),阻高頻,通低頻。

      3. Linecalc的使用

      a)計(jì)算中心頻率1GHz時(shí),F(xiàn)R4基片的50Ω微帶線的寬度

      寬度為:2.9112mm b)計(jì)算中心頻率1GHz時(shí),F(xiàn)R4基片的50Ω共面波導(dǎo)(CPW)的橫截面尺寸(中心信號線寬度與接地板之間的距離)

      橫截面尺寸為:W=171.355mm,G=5mm,L=63.5mm

      4.基于FR4基板,仿真一段特性阻抗為50Ω四分之一波長開路CPW線的性能參數(shù),中心工作頻率為1GHz。仿真頻段(500MHz-3GHz),觀察Smith圓圖變化,分析原因。

      仿真圖

      仿真圖分析: 1、1GHz時(shí),為四分之一波長,開路阻抗變換后變?yōu)槎搪罚?GHz時(shí)為二分之一波長,所以仍為開路;

      2、由于損耗,因此反射系數(shù)變小,所以等反射系數(shù)圓的半徑也在變小。

      5.基于FR4基板,仿真一段特性阻抗為50Ω四分之一波長短路CPW線的性能參數(shù),中心工作頻率為1GHz。仿真頻段(500MHz-3GHz),觀察Smith圓圖變化,分別求出500MHz和2GHz的輸入阻抗,分析變化原因。

      仿真圖

      仿真圖分析: 1、1GHz時(shí),為四分之一波長,短路阻抗變換后變?yōu)殚_路,2GHz時(shí)為二分之一波長,所以仍為短路;

      2、由于損耗,因此反射系數(shù)變小,所以等反射系數(shù)圓的半徑也在變小。分別求出500MHz和2GHz的輸入阻抗: 500MHz:Z0*(0.003+j0.001)2GHz:Z0*(0.012-j0.005)

      6.分別用理想傳輸線和在FR4基片上的微帶傳輸線,仿真一段特性阻抗為50Ω四分之一波長開路線的性能參數(shù),工作頻率為1GHz。仿真頻段(500MHz-3GHz),觀察Smith圓圖變化,分別求出500MHz和2GHz的輸入阻抗,分析變化原因。

      仿真圖

      分別求出500MHz和2GHz的輸入阻抗: 微帶線

      500MHz:Z0*(0.003-j0.992)2GHz:Z0*(32.830-j1.603)理想傳輸線

      500MHz:Z0*(1.000E-10-j1.000)2GHz:Z0*(2.000E10-j2.000E5)

      分析:因?yàn)橄鄬τ诶硐雮鬏斁€,微帶線有損耗產(chǎn)生誤差,反射系數(shù)一直變小。

      擴(kuò)展仿真頻率(500MHz-50GHz),分析曲線變化原因。

      分析:對于理想傳輸線,反射系數(shù)不變,而對于微帶線,由于存在損耗,反射系數(shù)會一直變小,因此其反射系數(shù)圓的半徑在一直變小。

      7.分別用理想傳輸線和在FR4基片上的微帶傳輸線,仿真一段特性阻抗為50Ω四分之一波長短路線的性能參數(shù),工作頻率為1GHz。仿真頻段(500MHz-3GHz),觀察Smith圓圖變化,分別求出500MHz和2GHz的輸入阻抗,分析變化原因。

      仿真圖

      分別求出500MHz和2GHz的輸入阻抗: 微帶線

      500MHz:Z0*(0.009+j1.003)2GHz:Z0*(0.031+j0.002)理想傳輸線

      500MHz:Z0*(5.551E-17+j1.000)2GHz:Z0*(8.284E-18-j1.000E-5)

      分析:因?yàn)橄鄬τ诶硐雮鬏斁€,微帶線有損耗產(chǎn)生誤差,反射系數(shù)一直變小。

      擴(kuò)展仿真頻率(500MHz-50GHz),分析曲線變化原因。

      分析:對于理想傳輸線,反射系數(shù)不變,而對于微帶線,由于存在損耗,反射系數(shù)會一直變小,因此其反射系數(shù)圓的半徑在一直變小。

      8.分別用理想傳輸線和在FR4基片上的微帶傳輸線,仿真一段特性阻抗為50Ω二分之一波長開路線的性能參數(shù),工作頻率為1GHz。仿真頻段(500MHz-3GHz),觀察Smith圓圖變化,分別求出500MHz和2GHz的輸入阻抗,分析變化原因。

      仿真圖

      分別求出500MHz和2GHz的輸入阻抗: 微帶線

      500MHz:Z0*(0.016+j0.006)2GHz:Z0*(16.430-j0.798)理想傳輸線

      500MHz:Z0*(5.000E-11-j6.123E-17)2GHz:Z0*(2.000E10-j2.000E5)

      分析:因?yàn)橄鄬τ诶硐雮鬏斁€,微帶線有損耗產(chǎn)生誤差,反射系數(shù)一直變小。擴(kuò)展仿真頻率(500MHz-50GHz),分析曲線變化原因。

      分析:對于理想傳輸線,反射系數(shù)不變,而對于微帶線,由于存在損耗,反射系數(shù)會一直變小,因此其反射系數(shù)圓的半徑在一直變小。

      9.分別用理想傳輸線和在FR4基片上的微帶傳輸線,仿真一段特性阻抗為50Ω二分之一波長短路線的性能參數(shù),工作頻率為1GHz。仿真頻段(500MHz-3GHz),觀察Smith圓圖變化,分別求出500MHz和2GHz的輸入阻抗,分析變化原因。

      仿真圖

      分別求出500MHz和2GHz的輸入阻抗: 微帶線

      500MHz:Z0*(55.044-j19.301)2GHz:Z0*(0.061+j0.004)理想傳輸線

      500MHz:Z0*(-1.000+j1.633E16)2GHz:Z0*(8.284E-18-j1.000E-5)

      分析:因?yàn)橄鄬τ诶硐雮鬏斁€,微帶線有損耗產(chǎn)生誤差,反射系數(shù)一直變小。

      擴(kuò)展仿真頻率(500MHz-50GHz),分析曲線變化原因。

      分析:對于理想傳輸線,反射系數(shù)不變,而對于微帶線,由于存在損耗,反射系數(shù)會一直變小,因此其反射系數(shù)圓的半徑在一直變小。微波測量實(shí)驗(yàn)中測得的幾個(gè)史密斯圓圖 四分之一開路微帶線

      四分之一短路微帶線

      二分之一開路微帶線

      二分之一短路微帶線

      微波仿真課作業(yè)2

      1. 用一段理想四分之一波長阻抗變換器匹配10歐姆到50歐姆,仿真S參數(shù),給出-20dB帶寬特性,工作頻率為1GHz。計(jì)算得,22.36歐姆

      仿真S參數(shù)

      計(jì)算分析:由圖計(jì)算-20dB帶寬為 1071-929=142MHz;且如仿真圖所示,在1GHz處回波損耗最低,實(shí)現(xiàn)阻抗匹配。2. 用一段FR4基片上四分之一波長阻抗變換器匹配10歐姆到50歐姆,仿真S參數(shù),給出-20dB帶寬特性,工作頻率為1GHz,比較分析題1和題2的結(jié)果。

      仿真S參數(shù)

      由圖計(jì)算-20dB帶寬為1065-921=144MHz。

      比較分析題1和題2的結(jié)果

      分析,微帶線與理想傳輸線之間有一定的誤差:

      1、如圖所示可以看出微帶線情況下,回波損耗最低點(diǎn)稍微偏離1GHz;

      2、-20dB帶寬為144MHz大于理想傳輸線時(shí)的142MHz; 3、1GHz阻抗匹配時(shí),微帶線時(shí)的回波損耗大于理想傳輸線。

      3. 設(shè)計(jì)一個(gè)3節(jié)二項(xiàng)式匹配變換器,用于匹配10歐姆到50歐姆的傳輸線,中心頻率是1GHz,該電路在FR4基片上用微帶線實(shí)現(xiàn),設(shè)計(jì)這個(gè)匹配變換器并計(jì)算

      ?m?0.1的帶寬,給出回波損耗和插入損耗與頻率的關(guān)系曲線,比較分析題2和題3的結(jié)果。

      根據(jù)所學(xué)的理論知識,先依題意算出三節(jié)匹配微帶線的阻抗值,然后通過LineCalc計(jì)算出相應(yīng)微帶線的長和寬,修改電路圖中MLIN的相關(guān)參數(shù)。

      Z1=40.89Ω W=4.198480mm L=40.404500mm Z2=22.36Ω W=9.620970mm L=38.833700mm Z3=12.23Ω W=19.83080mm L=37.648400mm

      插入損耗

      ?m?0.1的帶寬,即為-20dB帶寬,由圖計(jì)算得1325-680=645MHz;

      比較分析題2和題3的結(jié)果,3節(jié)二項(xiàng)式匹配變換器匹配誤差更大:

      1、如圖所示可以看出3節(jié)二項(xiàng)式匹配變換器匹配時(shí)回波損耗最低點(diǎn)明顯偏離1GHz;

      2、-20dB帶寬為645MHz大于微帶線情況;

      3、但1GHz阻抗匹配時(shí),3節(jié)二項(xiàng)式匹配變換器時(shí)的回波損耗小于微帶線情況。

      4. 題3中,若用3節(jié)切比雪夫匹配變換器實(shí)現(xiàn),比較同樣情況下的帶寬,回波損耗和插入損耗與頻率的關(guān)系曲線,比較分析題3和題4結(jié)果。

      根據(jù)所學(xué)的知識可以計(jì)算出切比雪夫變換器匹配的三個(gè)微帶線的阻抗,然后通過LineCalc計(jì)算出相應(yīng)微帶線的長和寬,修改電路圖中MLIN的相關(guān)參數(shù)。Z1=35.94Ω

      W=4.948710mm L=40.0910mm Z2=22.11Ω

      W=9.6519mm L=38.8278mm Z3=13.55Ω

      W=17.57710mm L=37.8241mm

      仿真圖

      插入損耗

      ?m?0.1的帶寬,即為-20dB帶寬,由圖計(jì)算得1485-534=951MHz;

      比較分析題3和題4的結(jié)果,即二項(xiàng)式匹配變換器與切比雪夫匹配變換器:

      1、切比雪夫匹配變換器的帶寬顯著增加;

      2、切比雪夫匹配變換器回波損耗具有等波紋特性;

      3、兩者的插入損耗差別不明顯。

      5. 對于一個(gè)負(fù)載阻抗ZL=60-j80歐姆,利用Smith Chart Utility功能,分別設(shè)計(jì)并聯(lián)短路單枝節(jié)和并聯(lián)開路單枝節(jié)匹配,并將Smith Chart Utility給出的匹配結(jié)果在Schematic中仿真,給出1-3GHz的回波損耗與頻率的關(guān)系曲線,并給出?m?0.1的帶寬。并聯(lián)短路單枝節(jié)

      計(jì)算并聯(lián)短路單枝節(jié)-20dB帶寬:1053-952=101MHz

      并聯(lián)開路單枝節(jié)

      計(jì)算并聯(lián)開路單枝節(jié)-20dB帶寬:1023-975=48MHz

      6. 并聯(lián)雙枝節(jié)匹配電路,并聯(lián)雙枝節(jié)為開路,枝節(jié)之間相距λ/8,中心工作頻率為2GHz,利用理想傳輸線,給出1-3GHz的回波損耗與頻率的關(guān)系曲線,并給出?m?0.1的帶寬。并聯(lián)雙枝節(jié), 枝節(jié)之間相距λ/8,中心工作頻率為2GHz

      仿真

      如圖在2GHz匹配

      計(jì)算-20dB帶寬:2012-1988=24MHz

      第三篇:操作系統(tǒng)實(shí)驗(yàn)

      操作系統(tǒng)實(shí)驗(yàn)

      實(shí)驗(yàn)一

      Linux常用命令實(shí)驗(yàn)

      一.目的和要求

      本實(shí)驗(yàn)的目的是熟悉Linux操作系統(tǒng)的命令接口、圖形接口和程序接口;了解Linux操作系統(tǒng)的啟動(dòng)過程;了解Linux操作系統(tǒng)的目錄結(jié)構(gòu);用vi編輯器編寫簡單的C語言程序,并用gcc編譯器編譯、運(yùn)行。

      二.實(shí)驗(yàn)內(nèi)容

      1、實(shí)現(xiàn)開機(jī)、登錄、退出與關(guān)機(jī):

      (1)如果以root用戶登錄,則命令窗口的提示符為#;如果以普通用戶登錄,則命令窗口的提示符為$;登陸用戶名:user 密碼:123456(2)修改口令(修改口令操作不做):成功進(jìn)入系統(tǒng)后,在命令提示符后輸入“passwd”并鍵入回車鍵

      (3)退出帳號:命令方式下:logout(4)關(guān)機(jī)或重啟:

      命令方式下:halt或reboot 窗口方式下:“桌面”->“注銷”

      2、掌握的基本常用命令列表

      (1)關(guān)于目錄的操作命令:cd、ls、mkdir、rmdir、pwd等;

      (2)關(guān)于文件的操作命令:cat、find、man/help、vi/vim、cp、rm、mv、dd、du、df、chmod、ln等;

      (3)關(guān)于進(jìn)程管理的操作命令:ps、kill、top、free 等;

      (4)關(guān)于系統(tǒng)管理的操作命令:whoami、passwd、adduser/useradd、addgroup、userdel、groupdel、su、who、Ctrl+Alt+Fn(n=1、2、3、4、5、6)(在X-Window界面下切換到字符界面,重新登錄,Ctrl+Alt+F7返回圖形界面)、Alt+Fn(n=1、2、3、4、5、6)(在6個(gè)虛擬終端之間切換)等;

      (5)安裝和卸載文件系統(tǒng):mount、umount等;

      (6)顯示有關(guān)計(jì)算機(jī)系統(tǒng)信息的命令:uname(顯示操作系統(tǒng)的名稱)、uname –n(顯示系統(tǒng)域名)、uname –p(顯示系統(tǒng)的CPU名稱)

      (7)其它命令:time、date、cal 等。

      3、閱讀/etc/inittab 文本文件,思考問題:如果要求啟動(dòng)Linux系統(tǒng)之后進(jìn)入字符 1

      操作系統(tǒng)實(shí)驗(yàn)

      界面,應(yīng)如何修改/etc/inittab文件?用戶應(yīng)具有什么權(quán)限?

      4、切換到不同的虛擬終端,登錄到Linux系統(tǒng)

      5、vi 編輯器的使用(1)進(jìn)入和退出vi(2)利用文本插入方式建立一個(gè)文件(3)在新建的文本文件上移動(dòng)光標(biāo)。

      (4)對文本文件執(zhí)行刪除、復(fù)原、修改、替換操作。

      6、熟悉gcc編譯環(huán)境:編寫一個(gè)C語言程序myfile1.c,求1~100中偶數(shù)的和,編譯并運(yùn)行。

      (1)編譯 gcc myfile1.c 運(yùn)行./a.out(2)編譯 gcc –o myfile1 myfile1.c

      運(yùn)行./myfile1

      7、編寫一個(gè)C語言程序myfile2.c,顯示字符串“Hello, Linux!”,并將其反向輸出。

      8、熟悉Linux系統(tǒng)的目錄結(jié)構(gòu),使用命令或者編寫C語言程序報(bào)告Linux內(nèi)核的行為。

      報(bào)告以下內(nèi)容: ? ? CPU類型和型號 ? ? 內(nèi)核版本

      ? ? 從系統(tǒng)最后一次啟動(dòng)以來經(jīng)歷了多長時(shí)間?形式為dd:hh:mm:ss ? ? 當(dāng)前配置的內(nèi)存數(shù)量 ? ? 當(dāng)前可用內(nèi)存數(shù)量

      ? ? 自系統(tǒng)啟動(dòng)以來,發(fā)生的所有的中斷的次數(shù) ? ? 從系統(tǒng)啟動(dòng)開始創(chuàng)建的進(jìn)程數(shù) ? ? 內(nèi)核執(zhí)行的上下文轉(zhuǎn)換的次數(shù)

      三.實(shí)驗(yàn)提示

      1、Linux安裝

      (1)安裝前的準(zhǔn)備工作 <1>.基本的硬件配置

      由于安裝涉及到各種硬件的設(shè)置,所以在安裝前必須了解機(jī)器各種硬件的型號,硬盤的使用情況,內(nèi)存的大小,鼠標(biāo)的類型及接口,聲卡,網(wǎng)卡,顯卡,顯示器的型號。

      操作系統(tǒng)實(shí)驗(yàn)

      <2>.有關(guān)網(wǎng)絡(luò)的信息

      IP地址,掩碼,網(wǎng)關(guān)IP地址,域名服務(wù)器IP地址,域名,宿主機(jī)名。<3>.安裝方式的選擇

      ?從CD-ROM安裝 ?從FTP站點(diǎn)安裝 ?從NFS服務(wù)器安裝 ?從硬盤安裝 硬盤分區(qū)

      硬盤空間必須和計(jì)算機(jī)上安裝的其他操作系統(tǒng)所使用的硬盤空間分開。特別要注意,如果硬盤空間很大,切忌不能將Linux裝在8G以后。安裝Red Hat Linux至少需要兩個(gè)硬盤分區(qū):一個(gè)或多個(gè)“Linux native”類型的分區(qū),一個(gè)“Linux swap”類型的分區(qū)

      分區(qū)命名設(shè)計(jì)Linux 通過字母和數(shù)字的組合來表示硬盤分區(qū)。

      ? 前兩個(gè)字母-----分區(qū)名的前兩個(gè)字母表明分區(qū)所在設(shè)備的類型。hd指IDE硬盤,sd指SCSI硬盤。

      ? 下一個(gè)字母-----分區(qū)在哪個(gè)設(shè)備。例如,/dev/hda(第一個(gè)IDE硬盤),/dev/sdb(第二個(gè)SCSI硬盤)。

      ? 數(shù)字-----代表分區(qū)。前四個(gè)分區(qū)(主分區(qū)或擴(kuò)展分區(qū))用數(shù)字1到4表示。邏輯分區(qū)從5開始。例如,? 若IDE硬盤在安裝Linux前安裝了Windows系統(tǒng)并劃分了C盤和邏輯分區(qū)D盤,那么D盤就是/dev/hda5, /dev/hda5表示第一個(gè)硬盤的第一個(gè)邏輯分區(qū)。

      對于Linux初學(xué)者來說,為Linux分兩個(gè)區(qū)(根分區(qū)和交換分區(qū))是比較簡單方便的。

      一個(gè)交換分區(qū):用來支持虛擬內(nèi)存。一個(gè)根分區(qū):根分區(qū)是/(根目錄)的所在地,其中包含啟動(dòng)系統(tǒng)所需的文件和系統(tǒng)配置文件。這個(gè)分區(qū)要足夠大。

      一個(gè)/usr分區(qū): /usr是Linux系統(tǒng)許多軟件所在的地方。一個(gè)/home分區(qū):這是用戶的主目錄所在地。(2)開始安裝

      注意點(diǎn):我們一般選擇的是圖形化的安裝方式。它的主要部分是相同的。

      ? 可能會在安裝完成后第一次啟動(dòng)時(shí)才進(jìn)行網(wǎng)卡的檢測。

      操作系統(tǒng)實(shí)驗(yàn)

      ? 在選擇圖形化界面時(shí),有兩種方式gnome和kde;它們各有優(yōu)缺點(diǎn)。? 系統(tǒng)會讓你選擇啟動(dòng)時(shí)是圖形化方式,還是字符方式。請大家選擇字符方式。

      ? 在選擇防火墻的時(shí)候,在安裝時(shí)請先不用防火墻。

      ? 圖形化安裝方式下,不能選擇啟動(dòng)時(shí)的開啟服務(wù)??稍谙到y(tǒng)安裝完成后用setup命令進(jìn)行修改。

      2、進(jìn)入Linux(1)登錄

      第一次登錄系統(tǒng),必須作為“root”登錄。這個(gè)帳號對系統(tǒng)的一切都有完全的訪問權(quán)限。

      在login:提示符處輸入root。按[Enter](或[Return]鍵).會出現(xiàn)Password提示。輸入口令,應(yīng)該看到類似以下的信息:

      [root@localhost /root] #(2)退出

      輸入[Ctrl]-[D](3)帳號和口令 <1>.帳號

      創(chuàng)建新的帳號有幾種方法,最基本的方法:useradd命令.[root @ localhost / root] # useradd

      Tom

      [root @ localhost / root] # <2>.口令

      passwd 命令可以用來: ? 為新創(chuàng)建的用戶分配口令。? 修改已存在的用戶的口令。? 修改登錄的用戶的口令。此時(shí)必須以root登錄。如:

      [root @ localhost / root]# passwd Tom

      New UNIX password:

      Retype new UNIX password:

      passwd:all authentication tokens updated successfully 4

      操作系統(tǒng)實(shí)驗(yàn)

      [root @ localhost / root]#

      用新帳戶登錄:

      Red Hat Linux release 7.1(Manhattan)

      Kernel 2.0.34 on an i586

      login: Tom

      Password:

      [Tom@ localhost Tom] $ <3>.su 命令

      用su,當(dāng)前的登錄段能變成root(或其他用戶)的登錄段。如:

      [Tom@ localhost Tom] $ su

      Password:

      [root@ localhost Tom] # 也可以用su變成其他用戶。這時(shí),必須作為root運(yùn)行su,給出用戶名。<4>.關(guān)閉系統(tǒng)

      關(guān)閉系統(tǒng)時(shí),必須告訴所有的進(jìn)程結(jié)束運(yùn)行,使用shutdown命令。且只能由root 運(yùn)行,格式是:

      shutdown

      -h-------在關(guān)閉完成后(Halt)停止系統(tǒng)。

      -r--------在關(guān)閉完成后重啟動(dòng)(Reboot)系統(tǒng)。

      3、vi 編輯器的使用(1)進(jìn)入和退出vi <1>進(jìn)入vi 在系統(tǒng)提示符($)下輸入命令vi和想要編輯(建立)的文件名(如example),便可進(jìn)入vi。

      <2>退出vi 在命令方式下可有幾種方法退出vi編輯器:

      :wq 把編輯緩沖區(qū)的內(nèi)容寫到正在編輯的文件中,退出編輯器,回到Linux shell下。

      :ZZ 僅當(dāng)作過修改時(shí)才將緩沖區(qū)內(nèi)容寫到文件上。

      操作系統(tǒng)實(shí)驗(yàn)

      :x 與 :ZZ 相同。

      :q!強(qiáng)行退出vi。感嘆號(!)告訴vi,無條件退出,丟棄緩沖區(qū)內(nèi)容。這樣,先前對該文件所做的修改或輸入都被拋棄。(2)新建文件

      <1>在Linux提示符$之后,輸入命令 :vi myfile,然后按〈Enter〉鍵。<2>輸入插入命令i(屏幕上看不到字符i)。<3>然后,輸入以下文本行: To the only book tht I, For mang year you have been my favourite book <4>發(fā)現(xiàn)這兩行有錯(cuò),進(jìn)行改正: 按〈Esc〉鍵,從插入方式回到命令方式。按光標(biāo)上移鍵,使光標(biāo)移到第一行。

      按光標(biāo)左移鍵,使光標(biāo)移到“tht”的第二個(gè)“t”處。

      輸入i(這是插入命令),然后輸入a。該行變成如下形式: To the only book that I, 按光標(biāo)右移鍵,使光標(biāo)移到“I”上。

      我們想在“I”之后輸入一個(gè)空格和單詞“l(fā)ike”。為此,輸入附加命令“a”。結(jié)果屏幕顯示為:

      To the only book that a I,沒有出現(xiàn)預(yù)期的效果......原來是:我們先前使用了插入命令i,至今并未用〈Esc〉鍵返回命令方式。所以,輸入的所有字符都作為輸入文本予以顯示。<5>按〈Esc〉鍵,返回命令方式。

      利用x命令刪除錯(cuò)誤字符。然后,進(jìn)入插入方式,輸入正確字符。<6>最后輸入如下所示的文本: To the only book that I like, For many year you have been my favourite book I liveeyou all the time and could not have picked much better.<7>將編輯的文本文件存盤。(利用“:wq”命令,或者“:x”命令)<8>重新進(jìn)入vi編輯程序,編輯上面的文件。(如:$ vi myfile)

      操作系統(tǒng)實(shí)驗(yàn)

      <9>在屏幕上見到myfile文件的內(nèi)容。在屏幕底邊一行顯示出該文件的名稱、行數(shù)和字符個(gè)數(shù):“myfile”4 lines,130 characters 它仍然有錯(cuò),需進(jìn)一步修改。

      <10>將光標(biāo)移到第二行的year的r處。輸入a命令,添加字符s。

      <11>按〈Esc〉,回到命令方式。輸入命令10〈Space〉,光標(biāo)移至何處?---光標(biāo)右移10個(gè)字符位置。

      <12>利用取代命令r將liveeyou改為live you。

      <13>將光標(biāo)移至第三行。輸入新行命令O(大寫字母),屏幕上有什么變化?---光標(biāo)移至上一行(新加空行)的開頭。<14>輸入新行的內(nèi)容: We've been through much together 此時(shí),vi處于哪種工作方式? <15>按〈Esc〉,回到命令方式。將光標(biāo)移到第四行的live的v字母處。利用替換命令s將v改為k。

      <16>在第四行的you之后添加單詞very much。<17>修改后的文本是以下內(nèi)容: To the only book that I like, For many years you have been my favourite book We've been through much together I like you very much all the the time and could not have picked much better.將該文件存盤,退出vi。

      <18>重新編輯該文件。并將光標(biāo)移到最后一行的have的v字母處,使用d$命令將v至行尾的字符都刪除。

      <19>現(xiàn)在想恢復(fù)17步的原狀,怎么辦?(使用復(fù)原命令u)

      <20>使用dd命令刪除第一行;將光標(biāo)移至through的u字母處,使用C(大寫字母)命令進(jìn)行修改,隨便輸入一串字符。將光標(biāo)移到下一行的開頭,執(zhí)行5x命令;然后執(zhí)行重復(fù)命令(.)。

      <21>屏幕內(nèi)容亂了!現(xiàn)在想恢復(fù)17步的原狀,怎么辦?(不寫盤,強(qiáng)行退出vi)

      4、Linux內(nèi)核

      操作系統(tǒng)實(shí)驗(yàn)

      Linux 內(nèi)核源程序目錄結(jié)構(gòu)(/usr/src/redhat/SOURCES)如下: /document :保存幫助文檔

      /arch

      :包含多個(gè)子目錄,每個(gè)存放與特定體系結(jié)構(gòu)相關(guān)的代碼。如arch/i386(intel 386 體系結(jié)構(gòu)),arch/sparc,arch/alpha等。每個(gè)子目錄下至少又包含三個(gè)子目錄:

      ? kernel(存放支持該體系結(jié)構(gòu)特有的諸如信號處理和SMP之類特征的實(shí)現(xiàn));

      ? ? lib(存放該體系結(jié)構(gòu)特有的諸如Strlen和memcpy之類的高效率函數(shù)); mm(存放該體系結(jié)構(gòu)特有的諸如內(nèi)存管理程序的實(shí)現(xiàn))

      /drivers :該目錄占內(nèi)核代碼一半以上,包括顯卡、網(wǎng)卡、SCSI適配器、軟驅(qū)、PCI設(shè)備和其他外設(shè)的軟件驅(qū)動(dòng)程序。/fs:包含linux支持的文件系統(tǒng)。

      /include :包含源程序中大部分包含(.h)文件。/init: 包含main.c,保存大部分協(xié)調(diào)內(nèi)核初始化的代碼。/ipc:實(shí)現(xiàn)了SYSTEM V的進(jìn)程間通訊IPC。

      /kernel:包含了linux最重要的部分:實(shí)現(xiàn)平臺獨(dú)立的基本功能,包括Sched.c、fork.c、exit.c。

      /lib :存放字符串和內(nèi)存操作函數(shù)。

      /mm:包含與體系結(jié)構(gòu)無關(guān)的內(nèi)存管理代碼。/net:包含了linux應(yīng)用的網(wǎng)絡(luò)協(xié)議代碼。/script :包含用來配置內(nèi)核的腳本。

      5、報(bào)告Linux狀態(tài)(/proc 中的信息)

      在終端窗口提示符下,可以使用cat命令顯示相關(guān)文件的內(nèi)容,如: cat /proc/cpuinfo 通過編寫程序,顯示相關(guān)文件內(nèi)容:應(yīng)用文件操作,將相關(guān) /proc中的文件讀入到緩沖區(qū)中,可用fgets()函數(shù)按行取文件中數(shù)據(jù),通過strstr()檢驗(yàn)包含所需數(shù)據(jù)字符串。如存在,用printf()函數(shù)輸出。(1)CPU類型和型號

      /proc/cpuinfo文件提供了有關(guān)CPU的多種信息,這些信息是從內(nèi)核里對CPU的測試代碼中得到的。文件列出了CPU個(gè)數(shù):processor;CPU制造商:vendor_id;CPU架構(gòu):model;CPU名稱:model name;CPU時(shí)鐘頻率:cpu MHz;CPU緩存大?。?8

      操作系統(tǒng)實(shí)驗(yàn)

      cache size;CPU包含的指令集:flags。文件還包含了以bogomips表示的處理機(jī)速度,而且如果檢測到CPU的多種特性或bug,文件還會包含相應(yīng)的標(biāo)志。該文件的格式為:文件由多行構(gòu)成,每行包括一個(gè)域名稱、一個(gè)冒號和一個(gè)值。

      通過fopen()函數(shù)打開包含CPU類型和型號的文件cpuinfo,把內(nèi)容讀入字符數(shù)組char_all,然后通過strstr()函數(shù)查找CPU類型和型號所在的位置,用strncpy()函數(shù)拷貝到字符數(shù)組中,通過printf()標(biāo)準(zhǔn)輸出函數(shù)輸出。(2)存儲器信息

      /proc/meminfo 文件給出了內(nèi)存狀態(tài)的信息。它顯示出系統(tǒng)中物理內(nèi)存的總量:MenTotal;未使用的物理內(nèi)存的總量:MemFree;用做文件緩沖的物理內(nèi)存的總量:buffers;用做緩沖的物理內(nèi)存的總量:Cached;活躍的內(nèi)存大?。篈ctive;不活躍的內(nèi)存大?。篒nactive;交換分區(qū)的總量:SwapTotal;交換分區(qū)未使用的總量:SwapFree等信息。(3)內(nèi)核版本

      文件/proc/version顯示了正在運(yùn)行的內(nèi)核版本、編譯此內(nèi)核的gcc版本以及該內(nèi)核的編譯時(shí)間。

      (4)從系統(tǒng)最后一次啟動(dòng)以來的時(shí)間,形式為dd:hh:mm:ss uptime讀出的時(shí)間是以秒計(jì)的,所以根據(jù)要求要轉(zhuǎn)換為天:小時(shí):分鐘:秒。1天為86400秒,1小時(shí)為3600秒,1分鐘為60秒。通過兩個(gè)運(yùn)算符就可以很好的轉(zhuǎn)換:“/”做除法取整運(yùn)算,“%”做除法取余運(yùn)算。舉例:86800秒,(86800/86400)=1(天),(86800%86400)=400(余400秒);400秒,(400/3600)=0小時(shí),(400%3600)=400(余400秒);400秒,(400/60)=6分鐘,(400%60)=40(余40秒)。所以最后結(jié)果為:1:0:6:40。(5)其他信息的讀取 從/proc/stat中讀取信息

      ? CPU花費(fèi)在用戶態(tài)、系統(tǒng)態(tài)和空閑態(tài)的時(shí)間——cpu ? 自系統(tǒng)啟動(dòng)以來,發(fā)生的所有的中斷的次數(shù)——intr ? 內(nèi)核執(zhí)行的上下文轉(zhuǎn)換的次數(shù)----ctxt ? 系統(tǒng)最后啟動(dòng)的時(shí)間----btime ? 從系統(tǒng)啟動(dòng)開始創(chuàng)建的進(jìn)程數(shù)----processes

      6、Linux的目錄結(jié)構(gòu)

      操作系統(tǒng)實(shí)驗(yàn)

      對于Linux來講它的樹型結(jié)構(gòu)與Windows不同,Windows可以有多個(gè)分區(qū),每個(gè)分區(qū)都有根,但Linux 只有一個(gè)根,其他的所有文件、目錄或硬盤分區(qū)、軟盤、光盤、U 盤都必須mount(掛載)到Linux 根下的一個(gè)目錄中才能被訪問和使用。下面列出根目錄下的常見系統(tǒng)目錄及其用途。

      /bin

      bin是binary的縮寫。這個(gè)目錄沿襲了UNIX系統(tǒng)的結(jié)構(gòu),存放著使用者最經(jīng)常使用的命令。例如cp、ls、cat,等等。

      /boot

      這里存放的是啟動(dòng)Linux時(shí)使用的一些核心文件。

      /dev

      dev是device(設(shè)備)的縮寫。這個(gè)目錄下是所有Linux的外部設(shè)備,其功能類似DOS下的.sys和Win下的.vxd。在Linux中設(shè)備和文件是用同種方法訪問的。例如:/dev/hda代表第一個(gè)物理IDE硬盤。

      /etc

      這個(gè)目錄用來存放系統(tǒng)管理所需要的配置文件(例如配置文件inittab)和子目錄。

      /home

      用戶的主目錄,比如說有個(gè)用戶叫wang,那他的主目錄就是/home/wang,也可以用~wang表示。

      /lib

      這個(gè)目錄里存放著系統(tǒng)最基本的動(dòng)態(tài)鏈接共享庫,其作用類似于Windows里的.dll文件。幾乎所有的應(yīng)用程序都需要用到這些共享庫。

      /lost+found

      這個(gè)目錄平時(shí)是空的,當(dāng)系統(tǒng)不正常關(guān)機(jī)后,這里就成了一些無家可歸的文件的避難所,有點(diǎn)類似于DOS下的.chk文件。

      /media

      用來掛載光盤、U盤等文件系統(tǒng)的目錄。/misc

      用來掛載NFS 共享目錄。

      /mnt

      用于掛載其他硬盤分區(qū)系統(tǒng)的目錄(如掛載xp分區(qū))。

      /opt

      某些第三方軟件商軟件的安裝地點(diǎn),如國產(chǎn)紅旗office就存放于此。/proc

      這個(gè)目錄是一個(gè)虛擬的目錄,它是系統(tǒng)內(nèi)存的映射,可以通過直接訪問這個(gè)目錄來獲取系統(tǒng)信息。也就是說,這個(gè)目錄的內(nèi)容不在硬盤上而是在內(nèi)存里。

      /root

      系統(tǒng)管理員(也叫超級用戶)的主目錄。作為系統(tǒng)的擁有者,總要有些特權(quán),比如單獨(dú)擁有一個(gè)目錄。

      /sbin

      s就是Super User的意思,也就是說這里存放的是系統(tǒng)管理員使用的管理程序。

      /tmp

      這個(gè)目錄是用來存放一些臨時(shí)文件的地方。

      /usr

      這是最龐大的目錄,要用到的應(yīng)用程序和文件幾乎都存放在這個(gè)目錄 10

      操作系統(tǒng)實(shí)驗(yàn)

      下。其中包含以下子目錄:

      /usr/X11R6

      存放X-Window的目錄; /usr/bin

      存放著許多應(yīng)用程序;

      /usr/sbin

      給超級用戶使用的一些管理程序就放在這里;

      /usr/include

      Linux下開發(fā)和編譯應(yīng)用程序需要的頭文件,在這里查找; /usr/lib

      存放一些常用的動(dòng)態(tài)鏈接共享庫和靜態(tài)檔案庫;

      /usr/local

      這是提供給一般用戶的/usr目錄,在這里安裝軟件最適合; /usr/src

      Linux開放的源代碼就存在這個(gè)目錄。

      /var

      這個(gè)目錄中存放著那些不斷在擴(kuò)充著的東西,為了保持usr的相對穩(wěn)定,那些經(jīng)常被修改的目錄可以放在這個(gè)目錄下,實(shí)際上許多系統(tǒng)管理員都是這樣做的。另外,系統(tǒng)的日志文件就在/var/log目錄中。

      我們一般日常能經(jīng)常訪問的目錄有/home 目錄、/mnt目錄、/media 目錄、/usr 目錄。

      第四篇:操作系統(tǒng)實(shí)驗(yàn)總結(jié)

      操作系統(tǒng)實(shí)驗(yàn)總結(jié)

      學(xué)號:

      姓名:

      班級:

      在本學(xué)期的計(jì)算機(jī)操作系統(tǒng)這門課學(xué)習(xí)當(dāng)中,為了更好的了解操作系統(tǒng)相關(guān)知識,我們通過OS Lab平臺做了幾個(gè)實(shí)驗(yàn)。在實(shí)驗(yàn)室的過程中,我對課堂上學(xué)到的操作系統(tǒng)的一些知識有了新的認(rèn)識,同時(shí)還接觸到了操作系統(tǒng)的相關(guān)源代碼,而且通過實(shí)驗(yàn)的運(yùn)行效果了解了平時(shí)我們看不到的操作系統(tǒng)的一些狀況,收獲還是很大的。下面先簡要?dú)w納在實(shí)驗(yàn)課上我做的幾個(gè)實(shí)驗(yàn)的主要實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)步驟:

      實(shí)驗(yàn)一:實(shí)驗(yàn)環(huán)境的使用

      實(shí)驗(yàn)步驟:

      1.1啟動(dòng)OS Lab

      OS Lab每次啟動(dòng)后都會首先彈出一個(gè)用于注冊用戶信息的對話框(可以選擇對話框標(biāo)題欄上的“幫助”按鈕獲得關(guān)于此對話框的幫助信息)。在此對話框中填入學(xué)號和姓名后,點(diǎn)擊“確定”按鈕完成本次注冊。觀察OS Lab主窗口的布局。OS Lab主要由下面的若干元素組成:菜單欄、工具欄以及??吭谧髠?cè)和底部的各種工具窗口,余下的區(qū)域用來放置編輯器窗口。

      1.2 學(xué)習(xí)OS Lab的基本使用方法

      練習(xí)使用OS Lab編寫一個(gè)Windows控制臺應(yīng)用程序,熟悉OS Lab的基本使用方法(主要包括新建項(xiàng)目、生成項(xiàng)目、調(diào)試項(xiàng)目等)。

      實(shí)驗(yàn)二:操作系統(tǒng)的啟動(dòng)

      實(shí)驗(yàn)步驟:

      2.1 準(zhǔn)備實(shí)驗(yàn)

      啟動(dòng)OS Lab,新建一個(gè)EOS Kernel項(xiàng)目,在“項(xiàng)目管理器”窗口中打開boot文件夾中的boot.asm和loader.asm兩個(gè)匯編文件,按F7生成項(xiàng)目,生成完成后,使用Windows資源管理器打開項(xiàng)目文件夾中的Debug文件夾。找到由boot.asm生成的軟盤引導(dǎo)扇區(qū)程序boot.bin文件,找到由loader.asm生成的loader程序loader.bin文件,記錄下此文件的大小1566字節(jié)。

      2.2 調(diào)試EOS操作系統(tǒng)的啟動(dòng)過程

      2.2.1 使用Bochs做為遠(yuǎn)程目標(biāo)機(jī)

      將調(diào)試時(shí)使用的遠(yuǎn)程目標(biāo)機(jī)修改為Bochs

      2.2.2 調(diào)試BIOS程序

      按F5啟動(dòng)調(diào)試,Bochs在CPU要執(zhí)行的第一條指令(即BIOS的第一條指令)處中斷,從Console窗口顯示的內(nèi)容中,我們可以獲得關(guān)于BIOS第一條指令的相關(guān)信息,然后查看CPU在沒有執(zhí)行任何指令之前主要寄存器中的數(shù)據(jù),以及內(nèi)存中的數(shù)據(jù)。

      2.2.3 調(diào)試軟盤引導(dǎo)扇區(qū)程序

      練習(xí)從0x7c00處調(diào)試軟盤引導(dǎo)扇區(qū)程序;查看boot.lst文件;調(diào)試過程——軟盤引導(dǎo)扇區(qū)程序的主要任務(wù)就是將軟盤中的loader.bin文件加載到物理內(nèi)存的0x1000處,然后跳轉(zhuǎn)到loader程序的第一條指令(物理地址0x1000處的指令)繼續(xù)執(zhí)行l(wèi)oader程序;

      2.2.4 調(diào)試加載程序

      調(diào)試過程——Loader程序的主要任務(wù)是將操作系統(tǒng)內(nèi)核(kernel.dll文件)加載到內(nèi)存中,然后讓CPU進(jìn)入保護(hù)模式并且啟用分頁機(jī)制,最后進(jìn)入操作系統(tǒng)內(nèi)核開始執(zhí)行(跳轉(zhuǎn)到kernel.dll的入口點(diǎn)執(zhí)行);

      2.2.5 調(diào)試內(nèi)核

      2.2.6 EOS啟動(dòng)后的狀態(tài)和行為

      查看EOS的版本號;查看EOS啟動(dòng)后的進(jìn)程和線程的信息;查看有應(yīng)用程序運(yùn)行時(shí)進(jìn)程和線程的信息

      實(shí)驗(yàn)三:進(jìn)程的創(chuàng)建

      實(shí)驗(yàn)步驟:

      3.1 準(zhǔn)備實(shí)驗(yàn)

      啟動(dòng)OS Lab;新建一個(gè)EOS Kernel項(xiàng)目;分別使用Debug配置和Release配置生成此項(xiàng)目,從而在該項(xiàng)目文件夾中生成完全版本的EOS SDK文件夾;新建一個(gè)EOS應(yīng)用程序項(xiàng)目;使用在第3步生成的SDK文件夾覆蓋EOS應(yīng)用程序項(xiàng)目文件夾中的SDK文件夾

      3.2 練習(xí)使用控制臺命令創(chuàng)建EOS應(yīng)用程序的進(jìn)程

      3.3 練習(xí)通過編程的方式讓應(yīng)用程序創(chuàng)建另一個(gè)應(yīng)用程序的進(jìn)程

      使用OS Lab打開本實(shí)驗(yàn)文件夾中的NewProc.c文件;查看應(yīng)用程序創(chuàng)建另一個(gè)應(yīng)用程序的進(jìn)程的執(zhí)行結(jié)果。

      3.4 調(diào)試CreateProcess函數(shù)

      調(diào)試CreateProcess函數(shù)創(chuàng)建進(jìn)程的過程;分別驗(yàn)證應(yīng)用程序和操作系統(tǒng)內(nèi)核在進(jìn)程的4G虛擬地址空間中所處的位置;

      3.5 調(diào)試PsCreateProcess函數(shù)

      調(diào)試PspCreateProcessEnvironment函數(shù);調(diào)試進(jìn)程控制塊的創(chuàng)建過程;調(diào)試初始化進(jìn)程控制塊中各個(gè)成員變量的過程。

      3.6 練習(xí)通過編程的方式創(chuàng)建應(yīng)用程序的多個(gè)進(jìn)程

      使用OS Lab打開本實(shí)驗(yàn)文件夾中的參考源代碼文件NewTwoProc.c,仔細(xì)閱讀此文件中的源代碼。使用NewTwoProc.c文件中的源代碼替換EOS應(yīng)用程序項(xiàng)目中EOSApp.c文件內(nèi)的源代碼,生成后啟動(dòng)調(diào)試,查看多個(gè)進(jìn)程并發(fā)執(zhí)行的結(jié)果。

      實(shí)驗(yàn)四:線程的狀態(tài)和轉(zhuǎn)換

      實(shí)驗(yàn)步驟:

      4.1 準(zhǔn)備實(shí)驗(yàn)

      啟動(dòng)OS Lab,新建一個(gè)EOS Kernel項(xiàng)目

      4.2 調(diào)試線程狀態(tài)的轉(zhuǎn)換過程

      查看一下loop命令執(zhí)行的效果;調(diào)試線程狀態(tài)轉(zhuǎn)換的過程;對斷點(diǎn)進(jìn)行一些調(diào)整。

      4.2.1 線程由阻塞狀態(tài)進(jìn)入就緒狀態(tài):

      將線程從等待隊(duì)列中移除;將線程的狀態(tài)由Waiting修改為Zero;將線程插入其優(yōu)先級對應(yīng)的就緒隊(duì)列的隊(duì)尾;將線程的狀態(tài)由Zero修改為Ready。

      4.2.2 線程由運(yùn)行狀態(tài)進(jìn)入就緒狀態(tài):

      線程中斷運(yùn)行,將線程中斷運(yùn)行時(shí)的上下文保存到線程控制塊中;如果處于運(yùn)行狀態(tài)的線程被更高優(yōu)先級的線程搶先,就需要將該線程插入其優(yōu)先級對應(yīng)的就緒隊(duì)列的隊(duì)首。(注意,如果處于運(yùn)行狀態(tài)的線程主動(dòng)讓出處理器,例如時(shí)間片用完,就需要將程插入其優(yōu)先級對應(yīng)的就緒隊(duì)列的隊(duì)尾);將線程的狀態(tài)由Running修改為Ready

      4.2.3 線程由就緒狀態(tài)進(jìn)入運(yùn)行狀態(tài):

      將線程從其優(yōu)先級對應(yīng)的就緒隊(duì)列中移除;將線程的狀態(tài)由Ready修改為Zero;將線程的狀態(tài)由Zero修改為Running;將線程的上下文從線程控制塊(TCB)復(fù)制到處理器的各個(gè)寄存器中,讓線程從上次停止運(yùn)行的位置繼續(xù)運(yùn)行。

      4.2.4 線程由運(yùn)行狀態(tài)進(jìn)入阻塞狀態(tài):

      將線程插入等待隊(duì)列的隊(duì)尾;將線程的狀態(tài)由Running修改為Waiting;將線程中斷執(zhí)行,并將處理器上下文保存到該線程的線程控制塊中。

      4.3 為線程增加掛起狀態(tài)

      觀察loop線程被掛起的情況:刪除之前添加的所有斷點(diǎn);按F5啟動(dòng)調(diào)試;待EOS啟動(dòng)完

      畢,在EOS控制臺中輸入命令“l(fā)oop”后按回車。此時(shí)可以看到loop線程的執(zhí)行計(jì)數(shù)在不停增長,說明loop線程正在執(zhí)行,記錄下loop線程的ID;按Ctrl+F2切換到控制臺2,輸入命令“suspend 31”(如果loop線程的ID是31)后按回車;按Ctrl+1切換回控制臺1,可以看到由于loop線程已經(jīng)成功被掛起,其執(zhí)行計(jì)數(shù)已經(jīng)停止增長了。

      在PsResumThread函數(shù)第119行需要添加的代碼的流程可以是:首先調(diào)用List Remove Entry函數(shù)將線程從掛起線程隊(duì)列中移除,然后調(diào)用PspReadyThread函數(shù)將線程恢復(fù)為就緒狀態(tài),最后調(diào)用PspThreadSchedule宏函數(shù)執(zhí)行線程調(diào)度,讓剛剛恢復(fù)的線程有機(jī)會執(zhí)行。

      實(shí)驗(yàn)過程:

      做實(shí)驗(yàn)時(shí),最開始并不是很了解OS Lab平臺的使用,即使對著老師給的實(shí)驗(yàn)教程做還是不怎么會,于是請教會做的同學(xué),通過同學(xué)的講解我知道了怎樣在OS Lab平臺上建立項(xiàng)目,怎樣更改路徑并找到項(xiàng)目的源文件等等基本操作。

      掌握對平臺的簡單應(yīng)用后,做后面的實(shí)驗(yàn)我是按照實(shí)驗(yàn)教程上的步驟一步步的實(shí)施,并且每次都認(rèn)真觀察相應(yīng)的運(yùn)行結(jié)果,每個(gè)實(shí)驗(yàn)都會建議我們學(xué)習(xí)實(shí)驗(yàn)教程前面的理論部分,我想如果對他的理論不熟悉,就算試驗(yàn)成功了我也不知道為什么,所以我一般在做實(shí)驗(yàn)前會對前面的理論部分進(jìn)行簡要的學(xué)習(xí)和熟悉。做實(shí)驗(yàn)的過程中,有時(shí)候按照實(shí)驗(yàn)教程上的步驟做平臺還是會出現(xiàn)一些錯(cuò)誤,比如做實(shí)驗(yàn)三到調(diào)試CreateProcess函數(shù)時(shí),出現(xiàn)的調(diào)試異常對話框中,本來是要點(diǎn)擊“是”的,但做到這里電腦總是會出現(xiàn)像死機(jī)一樣的狀況,關(guān)掉平臺重做到這里老是出現(xiàn)同樣的問題,最后換電腦也是這樣,然后我嘗試不按照實(shí)驗(yàn)步驟點(diǎn)擊“是”也不行,最后還是又還了電腦才做成功,問其他同學(xué)也有出現(xiàn)同樣的問題,我想可能是平臺和電腦上有什么地方有沖突吧。

      之后做試驗(yàn)是遇到問題我還是選擇多問同學(xué),畢竟每個(gè)人擅長的是不同的,有些問題這個(gè)同學(xué)會解決,有些問題則是那個(gè)同學(xué)才懂解決,通過互相交流和學(xué)習(xí),我們通過實(shí)驗(yàn)不僅鞏固了課堂上學(xué)到的相關(guān)知識,也對操作系統(tǒng)有了更深的了解。

      體會:

      其實(shí)做完實(shí)驗(yàn)我還是不能保證我對OS Lab這個(gè)平臺有很好的全面的了解,但是對一些基本操作及其快捷鍵我算是大致掌握了,通過這個(gè)平臺我也是認(rèn)識到了“沒有做不到的,只有想不到的”,我覺得創(chuàng)建這個(gè)平臺的人們真的是很了不起,這個(gè)平臺讓我們便動(dòng)手便了解了平時(shí)我們看不到的操作系統(tǒng)的相關(guān)知識。要做好實(shí)驗(yàn),得按照實(shí)驗(yàn)教程上面的內(nèi)容一步步落實(shí),要邊做變領(lǐng)悟相關(guān)原理及運(yùn)行結(jié)果的出現(xiàn)的原因,這樣我們才能在試驗(yàn)中學(xué)到更多、掌握更多。其次,也遇到問題我們自然是要先自己思考,通過不同的嘗試來解決,之后不能解決的我們要多向老師同學(xué)請教,通過互相交流得來的知識也是會讓我們難忘的。

      第五篇:《操作系統(tǒng)》實(shí)驗(yàn)指導(dǎo)書

      《操作系統(tǒng)》實(shí)驗(yàn)指導(dǎo)書

      (適用于計(jì)科、網(wǎng)絡(luò)工程、軟件工程、信計(jì)專業(yè))

      計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院

      2010-5

      目錄

      前言..................................................................................................................................................3 實(shí)驗(yàn)

      一、進(jìn)程管理與進(jìn)程同步.......................................................................................................4 實(shí)驗(yàn)

      二、存儲器管理.......................................................................................................................6 實(shí)驗(yàn)

      三、磁盤調(diào)度算法的設(shè)計(jì).......................................................................................................7 實(shí)驗(yàn)

      四、文件系統(tǒng)原理與模擬實(shí)現(xiàn)...............................................................................................8

      前言

      本課程將系統(tǒng)學(xué)習(xí)操作系統(tǒng)的基本概念和常用算法以及其發(fā)展情況和應(yīng)用情況。通過本課程的學(xué)習(xí),學(xué)生應(yīng)達(dá)到如下要求:

      1、加深理解操作系統(tǒng)原理。

      2、熟悉操作系統(tǒng)的常用算法并完成算法的程序設(shè)計(jì)。

      3、理解當(dāng)前操作系統(tǒng)的應(yīng)用前景和新的進(jìn)展。

      本課程主要講解操作系統(tǒng)的實(shí)現(xiàn)原理,如進(jìn)程管理、進(jìn)程同步、存儲器管理、設(shè)備管理和文件系統(tǒng)等。要求學(xué)生理解操作系統(tǒng)的基本原理并完成其中多種典型的操作系統(tǒng)的算法的模擬序設(shè)計(jì)。

      學(xué)生可以采用任何一種自己熟悉的編程語言完成算法的程序設(shè)計(jì),如C/C++、Delphi、VB、VC、C#等。

      實(shí)驗(yàn)

      一、進(jìn)程管理

      實(shí)驗(yàn)?zāi)康模?/p>

      理解和掌握進(jìn)程管理中死鎖處理和進(jìn)程同步的方法。

      實(shí)驗(yàn)內(nèi)容:

      實(shí)現(xiàn)銀行家算法、進(jìn)程調(diào)度過程的模擬、讀者-寫者問題的寫者優(yōu)先算法。

      實(shí)驗(yàn)步驟:

      ? 理解安全性算法和銀行家算法的核心機(jī)制:

      針對3類資源、5個(gè)進(jìn)程的情況,設(shè)計(jì)相應(yīng)的數(shù)據(jù)結(jié)構(gòu),分別表示每個(gè)進(jìn)程占用各類資源的情況;

      編程實(shí)現(xiàn)安全性算法函數(shù),編制主函數(shù),動(dòng)態(tài)輸入資源的占用情況,進(jìn)程的資源申請,調(diào)用安全性函數(shù),實(shí)現(xiàn)銀行家算法;

      測試:輸入可分配和不可分配的請求,測試系統(tǒng)的正確性。

      ? 理解進(jìn)程的三狀態(tài)調(diào)度過程,及各狀態(tài)間的轉(zhuǎn)換關(guān)系;

      模擬若干個(gè)進(jìn)程的運(yùn)行過程,將其存入進(jìn)程文件中。如:進(jìn)程1:運(yùn)行5秒后有3秒的I/O操作,之后有10秒的運(yùn)行,結(jié)束??梢詫懗桑骸眕1:r5,io3,r3 e;” ;

      編程實(shí)現(xiàn)調(diào)度算法函數(shù),定義時(shí)間片大小和并發(fā)進(jìn)程個(gè)數(shù),不斷從進(jìn)程文件中讀出進(jìn)程信息,模擬進(jìn)程的運(yùn)行及調(diào)度過程;

      測試:針對進(jìn)程文件里面的數(shù)據(jù)為正常、缺項(xiàng)、格式不正確等各種情況,檢測程序的執(zhí)行結(jié)果。

      ? 設(shè)計(jì)讀者--寫者問題的寫者優(yōu)先算法;

      學(xué)習(xí)Windows平臺下信號量的API函數(shù)的使用;編制讀寫進(jìn)程的模擬信息文件,里面包含多個(gè)讀寫進(jìn)程的運(yùn)行描述:編制讀者--寫者問題的寫者優(yōu)先算法,從進(jìn)程模擬信息文件中取出進(jìn)程信息,按要求啟動(dòng)對應(yīng)的進(jìn)程模擬程序,決定出讀者/寫者進(jìn)程的運(yùn)行次序。

      實(shí)驗(yàn)結(jié)果:

      銀行家算法程序提供一個(gè)用戶界面,可以在上邊發(fā)出資源申請命令,系統(tǒng)應(yīng)能給出是否可以接受申請,并且有結(jié)論輸出;

      進(jìn)程調(diào)度模擬程序根據(jù)一個(gè)進(jìn)程調(diào)度文件,模擬進(jìn)程的各種調(diào)度過程,用適合的表達(dá)方式表示出來。

      寫者優(yōu)先同步控制程序根據(jù)一個(gè)讀寫進(jìn)程模擬信息文件,按照寫者優(yōu)先同步控制過程,用適合的表達(dá)方式表示出各讀寫進(jìn)程的執(zhí)行次序。

      實(shí)驗(yàn)

      二、存儲器管理

      實(shí)驗(yàn)?zāi)康模?/p>

      理解各類置換算法的原理和虛擬存儲器管理的方法。

      實(shí)驗(yàn)內(nèi)容:

      編程實(shí)現(xiàn)LRU算法或CLOCK/改進(jìn)算法等置換算法(二選一),模擬實(shí)現(xiàn)虛擬存儲器的地址變換過程。

      實(shí)驗(yàn)步驟:

      ? 理解LRU或CLOCK改進(jìn)算法等置換算法;

      設(shè)計(jì)與算法相關(guān)的數(shù)據(jù)結(jié)構(gòu),如:LRU的堆?;駽LOCK改進(jìn)算法中的循環(huán)結(jié)構(gòu);

      按照最多5塊的內(nèi)存分配情況,編程實(shí)現(xiàn)所選算法,動(dòng)態(tài)輸入訪問內(nèi)存的塊號序列,輸出置換結(jié)果;

      測試:輸入合法、非法的訪問序列數(shù)據(jù),檢查程序的正確性和健壯性。

      ? 理解虛擬存儲器的地址變換過程;

      設(shè)計(jì)用于模擬快表、頁表、地址變換所用的寄存器的數(shù)據(jù)結(jié)構(gòu); 編制頁表的初始信息文件,舉例說明文件中具有的信息:共有5塊,每塊的狀態(tài)、在內(nèi)存和外存的起始地址等。

      編程實(shí)現(xiàn)虛擬存儲器地址變換算法程序,動(dòng)態(tài)輸入所要訪問的邏輯地址,變換過程文字描述以及變換后的物理地址;

      測試:輸入有效、無效地址,測試程序的正確性和錯(cuò)誤處理能力。

      實(shí)驗(yàn)結(jié)果:

      置換算法程序提供內(nèi)存訪問序列的輸入界面,輸出正確的置換過程描述和置換結(jié)果;

      虛擬地址變換程序提供邏輯地址輸入界面,形象地表示出變換成物理地址的過程與最后變換成的物理地址。

      實(shí)驗(yàn)

      三、磁盤調(diào)度算法的設(shè)計(jì)

      實(shí)驗(yàn)?zāi)康模?/p>

      通過對磁盤調(diào)度算法的設(shè)計(jì),深入理解提高磁盤訪問速度的原理。

      實(shí)驗(yàn)內(nèi)容:

      模擬實(shí)現(xiàn)磁盤調(diào)度算法:最短尋道時(shí)間優(yōu)先(SSTF)和掃描(SCAN)算法。

      要求:

      可以對給出的任意的磁盤請求序列、計(jì)算平均尋道長度; 要求可定制磁盤請求序列長度、磁頭起始位置、磁頭移動(dòng)方向。

      測試:假設(shè)磁盤訪問序列:98,183,37,122,14,124,65,67;讀寫頭起始位置:53,方向:磁道增加的方向。

      實(shí)驗(yàn)

      四、文件系統(tǒng)原理與模擬實(shí)現(xiàn)

      實(shí)驗(yàn)?zāi)康模?/p>

      了解操作系統(tǒng)中文件系統(tǒng)的結(jié)構(gòu)和管理過程,掌握經(jīng)典的算法:混合索引與成組鏈接法等方法。

      實(shí)驗(yàn)內(nèi)容:

      編程模擬實(shí)現(xiàn)混合索引和成組鏈接法算法;

      實(shí)驗(yàn)步驟:

      ? 模擬混合索引的原理;

      假設(shè)每個(gè)盤塊16字節(jié)大小,每個(gè)盤塊號占2字節(jié):

      設(shè)計(jì)支持混合索引算法的索引節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu);編程模擬實(shí)現(xiàn)混合索引算法。

      測試:輸入一個(gè)文件的長度,給出模擬分配占用的磁盤塊的情況;輸入一個(gè)需要訪問的地址,計(jì)算該地址所在的盤塊號。

      ? 模擬成組鏈接法的原理;

      設(shè)系統(tǒng)具有7個(gè)可用磁盤塊,每組3塊。

      編程模擬實(shí)現(xiàn)成組鏈接法。輸入請求的磁盤塊數(shù),模擬成組鏈接分配;輸入回收的磁盤塊號,模擬成組鏈接回收。

      測試:輸入請求的磁盤塊數(shù),給出分配后的鏈接情況。輸入回收的磁盤塊號,給出回收后的鏈接情況。

      下載北郵操作系統(tǒng)第二次實(shí)驗(yàn)[模版]word格式文檔
      下載北郵操作系統(tǒng)第二次實(shí)驗(yàn)[模版].doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        操作系統(tǒng)實(shí)驗(yàn)體會

        操作系統(tǒng)實(shí)驗(yàn)體會 操作系統(tǒng) 2010-04-04 14:38:15 閱讀814 評論0 字號:大中小 訂閱 每一次課程設(shè)計(jì)度讓我學(xué)到了在平時(shí)課堂不可能學(xué)到的東西。所以我對每一次課程設(shè)計(jì)的機(jī)會......

        操作系統(tǒng)實(shí)驗(yàn)六

        void * my_malloc(unsigned int size){ // int i; // Linker *p=first; // for(i=size;inext; // if(i>HEAP_SIZE)//空?間?不?足á? //return NULL; // if(i==HEAP_SIZE){ /......

        操作系統(tǒng)實(shí)驗(yàn)十

        試驗(yàn)十文件系統(tǒng)設(shè)計(jì) 數(shù)計(jì)學(xué)院教師實(shí)驗(yàn)教案 (實(shí)驗(yàn)十) 實(shí)驗(yàn)項(xiàng)目名稱:文件系統(tǒng)設(shè)計(jì) 教師評分: 一、實(shí)驗(yàn)項(xiàng)目名稱: 文件系統(tǒng)設(shè)計(jì) 二、實(shí)驗(yàn)?zāi)康暮鸵螅?目的:通過一個(gè)簡單多用戶文件系統(tǒng)......

        重郵操作系統(tǒng)課程設(shè)計(jì)報(bào)告

        操作系統(tǒng)課程設(shè)計(jì) 班級: 姓名:學(xué)號: 時(shí)間: 年 月 日 指導(dǎo)教師: 實(shí)驗(yàn)題目: 操作系統(tǒng)課程設(shè)計(jì) 實(shí)驗(yàn)?zāi)康模?1、 掌握Linux操作系統(tǒng)安裝的一般方法 2、 掌握Linux 內(nèi)核升級一般方法 3......

        北郵下一代Internet技術(shù)與協(xié)議實(shí)驗(yàn)

        實(shí)驗(yàn)一實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)名稱 使用網(wǎng)絡(luò)測試工具測試網(wǎng)絡(luò)狀態(tài) 實(shí)驗(yàn)?zāi)康?1、學(xué)習(xí)常用網(wǎng)絡(luò)測試工具的基本功能和使用方法 2、總結(jié)并設(shè)計(jì)使用網(wǎng)絡(luò)測試工具測試網(wǎng)絡(luò)狀態(tài)的方法 實(shí)驗(yàn)完......

        北郵通信原理通原實(shí)驗(yàn)16QAM

        實(shí)驗(yàn)二、16QAM調(diào)制 一、實(shí)驗(yàn)?zāi)康?1、學(xué)會使用SystemView觀察信號的星座圖與眼圖,分析性能 2、學(xué)習(xí)正交幅度調(diào)制解調(diào)的基本原理。 二、實(shí)驗(yàn)原理 1、正交幅度調(diào)制 QAM是由兩......

        北郵近代史復(fù)習(xí)資料

        簡述題 為什么說沒有共產(chǎn)黨就沒有新中國 第一,中國共產(chǎn)黨作為工人階級的政黨,不僅代表著中國工人階級的利益,而且代表著整個(gè)中華民族和全中國人民的利益。 第二,中國共產(chǎn)黨是馬......

        北郵信息門戶[精選合集]

        北郵信息門戶北郵信息門戶為慶祝新中國成立 71 周年,激發(fā)我校學(xué)生愛國熱情,10 月 1 日上午,我校組織全體大一新生開展了“使命在肩,奮斗有我”慶祝新中國成立 71 周年升旗儀式。......