1. 程式人生 > >作業系統自學筆記(第一至二章)

作業系統自學筆記(第一至二章)

第一章:

 OS作為使用者與計算機系統之間的的介面,通訊方式:命令方式、系統呼叫、圖示-視窗


 軟硬體資源:處理機、儲存器、IO裝置、檔案
 硬體->物理介面->IO軟體->檔案操作->視窗


 OS的基本特性:併發、引入程序、共享、虛擬、非同步


 OS的主要功能:
 處理機:程序控制、程序同步(互斥與同步)、程序通訊、排程
 儲存器:記憶體分配和回收、記憶體保護、地址對映、記憶體擴充
 裝置:緩衝管理、裝置分配、裝置處理
 檔案:檔案儲存空間管理、目錄管理、檔案的讀寫管理和保護
 作業系統與使用者之間的介面:使用者介面、程式介面
 

現代作業系統:系統安全、網路功能和服務、支援多媒體


 客戶/伺服器模式:
 組成:客戶機、伺服器、網路系統
 優點:資料分部處理和儲存、便於集中管理、靈活性和可擴充性、易於改編應用軟體


 微核心:
 核心小
 基於客戶/伺服器模式
 機制與策略分離
 採用面向物件
     基本功能:程序管理、低階儲存器管理、中斷和陷入處理


第二章:

 程式併發執行(只有在不存在前趨關係的程式之間才可能執行)
間斷性
失去封閉性:共享資源
不可再現性:併發執行的速度不一定一致,非同步性




程序:
程序實體:程式段、相關的資料段和PCB(程序控制塊)

建立/撤銷程序:建立/撤銷PCB
定義:程序是程序實體的執行過程,是系統進行資源分配和排程的一個獨立單位
基本狀態:就緒狀態(具備除CPU外所有必要資源)、執行狀態、阻塞狀態(IO請求、申請緩衝區失敗等)
建立狀態:建立程序實體未完成,程序不能被排程執行
終止狀態:程序結束或被終止或出錯等進入的狀態


    掛起操作:掛起->程序靜止
原因:終端使用者需要;父程序需求;負荷調節需要;作業系統的需要
轉換:活動就緒->靜止就緒
     活動阻塞->靜止阻塞


    程序管理中的資料結構:記憶體表、裝置表、檔案表、程序管理的程序表(PCB)
PCB作用:記錄了作業系統所需的,用於描述程序的當前情況以及管理程序執行的全部資訊(非獨立 程式 獨立執行 併發執行)
作為獨立執行基本單位的標誌
能實現間斷性的執行方式(儲存cpu現場資訊)
提供程序管理所需要的資訊(程式和資料資訊)
提供程序排程所需要的資訊(程序狀態、優先順序排程等資訊)
實現與其他程序的同步與通訊(訊號量)
PCB資訊:程序識別符號:
外部/內部標誌符
處理機狀態:通用暫存器、指令暫存器、程式狀態字、使用者棧指標
程序排程資訊:程序狀態、程序優先順序、程序排程所需其他資訊、執行->阻塞的事件
程序控制資訊
組織方式:線性方式;連結方式;索引方式




程序控制:
作業系統核心:緊靠硬體的軟體層次,常駐記憶體
對軟體進行保護;提高OS執行效率
功能:
   支撐功能:提供基本功能以支撐模組工作:中斷處理、時鐘管理、原語操作
原子操作:不可分割的基本單位。在執行過程不可被中斷,在系統態下執行
   資源管理:程序管理(通常放在核心)、儲存器管理(同上)、裝置管理(大部分同上)
程序的建立:
層次結構:子程序可以繼承父程序所有資源
 子程序撤銷時應將父程序給的資源歸還
 父程序撤銷時,需撤銷所有子程序
引起建立的事件:使用者登入;作業排程;提供服務;應用請求
程序建立:申請空白PCB(獲得唯一的數字識別符號);為新程序分配執行所需的資源;初始化程序控制塊(標識資訊、處理機狀態資訊(程式計數器指向程式入口地址,棧指標指向棧頂)、處理機控制資訊(就緒狀態或靜止就緒狀態,最低優先順序));程序插入就緒佇列
程序的終止:
事件:正常結束<-程序完成
     異常結束<-異常事件(越界、保護錯、非法指令、特權指令錯、執行超時、等待超時、算術運算錯、IO故障等)
     外界干預<-外界請求
程序的阻塞與喚醒:
事件:向系統請求共享資源失敗
     等待某種程序的完成
     新資料尚未到達
     等待新任務的到達
程序的掛起與啟用


程序同步:
基本概念:
兩種制約關係(同一系統多個程序間):間接相互制約、直接相互制約
臨界資源
臨界區:訪問臨界資源的程式碼
檢查臨界資源是否被使用的程式碼:進入區
恢復臨界資源被使用標誌:退出區
剩餘區
遵循規則:空閒讓進;忙則等待;有限等待;讓權等待
硬體同步機制:
關中斷
利用test and set指令實現互斥
利用swap指令
訊號量機制:
整型訊號量S:
兩個原子操作:P,V操作(不可中斷)
記錄型訊號量:在整型訊號量基礎上增加一個程序連結串列指標
AND型訊號量:程序所需所有資源一次性分配,待程序使用完後一次性釋放
訊號量集:在AND基礎上,每次程序申請或釋放的資源量應大於等於分配下限值
訊號量的應用:
實現程序互斥:
互斥訊號量mutex :初始值為1、取值範圍-1,0,1
1:未有程序進入需要互斥的臨界區;
0:有一個程序進入需要互斥的臨界區,另一個必須掛入阻塞佇列;
-1:有一個程序正在臨界區執行,另一個阻塞在訊號量佇列中
實現前趨關係:兩個程序共享公用訊號量用來決定語句執行先後順序
管程機制:
定義:共享資料結構抽象->共享資源,對共享資料結構抽象的特定操作稱為一組過程
     共享資料結構以及對應於這個結構的一組過程所組成的資源管理程式共同構成一個作業系統的資源管理模組->管程
     面向物件,封裝,內部資料結構和過程互相唯一地對應,具體實現對外不可見
共享資源<---管程<---程序(同時只能有一個程序進入管程,有效實現互斥)
條件變數:
每個條件變數儲存了一個連結串列,用於記錄因該條件變數而阻塞的所有程序


程序通訊:
型別:
共享儲存器系統:共享資料結構(低階)、共享儲存區
管道通訊:互斥、同步、存在
訊息傳遞系統:訊息(報文)->通訊命令->資訊傳遞
直接通訊:OS的傳送原語->目標程序
間接通訊:共享中間實體
客戶機/伺服器系統:
套接字(一個通訊標識型別的資料結構):基於檔案型->套接字關聯特殊檔案(類似於管道)
     基於網路型:傳送程序->申請套接字、分配埠;
 接收程序:擁有公認的套結種子和埠,監聽埠等待客戶請求
接收程序收到請求->接收連線->通訊->關閉接收程序的套接字
遠端過程呼叫和遠端方法呼叫:RPC,客戶存根(通過此來程序遠端呼叫)
負責處理的程序:本地客戶程序、遠端伺服器程序
步驟:呼叫者、本地客戶存根、訊息建立、訊息傳遞、伺服器存根、處理訊息引數、訊息返回、本地客戶程序、客戶存根、本地呼叫者程序
訊息傳遞通訊的實現方式:
   直接訊息傳遞:
直接通訊原語:
對稱定址方式:傳送/接收均提供對方識別符號(不足之處)
非對稱定址方式:傳送:需接收名稱//接收:接收任何程序訊息,需要傳送方程序id或名字
訊息格式:定長(單機)、變長(適合使用者需求,開銷大)
程序同步方式:1.傳送/接收阻塞:無緩衝時;2.傳送不阻塞,接收阻塞,接送等待發送喚醒;3.傳送/阻塞均不阻塞,獨立處理自己的事情
通訊鏈路:傳送/接收通訊需要的鏈路
顯示建立,用於計算機網路
系統自動建立,單機系統
單向/雙向通訊鏈路
例項:Send、Receive
     訊息緩衝佇列:
資料結構:
訊息緩衝區(鏈式結構體)
PCB有關通訊的資料項:佇列隊首指標、互斥mutex、資源訊號量
傳送原語:傳送區->申請緩衝區->獲取接收程序內部識別符號->插入識別符號(訊息緩衝區插入訊息佇列)
接收原語:緩衝區複製->接收區->釋放緩衝區
   信箱通訊:信箱(中間實體->暫存訊息(非實時通訊))
信箱結構:信箱頭(存放信箱的描述資訊)、信箱體(信箱格)
信箱通訊原語:1.用於建立和撤銷;2.訊息的傳送和接收(共享郵箱)
信箱型別:私用(單向接收資訊,讀取私有權);公用(採用雙向通訊鏈路);共享郵箱(需指明共享者)


執行緒:
引入:程序:提高資源利用率和系統吞吐量
1.擁有資源的獨立單位;2.獨立排程和分派(PCB)
     執行緒:提高資源利用率和系統吞吐量,提高併發性,減少時空開銷(程序切換時需要較大時空開銷)
作為排程和分派的獨立單位
比較:
排程基本單位(同一程序的執行緒切換時不切換程序,不同程序的執行緒則會;執行緒切換隻需儲存和設定少量暫存器內容)
併發性
擁有資源(僅有能保證獨立執行的資源),可訪問建立該執行緒的程序的資源(同一程序的執行緒擁有相同的地址空間->共享性)
獨立性:比程序差,共享程序的記憶體地址空間和資源
系統開銷
支援多處理機系統
執行緒狀態和執行緒控制塊:
三個狀態:就緒、執行、阻塞
執行緒控制塊TCB:控制和管理執行緒的資訊記錄
執行緒識別符號、一組暫存器(程式計數器、狀態暫存器、通用暫存器)、執行狀態、專有儲存區、訊號遮蔽、優先順序、堆疊指標(使用者態和核心態)
多執行緒OS中的程序屬性:可擁有資源的基本單位、多個執行緒併發執行、非可執行的實體
實現:
方式:
核心支援執行緒KST(核心通過TCB感知和控制執行緒)(以執行緒為排程單位,多少核心執行緒則擁有多少cpu時間)
四個優點:同時排程;一個阻塞其他執行;支援很小的資料結構,開銷小;核心採用多執行緒->提高速度和效率
缺點;使用者執行緒切換開銷大,使用者態->核心態->使用者態
使用者級執行緒ULT(以程序為排程單位,輪流法->程序獲得時間片一樣)
優點:不需核心干預,減少開銷;排程演算法與OS無關;執行緒的實現與OS無關
缺點:系統呼叫導致程序阻塞->所有執行緒阻塞
     核心只分配一個cpu給程序,執行緒不能同時執行
組合方式:KST/ULT執行緒
使用者級執行緒十分多路複用核心支援執行緒
連線方式:多對一、一對一、多對多(相容前兩者)
執行緒實現:
核心支援執行緒:與程序類似(任務資料區PTDA->TCB)
使用者級執行緒的實現:
執行時系統:管理和控制執行緒的函式集合(駐留在使用者空間)(執行緒需要資源時需通過執行時系統進行相應系統呼叫獲得)
核心控制執行緒:
ps:核心級執行緒阻塞則LWP(核心控制程序)也阻塞
建立和終止:
終止的執行緒尚未分離資源,仍可被其他執行緒呼叫從而恢復執行緒(等待執行緒終止->呼叫執行緒)