目錄linux
可能有不少同窗都有碰到下面我說的這個場景,當咱們花了8888大洋買了一臺16G內存的專業吃雞電腦時,打開電腦發現本身的電腦內存只有15G不到,而後就開始了吃雞之旅。ios
可是若是你對你少掉的內存關心的話,你會發現並非廠商爲了節省造價成本,而這少掉的內存被某種東西給佔用了,這種東西就是咱們這篇文章的主角——操做系統。編程
在瞭解操做系統以前,咱們首先回顧下編程的目的,編程的目的是奴役計算機,取代人力。windows
如今想象一個這樣的場景,若是你是奴隸主(人),你在黑市上買了一個奴隸(計算機),你想讓這個奴隸幹掃地的活,可是這個奴隸可能不明白掃地是什麼意思,甚至可能都不知道你全程在逼逼啥。這個時候你可能會考慮買一個管家(操做系統),這個管家既能和你交流,也能和奴隸交流,而後你有任何命令都將由這個管家傳達給奴隸。架構
如今讓咱們來想象咱們在計算機上打開一個文件的流程:首先咱們須要開機,其次咱們須要打開一個文件。可能咱們全部人都會認爲這沒啥,可是,這個時候你須要注意,文件它是什麼呢?由於咱們太習覺得常了,因此咱們忽略了這個問題:文件是什麼呢?這個時候我不得不告訴你,你能夠把文件理解成一個虛擬的單位,有了這個虛擬的單位,咱們再也不須要考慮機械手臂的運轉,你只須要文件能夠雙擊打開、能夠寫入數據、能夠CTRL+S保存。操作系統
如今讓咱們來思考文件這個虛擬的單位是誰提供的呢?若是有使用過linux系統的同窗應該知道,linux系統中看不到任何一個文件的圖標,只有一行一行的代碼?(可是Linux一切皆文件)blog
linux系統既然看不到文件的圖標,那麼windows系統的電腦上文件圖標是誰提供的呢?毫無疑問。這個時候咱們能夠得知windows系統電腦上的文件這個虛擬單位是windows操做系統提供的。也正是在啓動計算機的時候,計算機開啓了操做系統這個軟件(計算機除了硬件,就是軟件,軟件通常用來控制硬件)。可是須要注意的是,只要你想打開一個文件,歸根結底都是須要你去操做硬件的,只不過是操做系統不只給咱們提供了文件這個概念,而且把對文件打開的這個複雜操做封裝成了一個雙擊文件的接口給咱們。接口
剛剛和同窗們聊了聊計算機打開文件的流程。咱們知道了文件這個虛擬概念是操做系統給咱們的。這個時候咱們須要回過頭來看看咱們的計算機,計算機建立的初心不是讓咱們寫一個操做系統來控制硬件的。內存
計算機建立的目的是爲了讓咱們人奴役他們,讓它們替咱們幹活。那是否是說咱們能夠經過計算機開發一款ATM系統,讓它們天天24小時不停歇的吞錢、吐錢呢?毫無疑問是能夠的。有了操做系統在計算機上的一切操做都將變得很簡單,那是否是說咱們就須要在每臺計算機上都寫一套操做系統呢?經過常識來看,咱們是不須要的,咱們只須要複製其餘人的操做系統便可,可是在計算機建立初期是須要本身手寫操做系統的?但現在,若是真的讓咱們寫一個操做系統出來,可能咱們一生都使出吃奶的勁都無能爲力。資源
應用程序其實很好理解,計算機只由硬件和軟件組成,應用程序必定不是硬件,那麼軟件中除了操做系統咱們均可以稱之爲應用程序。說了這麼多,其實就像讓你明白一件事:應用程序位於操做系統之上,它主要用來幫助人幹各類各樣的工做,它不直接與硬件交互。
經過上面從文件到應用軟件的鋪墊,咱們在這裏直接給出操做系統的定義:操做系統位於計算機硬件與應用軟件之間,它是一個協調管理計算機資源和軟件資源的控制程序。它把對硬件的複雜操做,封裝成一個一個簡單的接口,供人們使用。
爲了明白爲何要有操做系統。咱們在這裏再給出一個計算機系統的組成:一套完整的計算機系統由計算機硬件、操做系統和應用程序組成,對這三個組件的解釋以下:
因爲咱們之後開發都是都是應用程序,應用程序沒法操做硬件,但凡須要操做硬件,都是調用操做系統的接口。
操做系統的啓動:操做系統代碼由硬盤讀入內存(BIOS程序),CPU運行操做系統代碼(CMOS存儲器),運行成功後操做系統接管操做硬件的工做。
應用程序的啓動:應用程序代碼有硬盤讀入內存,CPU運行應用程序碼,運行成功便可使用應用程序。雖然應用程序的啓動和操做系統的啓動有着殊途同歸之處,可是得明確一點:裝了操做系統以後才能裝應用程序,纔有應用程序這個概念。所以上述應用程序對硬件控制的每一步操做,都依賴於操做系統的幫助。