自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

操作系統(tǒng) OS 與內(nèi)核 Kernel 有什么區(qū)別?

系統(tǒng) Linux
實(shí)際上我們熟悉的Linux只是內(nèi)核而不能稱得上是操作系統(tǒng),Ubuntu則可以認(rèn)為是操作系統(tǒng),其內(nèi)核是Linux;RedHat也是操作系統(tǒng),其內(nèi)核同樣是Linux;我們可以看到,盡管Ubuntu和RedHat是不同的操作系統(tǒng),但其內(nèi)核可以是相同的。

Canoo公司有一項(xiàng)核心技術(shù)專利,這就是它們的通用電動(dòng)底盤技術(shù),長得是這個(gè)樣子,非常像一個(gè)滑板:

這個(gè)帶輪子、有電池、能動(dòng)的滑板已經(jīng)包含了一輛車最核心的組件,差的就是一個(gè)外殼。

這個(gè)看起來像滑板的東西就是所謂的電池系統(tǒng)和底盤一體化技術(shù),Canoo公司在它們的通用底盤上加裝不同的外殼就能制造出不同的車型。

什么是內(nèi)核?

在上面這個(gè)示例中,包含輪子以及電池系統(tǒng)的底盤就好比內(nèi)核,而套上外殼加上椅子以及內(nèi)飾后的整體成品就好比操作系統(tǒng)。

內(nèi)核僅僅是操作系統(tǒng)的一部分,是真正與硬件交互的那部分軟件,與硬件交互包括讀寫硬盤、讀寫網(wǎng)盤、讀寫內(nèi)存以及任何連接到系統(tǒng)中的硬件。

除了與硬件交互外,內(nèi)核還負(fù)責(zé)分配資源,分配什么資源呢?所謂資源就是硬件,比如CPU時(shí)間、內(nèi)存、IO等等,這些都是資源。

現(xiàn)在我們知道了內(nèi)核負(fù)責(zé)分配資源,那么問題來了,要怎么分配這些資源呢?答案就是以進(jìn)程的形式來分配資源。

怎么分配呢?

一句話:虛擬大法好。

每個(gè)進(jìn)程都認(rèn)為自己在獨(dú)占CPU,這通過CPU時(shí)間片來實(shí)現(xiàn),內(nèi)核讓CPU在各個(gè)進(jìn)程之間快速切換,這樣程序員寫好程序員后直接運(yùn)行即可,即使在單核系統(tǒng)中運(yùn)行成百上千個(gè)進(jìn)程都沒有問題。

每個(gè)進(jìn)程都認(rèn)為自己在獨(dú)占內(nèi)存,這通過虛擬內(nèi)存來實(shí)現(xiàn)。

有的同學(xué)可能會(huì)問,為什么都要虛擬化呢?

答案顯而易見,因?yàn)橛?jì)算機(jī)系統(tǒng)內(nèi)的資源是有限的,我們只有幾個(gè)CPU核心、幾個(gè)G的內(nèi)存,但卻要同時(shí)運(yùn)行幾百幾千個(gè)進(jìn)程,除此之外我們別無它法。

如果你還知道有其它更高效的方法那么趕緊放下手機(jī),馬上將你的思想寫成論文發(fā)表出來,下一屆的圖靈獎(jiǎng)非你莫屬,當(dāng)然在發(fā)表獲獎(jiǎng)感言的時(shí)候一定要記得表示是受到了【碼農(nóng)的荒島求生】這個(gè)公眾號(hào)的啟發(fā)才想到的。

因此,內(nèi)核的職責(zé)就是以進(jìn)程的形式來分配CPU時(shí)間,以虛擬內(nèi)存的形式來分配物理內(nèi)存,以文件的形式來管理IO設(shè)備。

什么是操作系統(tǒng)?

然而只有一個(gè)內(nèi)核實(shí)際上是做不了什么真正有用的事情,就像上面示例中那個(gè)通用底盤一樣,這個(gè)底盤確實(shí)能跑起來,但你沒辦法開著這樣一個(gè)底盤出去浪,因?yàn)檫@個(gè)底盤很難用。

因此,你不得不加裝上方向盤、座椅以及車身外殼等,同樣的道理,內(nèi)核是給人用的,為了與內(nèi)核交互,發(fā)明了命令行以及圖形界面GUI。

圖片圖片

除了給普通用戶提供使用的接口之外,操作系統(tǒng)還需要給程序員提供編寫程序的接口,當(dāng)我們寫的程序依賴內(nèi)核提供的服務(wù)時(shí)是該怎么辦呢?

有的同學(xué)說我們需要依賴內(nèi)核提供的服務(wù)嗎?

想一想,進(jìn)行網(wǎng)絡(luò)編程時(shí)你有沒有自己編寫過處理TCP/IP協(xié)議棧數(shù)據(jù)的代碼?你有沒有自己寫代碼從網(wǎng)卡上收發(fā)數(shù)據(jù)?都沒有,實(shí)際上你需要做的僅僅是簡單的調(diào)用一些socket接口就可以了。

網(wǎng)絡(luò)編程僅僅是其中的一項(xiàng),其它還包括文件IO、創(chuàng)建進(jìn)程、創(chuàng)建線程等等等等,這些是內(nèi)核提供的,那么我們該怎么使用呢?

答案就是通過所謂的系統(tǒng)調(diào)用,system call。

通過系統(tǒng)調(diào)用,我們可以像使用普通函數(shù)那樣向操作系統(tǒng)請求服務(wù),當(dāng)然,直接使用系統(tǒng)調(diào)用是非常繁瑣的,因此通常會(huì)在這之上提供一層封裝。

圖片圖片

在Windows平臺(tái)就是給程序員提供編程接口的是Windows API,這層API包羅萬象,不但包括上文提到對(duì)系統(tǒng)調(diào)用的封裝,還包括其它功能,像創(chuàng)建帶有圖形界面的應(yīng)用程序等等。

但在Linux世界你找不到一種類似Windows API的東西,畢竟Windows是微軟自家產(chǎn)品,什么都可以打包起來,Linux只是一個(gè)開源的內(nèi)核,如果一定要找一個(gè)類似的東西話那就是libc,也就是C標(biāo)準(zhǔn)庫,這里同樣包括了對(duì)系統(tǒng)調(diào)用的封裝以及一些庫函數(shù),但libc不包含創(chuàng)建帶有圖形界面應(yīng)用程序的功能。

現(xiàn)在我們知道了,操作系統(tǒng)需要提供兩種接口:

  • 給用戶提供操作接口。
  • 給程序員提供編程接口。

這些就是好比汽車的外殼,我們(用戶和程序員)看得見摸得著,外殼加上底盤——也就是內(nèi)核,才是功能完善的操作系統(tǒng)。

各種各樣的操作系統(tǒng)

實(shí)際上我們熟悉的Linux只是內(nèi)核而不能稱得上是操作系統(tǒng),Ubuntu則可以認(rèn)為是操作系統(tǒng),其內(nèi)核是Linux;RedHat也是操作系統(tǒng),其內(nèi)核同樣是Linux;我們可以看到,盡管Ubuntu和RedHat是不同的操作系統(tǒng),但其內(nèi)核可以是相同的。

這就好比它們可以基于同樣的底盤打造出不同的車型。

而我們熟悉的Windows也是操作系統(tǒng),其內(nèi)核是Windows NT內(nèi)核。

責(zé)任編輯:武曉燕 來源: 碼農(nóng)的荒島求生
相關(guān)推薦

2021-06-17 08:19:37

操作系統(tǒng)OS Kernel

2023-10-13 15:48:17

OT系統(tǒng)

2023-02-01 08:11:40

系統(tǒng)調(diào)用函數(shù)

2018-07-20 14:00:51

LinuxmacOS內(nèi)核

2018-07-13 17:05:22

SQLMySQL數(shù)據(jù)庫

2020-12-22 13:46:48

APISKD

2011-08-08 14:09:55

dhcpbootp

2009-04-03 15:19:15

2021-05-16 15:28:59

沙箱容器惡意軟件

2019-02-27 15:22:15

混合云云計(jì)算多云

2020-09-06 09:51:57

SNMP TrapSyslog網(wǎng)絡(luò)協(xié)議

2020-07-13 23:39:16

物聯(lián)網(wǎng)IoT萬物互聯(lián)

2023-06-27 14:49:34

數(shù)據(jù)中心IT 設(shè)備

2014-11-26 17:42:00

亞馬遜互聯(lián)網(wǎng)阿里巴巴

2021-01-13 09:27:31

微服務(wù)API分布式

2012-07-25 15:45:28

ERPSCM

2024-06-24 21:24:12

云計(jì)算云網(wǎng)絡(luò)

2022-09-14 09:45:15

指標(biāo)標(biāo)簽

2024-02-21 14:37:56

2022-11-22 10:21:23

5GLTE
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)