進程管理、記憶體管理、存儲管理初步瞭解

来源:http://www.cnblogs.com/zpfbuaa/archive/2016/10/08/5940284.html
-Advertisement-
Play Games

進程管理 進程需要一定的資源(包括CPU時間、記憶體、文件、I/O設備)以完成其任務。這些資源可以在進程創建時分配給進程,也可以在執行進程時分配給進程。除了在創建時得到各種物理和邏輯資源外,進程還可以接受傳輸過來的各種初始化數據(輸入)。 需要註意:程式本省並不是進程,程式是被動的實體,而進程是一個活 ...


進程管理

進程需要一定的資源(包括CPU時間、記憶體、文件、I/O設備)以完成其任務。這些資源可以在進程創建時分配給進程,也可以在執行進程時分配給進程。除了在創建時得到各種物理和邏輯資源外,進程還可以接受傳輸過來的各種初始化數據(輸入)。

需要註意:程式本省並不是進程,程式是被動的實體,而進程是一個活動的實體。

clip_image001 進程與線程的定義:

clip_image002 進程是具有一定獨立功能的程式關於某個數據集合上的依次運行活動,進程是系統進行資源分配和調度的獨立單位。

clip_image002[1] 線程是進程的一個實體,是CPU和分配的基本單位。線程自己基本不擁有系統資源,只擁有在運行中必不可少的資源(如程式計數器,寄存器和棧),但是它可與同屬一個進程的其他線程共用進程所擁有的全部資源。

clip_image001[1] 進程與線程的關係:

clip_image002[2] 一個線程可以創建和撤銷另一個線程。同一個進程中的多個線程之間可以併發執行。

clip_image002[3] 相對進程而言,線程是一個更加接近於執行體的概念,它可以與同進程中的其他線程共用數據,但擁有自己的棧空間,擁有獨立的執行序列。

clip_image001[2] 進程與線程的區別:

進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其他進程產生影響,而線程只是進程中的不同執行路徑。線程有自己的堆棧和局部變數,但線程沒有單獨的地址空間,一個線程死掉等於整個進程死掉,所以多進程的程式要比多線程的程式健壯,但在進程切換時,消耗資源較大,效率要差一些。但對於一些要求同時進行並且又要共用某些變數的併發操作,只能用線程,不能用進程。

clip_image002[4] ①一個程式至少有一個進程,一個進程至少有一個線程。

clip_image002[5] ②線程的劃分尺度小於進程,使得多線程程式的併發性高。

clip_image002[6] ③進程在執行過程中擁有獨立的記憶體單元,而多線程共用記憶體,從而極大地提高了程式的運行效率。

clip_image002[7] ④每個獨立的線程有一個程式運行的入口、順序執行序列和程式的出口。但是線程不能都獨立執行,必須依賴在應用程式中,由應用程式提供多個線程執行控制。

clip_image002[8] ⑤多線程的意義在於一個應用程式,有多個執行部分可以同時執行。但操作系統並沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。

clip_image001[3] 進程與線程的優缺點:

線程執行開銷小,但不利於資源的管理和保護,而進程正相反。同時,線程適合在雙CPU系統上運行,而進程則可以跨機器運行。

clip_image003

操作系統負責下述與進程管理相關的活動:

clip_image002[9] 創建和刪除用戶進程和系統進程。

clip_image002[10] 掛起和重啟進程

clip_image002[11] 提供進程同步機制

clip_image002[12] 提供進程通信機制

clip_image002[13] 提供死鎖處理機制

記憶體管理

記憶體是可以被CPU和I/O設備所共同快速發昂問的數據倉庫。CPU在獲取指令周期時從記憶體中讀取指令,而在獲取數據周期時對記憶體內的數據經行讀出和寫入(馮·諾依曼結構中)。如果一個程式需要執行,那麼它必須先變換成絕對地址並裝入記憶體。隨著程式的執行,進程可以通過產生絕對地址來訪問記憶體中的程式指令和數據。最終,程式終止,其記憶體空間得以釋放,並且下一個程式可以裝入並得以執行。

clip_image005

操作系統負責下述有關記憶體管理的活動

clip_image002[14] 記錄記憶體的哪部分正在被使用以及被誰使用。

clip_image002[15] 當有記憶體空間時,決定哪些進程可以裝入記憶體。

clip_image002[16] 根據需要分配和釋放記憶體空間。

存儲管理

clip_image002[17] 文件系統管理

clip_image002[18] 大容量存儲系統管理

clip_image002[19] 高速緩存

clip_image002[20] I/O系統

文件系統管理:是操作系統最為常見的組成部分。磁帶、磁碟、光碟是常見的存儲介質。每種介質需要通過一個設備來控制,如磁碟驅動器和磁帶驅動器等,擁有的屬性包括:訪問速度、容量、數據傳輸效率、訪問方法(順序或隨機)

文件是由其創建者定義的一組相關信息的集合。通常,文件表示程式(源程式和目標程式)和數據。數據文件可以使數值的、字元的、字元數值或二進位的。文件可以沒有格式,也可以有嚴格的格式。

操作系統通過管理大容量存儲器,來實現文件這一抽象概念。文件通常組成目錄以方便使用。最後,當多個用戶可以訪問文件時,需要控制由什麼人以及按照什麼方式來訪問文件。

操作系統負責以下有關文件管理的活動:

clip_image002[21] 創建和刪除文件。

clip_image002[22] 創建和刪除目錄來組織文件。

clip_image002[23] 提供操作文件和目錄的原語。

clip_image002[24] 將文件映射到二級存儲上。

clip_image002[25] 在穩定存儲介質上備份文件。

clip_image006

大容量存儲器管理:由於記憶體太小不能容納所有數據和程式,加上掉電會失去所有數據,電腦系統必須提供二級存儲器(secondary storage)以備份記憶體。絕大多數現代電腦系統都採用硬碟作為主要線上存儲介質來存儲程式和數據。

操作系統負責下麵有關硬碟管理的活動:

clip_image002[26] 空閑空間管理。

clip_image002[27] 存儲空間分配。

clip_image002[28] 硬碟調度。

clip_image007

由於二級存儲器使用頻繁,因此必須高效。但是有時使用比二級存儲更慢價格更低的存儲器,如磁碟數據的備份、很少使用的數據、長期檔案存儲。磁帶驅動器以及磁帶、CD/DVD驅動器以及光碟就是典型的三級存儲(tertiary storage)設備。這些介質格式包括WORM(一次寫,多次讀)和RW(讀-寫)。三級存儲對系統性能並不是關鍵,但也要管理好。有些操作系統對之加以管理,而另一些則將三級存儲管理交給應用程式管理。

高速緩存:信息通常保存在一個存儲系統中(如記憶體)。當使用它時,它會被臨時地複製到更快的存儲系統中——高速緩存。當需要特定信息時,首先檢查它是否在高速緩存中。如果是,可直接使用高速緩存中的信息;否則,使用位於記憶體中的信息,同時將其複製到高速緩存中以便下次使用。

clip_image008

由於高速緩存大小有限,所以高速緩存管理(cache management)的設計很重要。對高速緩存大小和置換策略的仔細選擇可以極大地提高性能。

I/O系統:操作系統的目的之一在於對用戶隱藏具體硬體設備的特性。例如,在UNIX系統中,I/O子系統對操作系統本身隱藏了I/O設備的特性。I/O子系統包括下麵幾個部分:

clip_image002[29] 一個包括緩存、高速緩存和假托機的記憶體管理部分。

clip_image002[30] 通用設備驅動器介面

clip_image002[31] 特定硬體設備的驅動程式。

clip_image009


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 教大家一個簡單方法讓ubuntu發散wifi熱點給手機或者其他設備使用。 ...
  • 先按win+R 輸入cmd netsh wlan set host mode=allow ssid=nothing key=323435435 (ssid後面的可以任意,key後面最少8個字元) 我的電腦,右鍵選中屬性,選中控制面板 選中網路和internet 選中網路和共用中心 選中更改適配器設置 ...
  • 介紹 split可以將一個大文件拆分成指定大小的多個文件,並且拆分速度非常的快,拆分一個1G大小的文件花費不到1S的時間,如果手工在windows上面進行操作估計得卡死。 選項 Usage: split [OPTION]... [INPUT [PREFIX]] Output fixed-size p ...
  • 一、配置伺服器 1.安裝管理服務 2.點擊管理服務進行配置 3.安裝WebDeploy 3.1通過離線安裝包方式安裝: https://www.iis.net/downloads/microsoft/web-deploy 離線包沒有WebDeploy3.6版本的,不過影響不大 3.2通過Web平臺安 ...
  • 初接解LINUX的,同樣都是for linux,但rpm、tar.gz、deb包還是有很大區別的,這種區別可使安裝過程進行不下去。那我們應該下載什麼格式的包呢? rpm包-在紅帽LINUX、SUSE、Fedora可以直接進行安裝,但在Ubuntu中卻無法識別; deb包-是Ubuntu的專利,在Ub ...
  • 1.下載python2.7.x wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz 2.解壓並編譯安裝 tar -zxvf Python-2.7.6.tgz && cd Python-2.7.6 && ./configure & ...
  • 在網上尋找各種方法無果的情況下,選擇重新安裝顯卡驅動,成功登錄進入圖形界面。 一、首先需要在另外一臺電腦(windows系統也可以)上下載NVIDIA相應顯卡驅動,不知道的話可以使用命令lspci | grep -i nvidia查看顯卡型號,網址為http://www.nvidia.cn/Down ...
  • 國慶最後一天了,閑來無事裝個雙系統,用虛擬機的linux總有些不方便。 window下安裝linux雙系統有兩中方法: 1.U盤安裝 (我採用的方法,後面詳述) 2.EasyBCD工具安裝 (使用EasyBCD完美實現Windows7與Linux雙系統) 使用U盤win10安裝centos7雙系統, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...