day2 作業系統

2021-08-02 20:25:50 字數 1725 閱讀 5287

一.為何要有作業系統

程式設計師無法把所有的硬體操作細節都了解到,管理這些硬體並且加以優化使用是非常繁瑣的工作,這個繁瑣的工作就是作業系統來幹的,有了他,程式設計師就從這些繁瑣的工作中解脫了出來,只需要考慮自己的應用軟體的編寫就可以了,應用軟體直接使用作業系統提供的功能來間接使用硬體。

二.作業系統的位置

作業系統位於計算機硬體與應用軟體之間,本質也是乙個軟體。作業系統由作業系統的核心(執行於核心態,管理硬體資源)以及系統呼叫(執行於使用者態,為應用程式設計師寫的應用程式提供系統呼叫介面)兩部分組成,所以,單純的說作業系統是執行於核心態的,是不準確的。

三.作業系統的功能

作業系統應該分成兩部分功能:

①:隱藏了醜陋的硬體呼叫介面,為應用程式設計師提供呼叫硬體資源的更好,更簡單,更清晰的模型(系統呼叫介面)。應用程式設計師有了這些介面後,就不用再考慮操作硬體的細節,專心開發自己的應用程式即可。

比如,磁碟資源的抽象是檔案系統(c盤,d盤,e盤...下的目錄及檔案),有了檔案的概念,我們直接開啟檔案,讀或者寫就可以了,無需關心記錄是否應該使用修正的調頻記錄方式,以及當前電機的狀 態等細節

需要指出的是,作業系統的實際客戶是應用程式(應用程式設計師負責開發應用程式,因而也可以說應用程式設計師是作業系統的客戶)。應用程式直接與作業系統及其抽象打交道。而最終,使用者則是與應用程式(即使用者介面)打交道,或者是命令列shell或者是圖形介面(比如桌面),它們都只是執行於作業系統之上的應用軟體,並不屬於作業系統。

②:將應用程式對硬體資源的競態請求變得有序化,例如:很多應用軟體其實是共享一套計算機硬體,比方說有可能有三個應用程式同時需要申請印表機來輸出內容,那麼a程式競爭到了印表機資源就列印,然後可能是b競爭到印表機資源,也可能是c,這就導致了無序,印表機可能列印一段a的內容然後又去列印c...,作業系統的乙個功能就是將這種無序變得有序(多路復用)

四。作業系統的發展

第一代計算機(1940~1955):真空管和穿孔卡片

第二代計算機(1955~1965):電晶體和批處理系統

第三代計算機(1965~1980):積體電路晶元和多道程式設計

***計算機(1980~至今):個人計算機

五.多道技術

多道技術中的多道指的是多個程式,多道技術的實現是為了解決多個程式競爭或者說共享同乙個資源(比如cpu)的有序排程問題,解決方式即多路復用,多路復用分為時間上的復用和空間上的復用。

空間上的復用:將記憶體分為幾部分,每個部分放入乙個程式,這樣,同一時間記憶體中就有了多道程式。

時間上的復用:當乙個程式在等待i/o時,另乙個程式可以使用cpu,如果記憶體中可以同時存放足夠多的作業,則cpu的利用率可以接近100%,類似於我們小學數學所學的統籌方法

空間上的復用最大的問題是:程式直接的記憶體必須分割,這種分割在硬體層面實現,由作業系統控制實現。如果記憶體彼此不分割,則乙個程式可以訪問另外乙個程式的記憶體,

首先喪失的是安全性,比如你的qq程式可以訪問作業系統的記憶體,這意味著你的qq可以拿到作業系統的所有許可權。

其次喪失的是穩定性,某個程式崩潰時有可能把別人的記憶體也給**了,比方說把作業系統的記憶體給**了,則作業系統崩潰。

30天自製作業系統day2

這一章主要講解彙編基礎知識和makefile的使用 org指令 指定開始執行程式的時候,把程式裝載到記憶體的哪個位址。如果不指定,則預設從0x0開始,會與bios程式發生衝突。程式helloos.nas中,指定的是0x7c00。這是因為規定的啟動區內容裝載位址是0x00007c00 0x00007d...

30天自製作業系統 Day2

還是follow書籍,並且也參考別人的筆記,還是這位大佬的筆記做的很詳細,把鏈結放在這裡 既然別人已經做了很詳細的筆記了,我就不用再重複了。學習中遇到了一些問題,和大家分享一下。最開始我按照書裡的描述,把檔案copy到helloos4下面,執行make r helloos.img的時候,報錯說 no...

從零實現乙個作業系統 day2

我的部落格 startcraft.cn 今天主要是對作業系統的啟動進行學習,因為都是理論的部分,這篇部落格就當學習的筆記了 首先在按下電源鍵後計算機首先讀取寫在rom中的bios basic input output system 基本輸入輸出系統 然後bios程式會進行硬體自檢,若硬體出問題發出相...