【正文】
Virtual memory is the separation of user logical memory from physical memory.請求分頁(demand paging)定義:基本分頁的基礎上增加請求調(diào)頁功能 和頁面置換功能。快表很小,訪問很快,造價高??毂?TLBtranslation lookaside buffer)為了提高訪問速度,存放被頻繁訪問的頁面的頁表項。分頁的地址變換過程當一個進程轉入執(zhí)行狀態(tài)時,其頁表的始址和長度從其PCB中裝入頁表寄存器。分頁定義A memorymanagement scheme that permits the physical address space of fitting memory to be noncontiguous.分頁原理:l 將物理內(nèi)存分割為等份,叫做物理塊(frame),大小一般為2的次方l 將邏輯地址分割為等份,叫做頁(page),大小與frame相等l 建立page與frame的關系映射,叫做頁表(page table),頁表在內(nèi)存里。對每個程序來說,這種地址變換只是在裝入時一次完成,在程序運行期間不再進行重定位。通常采用重定位寄存器,其中放有當前正在執(zhí)行的程序在內(nèi)存空間中的起始地址,而地址空間中的代碼在裝入過程中不發(fā)生變化。l Compiler bind symbolic address to reloacatable addressl Loader/linkage editor bind relocatable address to absolute address重定位動態(tài)重定位:在程序執(zhí)行期間每次訪問內(nèi)存之前進行重定位。死鎖的避免每當進程申請資源時,都根據(jù)一定的算法判斷是否安全安全狀態(tài):當多個進程動態(tài)申請資源時,系統(tǒng)按某一順序逐次地為每個進程分配所需資源,使每個進程都可以在最終得到最大需求量后依次順利完成。(1)資源的靜態(tài)分配方法:進程運行前一次性申請全部資源,破壞請求和保持條件.(2)資源的順序分配法:系統(tǒng)的全部資源進行編號,只允許按編號順序遞增地申請,破除環(huán)路待。死鎖產(chǎn)生原因眾多進程競爭有限資源;進程推進順序不合適。一個條件變量就是一個線程隊列(queue), 其中的線程正等待某個條件變?yōu)檎妗R粋€管程的程序在運行一個線程前會先獲取互斥鎖,直到完成線程或是線程等待某個條件被滿足才會放棄互斥鎖。 // think}管程(Monitor)的定義:一個管程定義了一個數(shù)據(jù)結構和能為并發(fā)進程調(diào)用的在該數(shù)據(jù)結構上的一組操作過程,這組互斥操作的過程,能同步進程和改變管程中的數(shù)據(jù)。 // eat signal ( chopstick[i] )。}//,有一個P操作就一定有一個V操作//當為互斥操作時,它們處于同一進程//當為同步操作時,則不在同一進程中出現(xiàn)//對于前后相連的兩個P(S1)和P(S2) ,順序是至關重要的:同步P操作應該放在互斥P操作前,而兩個V操作順序則無關緊要信號量實現(xiàn)互斥為臨界資源設置一個互斥信號量mutex,其初值為1;在每個進程中將臨界區(qū)代碼置于P(mutex)和V(mutex)原語之間信號量實現(xiàn)同步,有一個P操作就一定有一個V操作三個經(jīng)典問題(1)生產(chǎn)者消費者(2)讀者寫者(3)哲學家吃米飯While (true) { wait ( chopstick[i] )。 // noop S。信號量(Semaphore)與PV操作信號量:A Semaphore is a special integer variable, it can be accessed only through two standard atomic operations。l 若Pj剛出臨界區(qū),則FLAG[j] = 0,那么Pi的while條件不再滿足,進入臨界區(qū)。對于Pj的以下三種情況:l 若Pj未準備好,則FLAG[j] = 0,那么Pi的while條件不再滿足,進入臨界區(qū)。因此假設錯誤,不可能有兩個進程同時在臨界區(qū)。 // end of critical section(3) 程序分析滿足互斥:如果兩個進程都在臨界區(qū),則FLAG[i]=FLAG[j]=1。amp。 turn = 0。 turn == 1) { // busy wait } // critical section flag[0] = false。 while (flag[1] == true amp。(此處還有多處理機的調(diào)度,線程的調(diào)度)CHAPTER 6基本概念臨界區(qū)(critical section):一段代碼,用來修改臨界資源,只能有一個進程處于臨界區(qū)進入?yún)^(qū)(entry section):請求進入臨界區(qū)的程序退出區(qū)(exit section):緊跟著臨界區(qū)后的程序剩余區(qū)(remainder section):剩下的程序解決臨界區(qū)問題的三個要求互斥(Mutual exclusion):保證安全有空讓進(Progress):保證資源利用率有限等待(Bounded waiting):防止饑餓Peterson算法(1) 只能控制兩個進程(2) 程序P0: flag[0] = true。與多級隊列算法不同的是,多級反饋隊列允許進程轉移到其他隊列。Multithreading modelsMany to one: many user level threads to one kernel thread.(因為只有一個線程可以access內(nèi)核,因此多個線程不可以同時在多個內(nèi)核上運行)One to one: each user thread to a kernel thread(多個線程可以在多個內(nèi)核上同時運行,一個阻塞也不會影響其他,但每一個用戶線程均要創(chuàng)立一個內(nèi)核線程,額外開銷大,限制應用程序的性能)Many to many: many user level threads to a smaller or equal number of kernel threads.(開銷不大,而且線程可以并發(fā))CHAPTER 5三級調(diào)度(1)高級調(diào)度:Longterm scheduler (jobscheduler): select a process from the pool and loads them into memory for pool里選一個進程加載在內(nèi)存里(2)低級調(diào)度:Short term scheduler (CPUscheduler): select a process from the processes in memory that are ready to execute and allocates the CPU to the (3)中級調(diào)度:Midterm scheduler: remove processes from memory and later reintroduce it into memory. 把內(nèi)存中的進程swap出去再