2023年6月25日 區域網相關知識,佇列

2021-09-24 17:36:04 字數 2553 閱讀 8276

區域網體系結構分為3層:

1.物理層:處理位元流,處理物理連線,處理機械、電氣、功能和規程的特性。

2.**訪問控制mac子層:負責介質訪問控制機制的實現。

3.邏輯鏈路控制llc子層:負責遮蔽掉mac子層的不同實現,將其變成統一的llc介面。

資料鏈路層:llc子層和mac子層

**順序儲存結構的迴圈佇列

假設迴圈佇列的隊尾指標是rear,隊頭是front,其中queuesize為迴圈佇列的最大長度。

(1) 入隊時隊尾指標前進1:(rear+1)%queuesize

(2) 出隊時隊頭指標前進1:(front+1)%queuesize

例1, 例2

(3) 佇列長度:(rear-front+queuesize)%queuesize

例3:現有一迴圈佇列,其隊頭指標為front,隊尾指標為rear;迴圈佇列長度為n。其隊內有效長度為?(假設隊頭不存放資料)

答案:(rear-front+n)%n

(4) 隊空和隊滿的條件

為了區分隊空還是堆滿的情況,有多種處理方式:

隊滿條件為:(rear+1)%queuesize==front

隊空條件為:front==rear

佇列長度為:(rear-front+queuesize)%queuesize

方式2: 增設表示佇列元素個數的資料成員size,此時,隊空和隊滿時都有front==rear。

隊滿條件為:size==queuesize

隊空條件為:size==0

方式3: 增設tag資料成員以區分隊滿還是隊空

tag表示0的情況下,若因刪除導致front==rear,則隊空;

tag等於1的情況,若因插入導致front==rear則隊滿

例1:迴圈佇列的儲存空間為q(1:50),初始狀態為front=rear=50。

經過一系列正常的入隊與退隊操作後,front=rear=25。此後又插入乙個元素,則迴圈佇列中的元素個數為多少?

答案:1,或50且產生上溢錯誤

例2:迴圈佇列的儲存空間為q(1:40),初始狀態為front=rear=40。

經過一系列正常的入隊與退隊操作後,front=rear=15,此後又退出乙個元素,則迴圈佇列中的元素個數為多少?

答案:39,或0且產生下溢錯誤

例3:設迴圈佇列的儲存空間為q(1:35),初始狀態為front=rear=35。現經過一系列入隊與退隊運算後,front=15,rear=15,則迴圈佇列中的元素個數為多少?

答案:0或35

例4:迴圈佇列的儲存空間為q(1:200),初始狀態為front=rear=200。經過一系列正常的入隊與退隊操作後,front=rear=1 則迴圈佇列中的元素個數為多少?

答案:0或200

例3:個人覺得這一題條件不全

最大容量為n的迴圈佇列,隊尾指標是rear,隊頭是front,則隊空的條件是:rear=front

按序分配可以破壞環路等待的條件、一次性給程序分配完全部資源破壞請求與等待條件 剩下那兩個條件直接按名字 反著操作就可以。

避免死鎖就是銀行家演算法+安全性演算法

在請求分頁儲存管理中,從主存(dram)中剛剛換出(swap out)某一頁面後(換出到disk),根據請求馬上又換入(swap in)該頁,這種反覆換出換入的現象,稱為系統顛簸,也叫系統抖動。

危害:系統時間消耗在低速的i/o上,大大降低系統效率。程序對當前換出頁的每一次訪問,與對ram中頁的訪問相比,要慢幾個數量級。

原因:排程演算法不科學,交換演算法不科學

解決:好的頁替換演算法減少執行的程序數

作業系統在分配記憶體時,有時候會產生一些空閒但是無法被正常使用的記憶體區域,這些就是記憶體碎片,或者稱為記憶體零頭,這些記憶體零頭一共分為兩類:內零頭和外零頭。

內零頭是指程序在向作業系統請求記憶體分配時,系統滿足了程序所需要的記憶體需求後,還額外還多分了一些記憶體給該程序,也就是說額外多出來的這部分記憶體歸該程序所有,其他程序是無法訪問的。

外零頭是指記憶體中存在著一些空閒的記憶體區域,這些記憶體區域雖然不歸任何程序所有,但是因為記憶體區域太小,無法滿足其他程序所申請的記憶體大小而形成的記憶體零頭。

頁式儲存管理是以頁為單位(頁面的大小由系統確定,且大小是固定的)向程序分配記憶體的,例如:假設記憶體總共有100k,分為10頁,每頁大小為10k。現在程序a提出申請56k記憶體,因為頁式儲存管理是以頁為單位程序記憶體分配的,所以系統會向程序a提供6個頁面,也就是60k的記憶體空間,那麼在最後一頁中程序只使用了6k,從而多出了4k的記憶體碎片,但是這4k的記憶體碎片系統已經分配給程序a了,其他程序是無法再訪問這些記憶體區域的,這種記憶體碎片就是內零頭。

段式儲存管理是段(段的大小是程式邏輯確定,且大小不是固定的)為單位向程序進行記憶體分配的,程序申請多少記憶體,系統就給程序分配多少記憶體,這樣就不會產生內零頭,但是段式分配會產生外零頭。

例如:假設記憶體總的大小為100k,現在程序a向系統申請60k的記憶體,系統在滿足了程序a的記憶體申請要求後,還剩下40k的空閒記憶體區域;這時如果程序b向系統申請50k的記憶體區域,而系統只剩下了40k的記憶體區域,雖然這40k的記憶體區域不歸任何程序所有,但是因為大小無法滿足程序b的要求,所以也無法分配給程序b,這樣就產生了外零頭。請求段式儲存管理是在段式儲存管理的基礎上增加了請求調段功能和段置換功能。

2023年11月25日總結

這兩天參加了乙個數學系老師舉辦的乙個計算數學學術討論會,聽的有點疲憊。怎麼來形容那,詳細內容肯定是聽不懂的,他們涉及到的東西太過於專業化,但是處理方法,解決問題的思路其實講解的每個人所用到的都是差不多的。即使是我們這樣從未接觸過的都可以聽出這些東西,那為何他們研究了這麼多年,我想其實和acm競賽有許...

2023年11月6日總結

今天做著題結果codeblocks突然出故障,然後剛寫完的 沒法編譯,我就鼓起勇氣直接交,結果果然就wa了,後來後面的題就想了思路沒寫,很失敗的一次比賽,下次要多安裝幾個編譯軟體。這幾天在做數論的題,但是做的很慢,基本上都是卡在細節處理上,今天下午也是一開始一直不對,除了樣例能過,後來他們說你重敲一...

2023年12月6日總結

今天感冒了,狀態有點不好,主要完成了平台介面註冊賦權的問題,還有報錯的問題,例如 200003 無許可權訪問,請核實請求的功能服務是否存在 210 rst.person.0027 錯誤碼 200003.2000030 實際上在平台上是賦權了的,但是還是報這個錯,後來我在看介面許可權看是否大小寫不一致...