操作系統導論

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

操作系統做什麼? 從不同的視角進行分析: 用戶視角 系統視角 最終定義操作系統 定義1:操作系統是為了實現管理,同時帶來了必不可少的各種類型的浪費 分析:管理硬體資源,同樣帶來的浪費有:記憶體消耗,硬體消耗等。 定義2:操作系統是管理電腦硬體的程式,它還為應用程式提供基礎,並且充當電腦硬體和電腦 ...


clip_image001 操作系統做什麼?

從不同的視角進行分析:

clip_image002 用戶視角

clip_image002[1] 系統視角

clip_image002[1]最終定義操作系統

定義1:操作系統是為了實現管理,同時帶來了必不可少的各種類型的浪費

clip_image003 分析:管理硬體資源,同樣帶來的浪費有:記憶體消耗,硬體消耗等。

定義2:操作系統是管理電腦硬體的程式,它還為應用程式提供基礎,並且充當電腦硬體和電腦用戶的中介

clip_image003[1] 分析:電腦硬體包括CPU(邏輯計算中心)、I/O設備(顯示器,滑鼠,鍵盤,印表機等)、物理存儲設備。

硬體:如中央處理單元(Centeal Processing Unit,CPU)、記憶體(memory)、輸入輸出設備(Input/Output devices, I/Odevices),為系統提供基本的計算資源。

應用程式:電子製表軟體、編譯器、瀏覽器、音樂播放器等國定了用戶按何種方式使用這些資源。

clip_image004 操作系統提供了正確使用這些資源的方法。操作系統類似於政府,操作系統本身並不實現任何有用的功能。它只不過是提供了一個方便其他程式做有用工作的環境。

clip_image002[2] 用戶視角:對於這種情況,操作系統的設計目的是為了用戶使用方便,性能是其次的,而且不在乎資源使用率。性能和資源使用率相比,性能對用戶來說更為重要,這種系統主要為了優化單用戶的情況。

clip_image002[3] 系統視角:將操作系統看做資源分配器。電腦系統可能有許多資源,用來解決CPU時間、記憶體空間、文件存儲空間、I/O設備等問題。操作系統管理這些資源。面對許多甚至衝突的資源請求,操作系統必須決定如何為各個程式和用戶分配資源,以便電腦系統能有效而公平地運行。強調控制各種I/O設備和用戶程式的需求。操作系統管理用戶程式的執行以防止電腦資源的錯誤使用或者使用不當。

clip_image001[1] 電腦系統組織結構?

clip_image002[4] 電腦系統如何操作

clip_image002[5] 電腦系統的存儲結構

clip_image002[6] I/O結構

電腦系統操作:現代通用電腦系統由一個或多個CPU和若幹設備控制器通過共同的匯流排相連而成,該匯流排提供了對共用記憶體的訪問。每個設備控制器負責一種特定的設備(比如磁碟驅動器,音頻設備,視頻顯示器)。CPU與設備控制器可以併發工作,並競爭記憶體周期。為確保對共用記憶體的有序訪問,需要記憶體控制器來協調對記憶體的訪問。

clip_image005

電腦啟動時,首先需要運行一個初始化程式。該初始化程式(引導程式 bootstrap program)比較簡單,位於ROM或者EFPROM中,也叫做電腦硬體中的固件。它的主要職責:初始化系統的所有部分,包括CPU寄存器、設備控制器和記憶體內容,必須知道如何裝入操作系統並開始執行系統。需要定位操作系統內核並將其裝入記憶體。之後操作系統開始執行第一個進程如init,並等待事件的發生。

事件的發生通常通過硬體或者軟體的中斷來表示。硬體可以隨時通過系統匯流排向CPU發出信號,以觸發中斷。軟體通過執行特殊操作比如系統調用(System call)也能觸發中斷。

clip_image002[7] 中斷是電腦結構的重要部分。每個電腦設計都有自己的中斷機制,但是有些功能是共同的。中斷必須將控制轉移到合適的中斷處理程式。處理轉移的簡單方法是調用一個通用子程式以檢查中斷信息。接著,子程式會調用相應的中斷處理程式。不過處理中斷要快,可以通過處理中斷子程式的指針表實現。

clip_image002[8] 中斷體繫結構也保存被中斷指令的地址。許多舊的設計簡單地在固定位置中保存中斷地址。更為現代的結構將返回系統堆棧的地址,若果中斷處理程式需要修改處理器狀態,如修改寄存器的值,它必須明確地保存當前狀態併在返回前恢復該狀態。在處理中斷之後,保存的地址會裝入程式計數器,被中斷的計算可以重新開始,就好像中斷沒有發生一樣。

clip_image006

clip_image002[9] 存儲結構:電腦程式必須在記憶體(隨機訪問記憶體 random access memory,RAM)中以便運行。記憶體是處理器可以直接訪問的唯一的大容量存儲區域、通常是用被稱為動態隨機訪問記憶體(dynamic random access memory,DRAM)的半導體技術來實現的,是一組記憶體字的數組,每個字都有其地址。通過對特定記憶體地址執行一系列load或store指令來實現交互。指令load能將記憶體中的字移動到CPU的寄存器中,而指令store能將寄存器內容移動到記憶體。除了顯式使用load和store外,CPU可自動從記憶體裝入指令來執行。

一個典型的指令執行周期(在馮·諾依曼體繫結構上執行時)首先從記憶體中獲取指令,並保存到指令寄存器(instruction register)中,接著,指令被解碼,並可能導致記憶體中獲取操作數或將操作數保存到內部寄存器中。在指令完成對操作數的執行後,其結果可以回到記憶體。註意記憶體單元只看見記憶體地址流,它並不知道它們如何產生的(通過指令計數器、索引、間接、常量地址等),或它們是什麼地址(指令或數據)。相應地,可忽視程式如何產生記憶體地址,只對程式運行所生成的地址序列感興趣。

clip_image002[10] ①記憶體太小,不能永久地存儲所有需要的程式和數據。

clip_image002[11] ②記憶體是易失性存儲設備,當掉電時會失去所有內容。

電腦系統提供輔存(secondary storage)以作為記憶體的擴充。對輔存的主要要求是它必須要能夠永久地存儲大量的數據。

clip_image007

clip_image002[12] 常用的輔存為磁碟(magnetic disk),它能存儲應用程式和數據,絕大多數程式保存在磁碟上,直到要執行時才裝入到記憶體。適當的管理磁碟存儲對電腦系統來說十分重要。

上面只是一種存儲系統:由寄存器、記憶體和磁碟組成。除此之外,還有高速緩存,CD-ROM,磁帶等。

clip_image008

I/O結構:在電腦中,存儲器只是眾多I/O設備的一種,操作系統的大部分代碼用來進行I/O管理,這既是因為它對系統可靠性和性能的十分重要,也因為設備變化的特性。

通常,操作系統為每個設備控制器提供一個設備驅動程式。這些設備驅動程式理解設備驅動器,並提供一個設備與其餘操作系統的統一介面。

為了開始I/O操作,設備驅動程式在設備控制器中裝在適當的寄存器。

clip_image001

clip_image001電腦系統體繫結構

clip_image002[12]單處理器系統

clip_image002[12]多處理器系統

clip_image002[12]集群系統

單處理系統採用單處理器。在單處理器系統中,有一個主CPU能夠執行一個通用指令集,包括來自用戶進程的指令。

多處理器系統主要的三個優點:

clip_image002[12]增加吞吐量:通過增加處理器的數量,希望能在更短的時間內做更多的事情。

clip_image002[12]規模經濟:多處理器系統比單處理系統能節省資金,這是因為它們能共用外設,大容量存儲和電源供給。

clip_image002[12]增加可靠性:如果將功能分步在多個處理器上,那麼單個處理器失靈將使得整個系統停止,只會導致速度降低而言。

集群系統:由兩個或者多個獨立的系統耦合起來的。集群的定義目前尚未定形。較為常用的定義是集群電腦共用並通過區域網連接或更快的內部連接。

集群通常用來提供高可用性服務。這意味著即使集群中的一個或者多個系統出錯,服務仍然繼續。

集群可以是對稱的,也可以是非對稱的。非對稱集群(asymmetric clustering)中,一臺機器出於熱備份模式(hot standby mode),而另一臺運行應用程式。熱備份主機只監視活動伺服器。如果該伺服器失效,那麼備份伺服器會成為現行伺服器。對於對稱集群,兩個或多個主機都運行應用程式,它們互相監視。

集群系統的詳細介紹:

http://blog.csdn.net/wangxx2011/article/details/7425219


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

-Advertisement-
Play Games
更多相關文章
  • 一、配置伺服器 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雙系統, ...
  • 進程管理 進程需要一定的資源(包括CPU時間、記憶體、文件、I/O設備)以完成其任務。這些資源可以在進程創建時分配給進程,也可以在執行進程時分配給進程。除了在創建時得到各種物理和邏輯資源外,進程還可以接受傳輸過來的各種初始化數據(輸入)。 需要註意:程式本省並不是進程,程式是被動的實體,而進程是一個活 ...
  • Windows server 2016 RTM已流出,具體可以搜索wzor大神泄露的,英文版本是0911的。現根據我安裝後整理的如何配置使個人更適合使用。 一、組策略 WIN鍵+R鍵,輸入gpedit.msc,進入組策略設置。 1、電腦配置,Windows設置,安全設置,帳戶策略,密碼策略:"密碼 ...
  • 一、壓縮與解壓縮 1、compress [-rcv] 文件或目錄 <==壓縮 uncompress 文件.Z <==解壓縮 -r:可以連同目錄下的文件也同時進行壓縮 -c:將壓縮數據輸出成standard output(輸出到屏幕) -v:可以顯示出壓縮後的文件信息以及壓縮過程中的一些文件名變化 ( ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...