1. 程式人生 > >作業系統(一)-------作業系統概述

作業系統(一)-------作業系統概述

      作業系統原理課的第一講 作業系統概述,在這一講裡頭,我們將學習以下這些內容 首先我們通過一個程式的執行過程 來看一下,作業系統做了什麼,然後我們介紹作業系統的定義和它的作用 作業系統是一個軟體,那麼相對於其它的軟體 它有哪些特徵呢?有哪些特點呢 另外我們介紹一些典型的作業系統架構 通過介紹Windows、 Unix和Linux作業系統的架構 讓我們有一個感性的認識,看一看作業系統都有哪些功能 它們之間有哪些關聯,最後我們介紹一下作業系統的分類 首先我們先看一下 作業系統做了什麼,這是一個 簡單的C語言程式helloworld 我們想通過這個程式的執行過程,來看一下作業系統 對這個程式的執行過程有哪些支援,我們先來看一下程式 這個程式裡頭主要功能是呼叫了一個puts函式 它的作用是在標準的輸出裝置上,也就是我們說的顯示器上 顯示字串"hello world" 好下面我們來看一下這個程式的執行過程 。
     首先我們要啟動程式執行 使用者要告訴作業系統,執行helloworld程式
大家可以想一想,有哪些方式 可以告訴作業系統要執行某個程式 比如說,我們可以在命令列鍵入相應的命令 我們也可以通過滑鼠雙擊helloworld程式的圖示 通常告訴作業系統執行
一個程式的方法 不止一個,作業系統接到了使用者的請求之後 就會根據使用者提供的檔名 到磁碟上找到這個程式的相關資訊 找到資訊之後,會去檢查這個程式 是不是一個可執行檔案,因為有的時候我們 的一個檔案它不是可執行檔案,那麼作業系統就不能執行這個檔案 就會去報錯,那麼如果是一個可執行檔案,作業系統才能正確地執行 在檢查完型別之後,作業系統會根據程式首部資訊 來確定程式碼和資料在這個可執行檔案當中的位置 並計算出它相應的磁碟塊地址 關於可執行檔案
,有哪些 常見的格式呢,大家可以去查一下相關的資料 那麼我們知道Windows作業系統下,可執行檔案的格式呢是PE格式 在Linux作業系統下,可執行檔案的格式呢是ELF格式 ELF,大家可以去自行了解一下這方面的知識 為了執行這個helloworld程式 作業系統首先要建立一個新的程序 並將helloworld程式的可執行檔案格式 對映到該程序結構 表示由該程序來執行這個helloworld程式 做完了這件事情,作業系統就把控制權 交給了排程程式,我們假設排程程式 正好選中了helloworld程式,那麼 由作業系統為這個helloworld程式設定CPU 上下文環境,並跳到程式的開始之處 準備執行這條這個程式,那麼下一個指令週期就是
執行helloworld程式了
helloworld程式的 執行的時候,當執行第一條指令的時候 會發生什麼事情呢?實際上就是發生了缺頁異常,那麼為什麼呢? 因為我們知道,程式在執行的時候,先要把程式的程式碼和資料讀入記憶體 CPU才能去執行,但是helloworld程式的程式碼和資料還沒有讀入記憶體呢 所以這個時候呢,硬體機制就會 捕獲出缺頁異常,並且 把控制權交給作業系統 作業系統管理了計算機系統中的 記憶體,有很多的記憶體,比如說,我們說 有頁式儲存管理方案的話,那麼記憶體就有很多很多的物理頁面 作業系統的記憶體管理模組,就會分配一頁空閒的實體記憶體 並且根據前面計算出的磁碟塊地址 
把helloworld程式的程式碼讀入記憶體 從磁碟讀入記憶體,然後 繼續執行helloworld程式
,有的時候程式很大 一頁記憶體還不夠,因此在這個執行過程中會多次地產生缺頁異常 然後去到磁碟讀入程式 到記憶體,這個過程會有多次 下面helloworld程式
執行puts函式 那麼puts函式的作用,是在標準的輸出裝置上 顯示字串,那麼這個標準輸出裝置,通常就是我們的顯示器或者說螢幕 那麼puts函式呢,它實際上呢是一個系統呼叫 是由作業系統來完成這個功能 所以控制權又轉回到作業系統 作業系統
找到要將字串送到哪一個顯示裝置 那麼通常這個裝置呢是由一個程序控制的,所以作業系統 把要寫的字串實際上是送給了這個程序 那麼控制裝置的程序,會告訴裝置的視窗系統,它要顯示字串 視窗系統確定這是一個合法的操作,然後將字元
串轉換為畫素 把畫素寫入裝置的儲存映像區 以下就是視訊硬體的工作 視訊硬體將畫素,轉換成顯示器可以接收的一組控制訊號或資料訊號 那麼顯示器再去解釋這個訊號,激發液晶屏 其結果,OK,我們在 螢幕上就看到了字串"hello world"
 那麼以上就是一個,非常簡單的程式的一個執行過程 從啟動到執行,到結束 從這個過程當中,我們得到什麼結論呢? 我們看到,在CPU上執行一個使用者程式 這個使用者程式會不時地去請求作業系統的服務 因此在CPU上,時而執行的是使用者程式 時而呢
,是作業系統程式在執行,我們來看一下 helloworld程式,在執行的時候呢,需要作業系統來建立程序 因此呢轉到作業系統建立程序,程序建立完了以後呢,那麼從作業系統返回 那麼接著執行這個helloworld程式 那麼出現了缺頁異常以後呢,控制權
又轉回了作業系統 作業系統呢分配實體記憶體,給這個使用者程式 然後呢又轉向使用者程式接著執行 然後helloworld程式又要去執行puts函式,又轉向了作業系統
那麼這是從使用者程式,在執行 過程中,不斷請求作業系統服務這個角度來看 程式執行的
過程,如果我們從另外一個角度來看使用者程式的執行呢? 實際上呢,是作業系統 在執行過程中呢,如果選中了一個程式,那麼 就去通過排程選中這個程式,去執行這個程式 程式執行過程中呢,會不斷地去陷入作業系統 由作業系統完成一些服務,
然後再通過排程再選中程式,接著執行 實際上是這樣一個過程,那麼 從上面的介紹   我們看到在一個程式的 執行過程中,作業系統負責了這個程式的啟動過程 負責了這個程式執行的過程,同時在執行的 過程中,不斷地去為使用者程式的執行 提供各種各樣的支援 。

相關推薦

作業系統-------作業系統概述

      作業系統原理課的第一講 作業系統概述,在這一講裡頭,我們將學習以下這些內容 首先我們通過一個程式的執行過程 來看一下,作業系統做了什麼,然後我們介紹作業系統的定義和它的作用 作業系統是一個軟體,那麼相對於其它的軟體 它有哪些特徵呢?有哪些特點呢 另外我們介紹一些

作業系統知識點總結作業系統概述

《作業系統概述》 作業系統結構圖: (1)作業系統的基本概念:作業系統(Operating System, OS)是指控制和管理整個計算機系統的硬體和軟體資源,併合理地組織 排程計算機的工作和資源的分配,以提供給使用者和其他軟體方便的介面和環境的程式集合。 (

作業系統:簡單輪轉排程

昨天寫作業系統的實驗報告,開始思路很明確,實現起來就碰到麻煩了。花了很多時間去糾正連結串列建立問題,輪轉排程演算法邏輯問題等一系列細節問題。 花了四個多小時去完成程式碼,本來就不擅長程式設計,就只能多花時間了,但真正地做出來覺得再多時間也是值得的。 下面是實驗報告要求及其

作業系統---Linux與Windows對比

轉自:https://blog.csdn.net/lou19991221/article/details/80113456 Linux 什麼是linux? Linux是一套免費使用和自由傳播的類Unix作業系統,是一個多使用者、多工、支援多執行緒和多CPU的作

VMware workstation批量建立虛擬機器和自動化安裝作業系統

一. 簡述 作為從事IT行業運維工作的Linuxer,大多情況下需要在測試環境中部署業務系統並進行測試,在沒有足夠的計算儲存網路條件下,使用虛擬機器進行虛擬叢集的建立和使用,是一種不錯的學習和實踐方式。 本篇部落格主要介紹如何使用VMware workstation進行虛擬

uCOS-II學習筆記:實時作業系統

1.前後臺系統:前後臺系統的架構用一句話來形容的話,就是一個大的迴圈,加上中斷,就形成了一個整的體系。 假設來了中斷需要處理模組3,如果模組3的處理是最緊迫的,但是當前cpu 只執行到模組1, 這樣的話,必須還要承受模組2的執行時間延遲,才能輪到模組3的處理,當模組越多的

作業系統概論複習要點筆記

一、基本概念  一、作業系統基本概念 定義:作業系統是管理軟硬體資源、控制程式執行,改善人機介面,合理組織計算機工作流程和為使用者使用計算機提供良好執行環境的一種系統軟體 任務:管理好計算機全部軟硬體資源,提高計算機的利用率;擔任使用者與計算機之間的介面,使使用者通過作業系

安裝Centos7 、 Mysql8 叢集,實現讀寫分離 高可用-- 作業系統安裝篇

零、寫在前面    為了嘗試新技術和業務需要,因此打算搞一套這樣的環境玩兒一下    我的虛擬機器環境是VMWare12    這是第一篇,Centos7系統的安裝篇一、硬體規劃    我用的是自己的本

openstack controller ha測試環境搭建記錄——作業系統準備

為了初步瞭解openstack controller ha的工作原理,搭建測試環境進行學習。在學習該方面知識時,當前採用的作業系統版本是centos 7.1 x64。首先在ESXi中建立2臺用於測試的虛機,最小化安裝完成centos,配置IP分別為10.0.0.12、10.0.0.13,主機名分別為contr

SylixOS 經得起檢驗的國產作業系統

       說起國產作業系統,大多數人恐怕都得無語。這裡我介紹一款國人自己開發的嵌入式實時作業系統SylixOS,對嵌入式有興趣的朋友可以關注一下。官網:http://www.sylixos.com。 實時作業系統和通用的分時作業系統的區別     實時系統(Real-t

深入解析Mac OSX & IOS 作業系統

Unix 的系統目錄 OSX 是一個符合UNIX標準的系統,因此也有那些標準的UNIX具有的目錄結構 /bin UNIX中的二進位制程式,這是常用UNIX命令所在的地方 /sbin 系統程式,這些二進

自己動手寫作業系統

從去年就想好好的讀一下這本書,跟著書上做一下,但是給耽擱了,現在就好好的開始探索這麼書吧! 雖然我很想在這裡吹一段這本書有多麼的厲害,但是!我第一章都沒有看完,吹不了!!!等我讀的個七七八八再回來吹吧。 我是在搜尋嵌入式的學習路線中發現的這本書,當時他們說這本書很有趣,操作

面試整理之作業系統

前言 前幾天騰訊第3次一面通過了然後被取消趕著走校招路線= = 還是要繼續努力的,把之前整理的作業系統面試知識點放在部落格上 知識點主要整理自教材,以及零零碎碎參考了一些部落格,等晚點再放參考連結。 1、程序和執行緒的區別 程序:一個程式在一個數

現代作業系統

一.引論 多數計算機有兩種執行模式:核心態和使用者態。軟體中最基礎的部分是作業系統,它執行在核心態(管態、核心態),在這個模式下,作業系統具有對所有硬體的完全訪問權,可以執行機器能夠執行的任何指令。軟體的其餘部分執行在使用者態,在使用者態下,只使用了機器指令中

計算機作業系統學習心得作業系統概論

作業系統(operating system)OS: 1.1作業系統的目標和作用: (1)方便性:<1>系統可以使用編譯命令將使用者採用高階語言書寫的程式翻譯成機器程式碼;                        <2>直接通過OS所提供的各種命

VV的作業系統筆記作業系統I SeeYou!!!!

開發十年,就只剩下這套架構體系了! >>>   

我是如何學習寫一個作業系統:開篇

前言 有人說程式設計師的三大浪漫分別是編譯原理、作業系統和計算機網路 在之前完成了一兩個小軟體和網站後遇見了編譯原理,也不知道為什麼就傻傻的學,還寫了一個從零寫編譯器的系列學習筆記,不過都是小打小鬧,只能算作摸到了一點點入門的門檻。再後來想深入學習的時候,因為暑假在家很多書買來的話再帶去學校很麻煩,就索性

Maven詳解------ Maven概述

粘貼 cvs 模塊 strong ron 標準化 pom 標準 只需要 1、引言     你能搜到這個教程,說明你對 Maven 感興趣,但是又不是太理解。那麽接下來這個系列的教程將會詳細講解 Maven 的用法,相信你看完之後,一定能對 Maven 的理解更進一步!

Spring Boot參考教程 SpringBoot概述及Hello World

自動 構建項目 測試 run world tar 建模 持久化 開啟 前言 筆者閑來無事,寫此文檔,不足之處,海涵! 本文檔將詳細介紹Sping Boot特性,使用方法,及與第三方框架的集成應用。使開發人員可以快速的了解SpringBoot,熟練的使用S

Java學習基礎概述

java 所在 應用 enter 代碼實現 ase 產品 stand 就是 寫代碼: 1,明確需求。我要做什麽? 2,分析思路。我要怎麽做?1,2,3。 3,確定步驟。每一個思路部分用到哪些語句,方法,和對象。 4,代碼實現。用具體的java語言代碼把思路體現出來。 學