作業系統(十)

2021-04-14 15:06:25 字數 1094 閱讀 8866

段模式(segmentation)是指滿足以下3個特徵的記憶體管理模式

(1)將使用者程式空間按邏輯劃分為幾部分,每一部分稱為一段(segment),每個段內連續編制,段間則採用不連續編制。這樣每個程式的邏輯位址空間是二維編制的。

(2)記憶體的劃分與可變分割槽相同,但分配單位不同。可變分割槽以整個程式為單位劃分和連續存放(即程式內部是連續存放,但是程式之間並不連續存放)。 

(3)段模式分實存模式和虛存模式兩種。如果要求每乙個程在開始執行前都必須完整裝入記憶體,則為實段式。否則為虛段式。

從以上段模式可以看出,在段模式中,段即是使用者程式邏輯位址空間中的最大連續單位,也是使用者程式在記憶體中存放時的最大連續單位。段的概念並不僅用於段模式,在段頁式儲存中也有段的概念。就廣義而言,段模式的本質定義是使用者程式的邏輯位址空間的最大連續單位。但不一定是使用者程式在物理記憶體存放是的最大連續單位。而在段頁式模式中,使用者程序的記憶體最大連續空間是頁。

段式和頁式的區別在於如何不連續,頁式是等長的劃分,因而是非邏輯的。但是段式是按照程序本身進行劃分的。是邏輯的。

乙個邏輯位址空間就是多個段的集合,每個段有乙個名字和乙個長度。位址由段名和段內位移兩部分組成(與這個模式相反的是頁模式,使用者僅說明乙個單獨的位址,由硬體將該位址劃分為乙個頁號與乙個位移,這種劃分是程式設計師看不見的)。通常,段模式下乙個程序的位址空間可以包含**段。資料段和棧段。

段模式的實現

(1)**段:包含乙個程序的可執行的**。乙個程序通常有若干**段,**段按照子程式和函式進行劃分。這種段通常被標記為唯讀,以確保乙個程序的程式**不能被該程序自身或其他程序修改。乙個**段可以在許多程序之共享。例如在乙個linux系統中,可能有很多使用者在執行乙個vi程式,但是所編輯的資料不同。作業系統將vi執行的**放在乙個**段中,讓這個**在所有執行vi的程序之間共享。

(2)資料段:存放乙個程序執行期間處理的資料。乙個程序可包含若干資料段,例如可把全域性變數放在乙個段中,每個過程和函式的區域性變數可分別單獨放在乙個段中,陣列可以放在單獨的段中。資料段通常被標為讀寫。有些系統中規定,資料段不能被其他程序共享,否則就會導致錯誤或失敗。或者是不能被其他程序看到。

(3)棧段:包括程序的棧(stack)該段被標為可讀可寫,棧段不能與其它程序共享。

(5)其他段型別:略了吧~~:)

作業系統 作業系統介面

介面表現為函式呼叫,由作業系統提供,連線作業系統和應用軟體。出於安全性考慮,應用程式不能直接在記憶體中任意訪問 將核心程式和使用者程式隔離 通過比較訪問資料段cpl和rpl的特權級和當前段dpl的特權級之間的關係 應用程式呼叫庫函式printf printf呼叫庫中的write函式 write將函式...

作業系統(作業系統引論)

方便性 方便使用者進行操作計算機 有效性提高系統資源的利用率 提高系統的吞吐量,加速程式的執行 可擴充性 方便地增添新的模組和功能,以及對原有的功能模組進行修改 開放性能夠遵循世界標準規範 os作為使用者和計算機硬體系統之間的介面 使用者能夠通過作業系統來使用計算機系統 os作為計算機資源的管理者 ...

作業系統 作業系統 一 作業系統概述

好好學習,天天向上本文已收錄至我的github倉庫daydayup 歡迎star 之前一直沒有系統地學過作業系統,感覺自己在平時的學習過程中對於某些概念理解得一塌糊塗,比如中斷 記憶體 程序和執行緒等。所以打算系統的學習一下作業系統。一開始我是在b站看哈工大的李治軍老師講的,但是一上來就開始從彙編 ...