本文作者:黃小斜

轉(zhuǎn)載請(qǐng)務(wù)必在文章開(kāi)頭注明出處和作者。

學(xué)習(xí)編程,操作系統(tǒng)是你必須要掌握的基礎(chǔ)知識(shí),那么操作系統(tǒng)到底是什么呢?
這還用說(shuō)么,操作系統(tǒng)不就是Windows、Linux、Mac、IOS、Android、IOS這類(lèi)我們天天都在用的東西么?
此話(huà)不假,但是操作系統(tǒng)作為計(jì)算機(jī)科學(xué)里的一門(mén)基礎(chǔ)學(xué)科,肯定不能這么接地氣對(duì)不對(duì),總的來(lái)點(diǎn)高大上的概念,震懾一下你們吧。
根據(jù)百度百科的介紹,操作系統(tǒng)是管理計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序,同時(shí)也是計(jì)算機(jī)系統(tǒng)的內(nèi)核與基石。操作系統(tǒng)需要處理如管理與配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序、控制輸入設(shè)備與輸出設(shè)備、操作網(wǎng)絡(luò)與管理文件系統(tǒng)等基本事務(wù)。操作系統(tǒng)也提供一個(gè)讓用戶(hù)與系統(tǒng)交互的操作界面。
這個(gè)介紹足夠高大上了吧,那么到底啥是操作系統(tǒng)呢,簡(jiǎn)單來(lái)說(shuō),操作系統(tǒng)就是管理計(jì)算機(jī)硬件和軟件資源的一種軟件,計(jì)算機(jī)里的硬盤(pán)、鼠標(biāo)鍵盤(pán)、顯示器等設(shè)備,都要由它來(lái)管理,你打開(kāi)游戲、打開(kāi)瀏覽器或者是看電影,也都要通過(guò)操作系統(tǒng)來(lái)執(zhí)行。
沒(méi)有了操作系統(tǒng),電腦就失去了靈魂,只是一堆硬件而已。
了解了操作系統(tǒng)的基本概念之后,接下來(lái)我們?cè)賮?lái)看看,為什么我們要學(xué)習(xí)操作系統(tǒng)呢?
首先,當(dāng)然是因?yàn)槊嬖囈祭病?/p>
其次,無(wú)論你學(xué)習(xí)什么編程語(yǔ)言,和都避免不了和操作系統(tǒng)打交道,比如你學(xué)習(xí)Java,用到多線(xiàn)程技術(shù),實(shí)際上操作系統(tǒng)才是負(fù)責(zé)管理進(jìn)程和線(xiàn)程的,所以Java里的線(xiàn)程常常要和操作系統(tǒng)的線(xiàn)程或者進(jìn)程一一對(duì)應(yīng)。
此外,你會(huì)學(xué)習(xí)到內(nèi)存分配的知識(shí),比如c++里可以直接分配一段內(nèi)存,此時(shí)實(shí)際上是調(diào)用操作系統(tǒng)提供的API進(jìn)行內(nèi)存分配。
操作系統(tǒng)不僅負(fù)責(zé)管理進(jìn)程和線(xiàn)程的調(diào)度、內(nèi)存的分配和管理,以及設(shè)備和IO的處理,還要負(fù)責(zé)管理文件系統(tǒng)和網(wǎng)絡(luò)。
最重要的是,操作系統(tǒng)要負(fù)責(zé)把代碼從硬盤(pán)加載到內(nèi)存,再告訴cpu去讀取內(nèi)存代碼,這是一切計(jì)算機(jī)運(yùn)行的基礎(chǔ)。
如果不懂操作系統(tǒng),你在未來(lái)學(xué)習(xí)編程語(yǔ)言的高級(jí)特效,涉及到線(xiàn)程進(jìn)程調(diào)度,內(nèi)存分配,或者是學(xué)習(xí)Linux相關(guān)的知識(shí)時(shí),都會(huì)一頭霧水,所以,只有學(xué)會(huì)了操作系統(tǒng),我么才能夠更好地學(xué)習(xí)其他語(yǔ)言和技術(shù)。
第一次接觸操作系統(tǒng)同樣是在我研究生的時(shí)候,當(dāng)時(shí)自學(xué)計(jì)算機(jī)網(wǎng)絡(luò)已經(jīng)受到了驚嚇(被大部頭教科書(shū)勸退),于是學(xué)習(xí)操作系統(tǒng)時(shí)也更加的小心翼翼,當(dāng)時(shí)我找了一本體量稍微小一點(diǎn)的《操作系統(tǒng)》教科書(shū)來(lái)學(xué)習(xí)。
用了大概一周左右的時(shí)間,我把這本書(shū)翻了一遍,隱隱約約還記得一些概念,進(jìn)程和線(xiàn)程,進(jìn)程調(diào)度算法、內(nèi)存管理的分頁(yè)和分段,頁(yè)面置換算法,但其實(shí)當(dāng)時(shí)壓根沒(méi)有理解這些東西,再過(guò)了一周之后也就忘得差不多了。
由于我當(dāng)時(shí)找的多是Java方面的實(shí)習(xí),很多公司對(duì)于操作系統(tǒng)的考察并不多,偶爾就問(wèn)問(wèn)線(xiàn)程和進(jìn)程的區(qū)別,
于是對(duì)于操作系統(tǒng)的學(xué)習(xí)我當(dāng)時(shí)并沒(méi)有多大的重視,畢竟還有一堆Java的書(shū)要啃呢,先都啃到位再說(shuō)。
就這樣,我一直保留著只看過(guò)一本教科書(shū)的操作系統(tǒng)水平,全情投入到復(fù)習(xí)Java的偉業(yè)中了,然而當(dāng)我學(xué)到Java并發(fā)編程和JVM的時(shí)候,總感覺(jué)有哪里不對(duì)勁:Java中的線(xiàn)程和操作系統(tǒng)的線(xiàn)程是什么關(guān)系,JVM的內(nèi)存管理和操作系統(tǒng)的內(nèi)存管理又是什么關(guān)系。
我抱著這個(gè)疑問(wèn)學(xué)完了Java并發(fā)原理和JVM,當(dāng)然也是一知半解的那種。事后證明,在沒(méi)有操作系統(tǒng)基礎(chǔ)的情況下,越往上層學(xué),摔得越慘,勿用浮沙筑高臺(tái),說(shuō)的便是這個(gè)道理,底子打好了,才能往上爬,否則都是浮云。
我在百度實(shí)習(xí)的那段時(shí)間里,再次意識(shí)到了操作系統(tǒng)這門(mén)課程的重要性,于是我找來(lái)了某乎強(qiáng)烈推薦的《深入理解計(jì)算機(jī)系統(tǒng)》這本史詩(shī)級(jí)大部頭,這本書(shū)其實(shí)并不是一本純粹的操作系統(tǒng)書(shū)籍,而是結(jié)合了計(jì)算機(jī)組成原理和操作系統(tǒng)兩方面的內(nèi)容,基本上把計(jì)算機(jī)內(nèi)部工作的那些原理都給講清楚了。
第一次看這本書(shū)的時(shí)候,我堅(jiān)持了不到三天就放棄了,于是第二次看這本書(shū),我在公司花了快一個(gè)月的時(shí)間才總算看得差不多。
在以前,我連什么是x64什么x86都搞不清楚,看完這本書(shū)之后,我好歹對(duì)CPU、內(nèi)存、硬盤(pán)的工作方式,以及處理器的工作方式等內(nèi)容有了一些理解,不得不說(shuō),這個(gè)時(shí)候我才算是對(duì)操作系統(tǒng)入了門(mén)。
光看書(shū)還不足以應(yīng)對(duì)大廠(chǎng)的面試,大公司對(duì)操作系統(tǒng)的考察是很?chē)?yán)格的,比如百度、騰訊和頭條,對(duì)于操作系統(tǒng)的要求還是比較高的。
除了進(jìn)程和線(xiàn)程區(qū)別這種最簡(jiǎn)單的面試題之外,還會(huì)有一些比較復(fù)雜的問(wèn)題,比如”進(jìn)程調(diào)度算法有哪些,講一下FIFO和LRU算法“、”內(nèi)存中的分頁(yè)和分段有什么區(qū)別,分頁(yè)里的頁(yè)面置換算法有哪些,LRU是怎么實(shí)現(xiàn)的“、”產(chǎn)生死鎖的必要條件,解決死鎖的辦法“、”線(xiàn)程間通信和進(jìn)程間通信的方法都有哪些,具體怎么使用“
此類(lèi)問(wèn)題,也算是比較常見(jiàn)的操作系統(tǒng)面試題,但是要回答清楚的話(huà)還是需要一定功力的。
當(dāng)時(shí)我應(yīng)對(duì)這類(lèi)問(wèn)題,基本上就是通過(guò)刷面經(jīng)和背答案,對(duì)于很多原理性的東西理解得并不深刻,但是也沒(méi)有找到什么解決辦法。
既然自己學(xué)了半天效果都不佳,那不如直接向大佬學(xué)習(xí)吧,于是我輾轉(zhuǎn)各大博客,技術(shù)社區(qū),技術(shù)公眾號(hào),看了很多關(guān)于操作系統(tǒng)的文章,發(fā)現(xiàn)確實(shí)有很多講的不錯(cuò)的內(nèi)容,看起來(lái)比自己死記硬背要靠譜的多了。
最早看的優(yōu)質(zhì)內(nèi)容是《碼農(nóng)翻身》作者劉欣老師的文章,真的是相見(jiàn)恨晚,他有十幾篇文章是專(zhuān)門(mén)講解操作系統(tǒng)的,從CPU開(kāi)始,講到內(nèi)存、硬盤(pán)、線(xiàn)程、進(jìn)程,每篇文章都是用故事化的文字介紹這些計(jì)算機(jī)里最硬核的觀(guān)念,可以說(shuō)是四兩撥千斤了。
看完這個(gè)系列的操作系統(tǒng)文章之后,我對(duì)于操作系統(tǒng)中的一些疑惑基本上也都消除了,再回去看一看那些面試題,覺(jué)得也沒(méi)那么復(fù)雜了。
當(dāng)然了,對(duì)于面試題我們還是要認(rèn)真準(zhǔn)備的,該翻的面經(jīng)要翻,該搞懂的面試題一個(gè)也不能放過(guò),有了之前的基礎(chǔ)之后,再去搞懂這些面試題就簡(jiǎn)單很多了,至此,我對(duì)于操作系統(tǒng)的學(xué)習(xí)也算是告一段落。
《深入理解計(jì)算機(jī)系統(tǒng)》
《操作系統(tǒng)導(dǎo)論》
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
本文題目:自學(xué)編程方法論:怎么學(xué)操作系統(tǒng)-創(chuàng)新互聯(lián)
分享URL:http://www.jbt999.com/article8/eehop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、App開(kāi)發(fā)、網(wǎng)站制作、定制網(wǎng)站、網(wǎng)站維護(hù)、軟件開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容