操作系統導論

来源: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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...