??作者: 主頁
我的專欄 C語言從0到1 探秘C++ 數(shù)據(jù)結構從0到1 探秘Linux 菜鳥刷題集 ??歡迎關注:??點贊??收藏??留言
??碼字不易,你的??點贊??收藏??關注對我真的很重要,有問題可在評論區(qū)提出,感謝閱讀?。?!
操作系統(tǒng)概念
什么是操作系統(tǒng)?
任何計算機系統(tǒng)都包含一個基本的程序集合,進行軟硬件資源管理的一個軟件,稱為操作系統(tǒng)(OS)。
設計操作系統(tǒng)的目的
- 與硬件交互,管理所有的軟硬件資源
- 為用戶程序(應用程序)提供一個良好的執(zhí)行環(huán)境
為什么要有操作系統(tǒng)?
答:它負責管理和控制計算機的硬件資源,提供用戶與計算機之間的接口,協(xié)調和調度各個程序的執(zhí)行,以及確保系統(tǒng)的安全和穩(wěn)定運行。簡而言之,操作系統(tǒng)存在的目的是為了有效地管理計算機系統(tǒng)的資源,提供良好的用戶體驗,并保證系統(tǒng)的正常運行。
操作系統(tǒng)定位
- 在整個計算機軟硬件架構中,操作系統(tǒng)的定位是:一款純正的“搞管理”的軟件
以銀行系統(tǒng)為例:
首先大家都知道是有一個銀行系統(tǒng)的,那么銀行本身上面肯定有各種各樣的硬件單元,比如說桌椅、宿舍、電腦、設備、倉庫、保險柜。
雖然我們進過銀行里面看它是什么樣子,但我們看到那些電影腦補的時候,我們應該知道,其中每一種就叫做銀行系統(tǒng)當中的一些硬件組件,那么硬件組件其中就需要有人專門去管理這些硬件。其中桌椅板凳我們有后勤的人員,宿舍有宿舍阿姨,電腦設備有公司的 IP 部門,倉庫保險柜有受過專業(yè)訓練的各種保安,那么再往上,只要我們保證桌椅、宿舍、電腦、設備、倉庫、保險柜我們全都有了,有了之后給他配上人。
比如說每一個人都能夠把自己的各種硬件都能管好,那么桌椅板凳相關數(shù)據(jù),宿舍的相關數(shù)據(jù),電腦的相關設備各種數(shù)據(jù)它能夠幫我采集上來就可以了。它這里面其中就是我們所謂的叫做銀行的一套體系。然后怎么辦?就給大家舉個例子,比如說我是一個銀行的行長,我想決策更換一下老的電腦,那我就要做這個決策是前提條件,是不是我得先讓這個管電腦的 it 部門給我匯總一下我們現(xiàn)在的電腦大概都是什么年份的?什么配置,然后那么其中我們可能有一半是老的,一半是新的,那我這個時候就可以做這個決策了。
我說it 部門,給你們撥一筆預算,把電腦設備給我更新一下,好吧?我們不管 15 年之前的,我們全部更換好。當然如果我作為一個行長,我發(fā)現(xiàn)這個電腦都挺新的,那我就放棄他這個更新,放棄本身就是決策。
總之我只要能夠在上面能夠通過某些人獲取到電腦設備相關的數(shù)據(jù),我也就能夠知道對該硬件做好管理,這個其實不難理解,但是同學們,那么大家要明白一個非常重要的道理,就是我們的銀行系統(tǒng)當中銀行的一套系統(tǒng),首先需要有一個模塊,這個模塊功能點需要把所有的這些硬件以驅動程序驅動,那么把它全部管理起來,就相當于有一個專門的負責人把這些硬件全部管理起來。也就是說銀行的桌椅、宿舍、電腦設備、倉庫都應該被統(tǒng)一的一個人管理起來,這是管理我們硬件,
第二個大家可以看到我們能夠理解的一個非常關鍵的點,就是在銀行當中,他主要是給我們提供服務,比如說我去銀行辦事,那么就會有銀行的工作人員來告訴我怎么辦,而這批工作人員他根本就不關心桌椅是什么樣子,宿舍什么樣子,然后電腦設備什么樣,保險柜在哪里?他最關心的是你要干啥?你這個客戶你是要取錢還是存錢?所以銀行當中還會存在大量的員工,這里就是我們所對應的正兒八經(jīng)銀行,在銀行體系當中進行銀行業(yè)務管理的相關人員。
好,下面你再想想,因為我們這些業(yè)務人員,他的業(yè)務能力其實是有的,他能夠幫我們進行存取我們對應的錢,銀行里面也有錢,那么這個銀行的業(yè)務人員就叫做所對應的軟件,桌椅板凳以及配套的這些管理人員,他就類比到對應的硬件,所以軟件和硬件相結合我們就能夠完成某些事情。
比如說我是銀行的工作人員,有人專門給我把桌椅關好了,宿舍管好,電腦設備給我調配成最新,各種軟件全給我裝上,然后倉庫、保險柜那么各種管理給我做好,然后我作為銀行的工作人員,那么我只需要對接客戶,那么這個客戶想存錢,好,那么錢給我,我來給用戶的賬上把錢增加上去,然后把錢放到倉庫里。然后如果這個用戶想貸款,我就直接根據(jù)他的征信,然后評估出他能貸多少錢,甚至他如果有抵押,那我就看下他的抵押額,給他再貸錢。其中你會發(fā)現(xiàn)其中如果我們的業(yè)務人員和我們的硬件相配合,我們就能夠完成某些貸款或者存錢或者取錢的相關業(yè)務。
好,那么其中對我們來講這是銀行的工作人員,那么其中銀行里面還有各種各樣的什么保安,什么大堂經(jīng)理,亂七八糟的這種人,當然這些其實都是在銀行當中辦事的,他們的更多角色其實是屬于一個共同構成我們銀行系統(tǒng)的一些環(huán)節(jié)。所以對我們來講,只要有了這樣的一套系統(tǒng),那么只需要讓我們的銀行行長統(tǒng)一把這批人管理起來好就可以。而其中比如說桌椅板凳出問題了,那么上層這部分就能做管理,那么同樣的這一批工作人員,那么他的業(yè)務能力怎么樣?有沒有出問題?其中我們也是需要由我們的行長來對他進行管理,我們可以把這一套東西統(tǒng)一可以看作成叫做銀行的管理。
操作系統(tǒng)的內容
操作系統(tǒng)包括什么?
- 內核(進程管理,內存管理,文件管理,驅動管理)
- 其他程序(例如函數(shù)庫,shell程序等等)
用戶部分:自主開發(fā),指令,yum。
用戶操作接口部分:庫函數(shù),把系統(tǒng)調用的函數(shù)再次封裝了一遍,提供出來的函數(shù)。
system call部分:操作系統(tǒng)為程序員提供的接口。
操作系統(tǒng)部分:內存管理,進程管理,文件管理,驅動管理。
驅動程序:網(wǎng)卡驅動,硬盤驅動,其他驅動,有多少種硬件就對應對少驅動。
硬件部分:網(wǎng)卡,硬盤,其他。
如何理解 “管理”
主要理解好一下兩點:
-
1.描述被管理對象
- 描述起來,用struct結構體。
-
2.組織被管理對象
- 組織起來,用鏈表或其他高效的數(shù)據(jù)結構。
操作系統(tǒng)是怎么做管理的?
比如說實際上我們在學校當中,校長和學生之間就是典型的管理和被管理者,但是我們實際發(fā)現(xiàn)校長和學生是管理者和被管理者,但是他們并不直接溝通,我們從來沒見過他,也沒見過我,我也沒見過他,但是他照樣把我管理得明明白白的。
那么為什么呢?是因為那么他本質上不是對我人身做管理,而是對我的個人相關信息做管理,所以所謂的管理本質就是對數(shù)據(jù)做管理。所以我們需要在校長和學員之間有一個執(zhí)行者的角色,包括我們的驅動程序,這個其實就叫做輔導員或者是驅動程序幫我能夠采集到我們普通客戶或者被管理對象的相關數(shù)據(jù),然后同時還會執(zhí)行一些特定的管理命令,那么其中我們的輔導人就是典型的執(zhí)行者角色,而實際上,那么我們最終被管理對象的數(shù)據(jù)一定會涉及得非常多,不要覺得你計算機上學校里幾萬人很直觀,你也不要認為計算機上那種硬件它的那些相關數(shù)據(jù)就不多,實際上它還非常多。
然后再加上操作系統(tǒng)內部可能也會有各種設計方式,所以那么我們最終操作系統(tǒng)就通過驅動程序的存在,就能夠幫我們去對硬件或者軟件資源進行管理,變成對數(shù)據(jù)的管理。但這種數(shù)據(jù)量比較大,操作系統(tǒng)如果沒有一個有序的、有組織化的結構的方式把我們的數(shù)據(jù)組織起來,那么最終也就沒辦法管理,所以我們最后就得出了一個結論,有的操作系統(tǒng)要管理數(shù)據(jù),數(shù)據(jù)管理沒錯,但也必須把我們對應的數(shù)據(jù)采集到之后,然后將它以特定的數(shù)據(jù)結構組織起來。
所以所謂的對進程做管理,本質上就對我們對應的對軟硬件資源做管理,本質上就已經(jīng)變成了對某種數(shù)據(jù)結構的管理。
假設我們以通訊錄為例建立了一個管理,其實它就可以被我們在計算機當中抽象出來,讓我們能夠從管理的角度去理解,將管理轉化成對某種數(shù)據(jù)結構的管理,所謂的管理動作最后落實到操作系統(tǒng)內核里,就變成了對某種結構的增刪查改,然后那么有了這樣的宏觀認識之后,最終得出來的結論就是管理的理念。管理的理念就叫做先描述再組織好,也就是說我們要先將被管理對象描述抽象成特定的結構,那當然定義對象肯定是少不了,然后我們新增一個管理對象,其實在內核當中就是新增一個描述類別,也就是我們抽象出來的類或者是struct,用它來定義一個變量,并且的話就是 Malloc new 一個對象,然后將該對象再投入到我們所對應的鏈表或者各種數(shù)據(jù)結構當中。
最終操作系統(tǒng)得到的代碼,它就轉化成了對于這些數(shù)據(jù)結構的各種數(shù)據(jù)結構算法,也就變成了所謂的操作實踐,叫做鏈表。比如說鏈表又可以實現(xiàn)我們所聽過的增刪查改,以及鏈表的各種各樣其他的一些方式如刪節(jié)點或者是查節(jié)點其實是一樣的,對我們來講,只要能夠反過來有了這樣的結構,我們就可以很有序地將我們的數(shù)據(jù)管理起來。數(shù)據(jù)一旦能夠被我們使用特定算法管理起來之后,操作系統(tǒng)就可以將我們的數(shù)據(jù)再進一步地和驅動程序結合,就能夠對硬件做相關管理。
系統(tǒng)調用和庫函數(shù)概念
-
在開發(fā)角度,操作系統(tǒng)對外會表現(xiàn)為一個整體,但是會暴露自己的部分接口,供上層開發(fā)使用,這部分由操作系統(tǒng)提供的接口,叫做系統(tǒng)調用。
-
系統(tǒng)調用在使用上,功能比較基礎,對用戶的要求相對也比較高,所以,有心的開發(fā)者可以對部分系統(tǒng)調用進行適度封裝,從而形成庫,有了庫,就很有利于更上層用戶或者開發(fā)者進行二次開發(fā)。
系統(tǒng),不管是銀行系統(tǒng)還是所謂的叫做操作系統(tǒng),它不相信任何人,所以他們兩個對外暴露提供接口的時候,都是以統(tǒng)一的接口的方式去提供的,沒有其他方式,只能使用系統(tǒng)調用接口來訪問操作系統(tǒng)。就如同只能通過柜臺的方式來訪問,那么來跟銀行內部的工作人員去溝通,來完成某項工作。
操作系統(tǒng)是一套體系,和銀行體系是一樣,那銀行體系有自己的軟件等硬件驅動,還有個所謂的管理者角色還有各種接口,基于這個接口之上就有人幫我們去搭建了各種各樣的上層文件。
最典型的就是銀行服務,在窗口之外的那些服務人員給我們提供出同樣的操作系統(tǒng),它也有它自己對外的接口,暴露的是不會暴露自己任何細節(jié)的,它只會對外以接口的方式去給用戶開放適當?shù)臋嘞蓿趺醋層脩羧ピL問呢?這些操作性接口都覺得不方便,所以就有人基于系統(tǒng)接口去完成了各種那封裝,然后有的是為了方便操作了必須具有的圖形化界面,有了,是為了方便我們編程的,所以就有了我們的更多語言第三方標準后,然后甚至還有各種其他比較。所以當我們不斷再去網(wǎng)上搭建的時候,我們會發(fā)現(xiàn)其實用起來就應該越來越舒服,越來越簡單。文章來源:http://www.zghlxwxcb.cn/news/detail-640468.html
后記
我們最終得出來了兩個大結論,第一個,所謂操作系統(tǒng)進行管理,需要先描述,再組織。第二個結論,操作系統(tǒng)對外提供服務是通過系統(tǒng)這種接口的方式來完成對外提供服務的。其他只要理解一下就好了,本篇就結束了~文章來源地址http://www.zghlxwxcb.cn/news/detail-640468.html
到了這里,關于《Linux從練氣到飛升》No.11 初識操作系統(tǒng)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!