linux深入學習
A. 如何更深入地學習 linux
1. 最重要的linux的內核工作方式:包括但是不限於:
內存分頁
進程切換
interrupt 和 exception,以及system call
lock
進程管理
內存管理和分配
signal
文件系統(ext2, ext3)
輸入輸出設備
緩存
書可以看《understanding the linux kernel》,《intel OS programming volume III》
這個是理解linux的基礎的基礎,對於理解操作系統有莫大的好處。而且無論對於high level還是low level的編程都是相通的,很多東西在學完操作系統之後,你對他們的理解就完全不一樣了。就像學好緩存在對於提高大運算上面的效率是很有幫助的。
一邊看書一邊可以寫一個簡單的linux自己玩,時長一個學期比較合適。因為課程要求,所以我寫過一個可以多任務運行的linux,附帶一個音效卡driver。當時演示的時候放的是鳳凰傳奇,教授整個人斯巴達了。但是不得不說這是一個非常大的工作量。
但是無論是要做內核開發還是驅動開發,我覺得這些都是基礎中的基礎,是要扎扎實實掌握的,不得有半點馬虎。
2. CPU架構/匯編
操作系統跟CPU的架構是離不開的,我個人覺得是相輔相成的。很明顯的能看到Intel為了和操作系統配合起來,實現了很多硬體功能。最明顯的就是虛擬內存已經可以在硬體層面上直接換算,不需要通過軟體了。不懂x86或者arm的架構,會一定程度上造成理解linux內核的困難。比如為什麼要以某種特定的方式分頁,為什麼內存管理的時候需要不同的演算法,interrupt,system call的意義何在?等等等等的問題都需要精通CPU的架構。
當時就是因為對TLB的理解不夠深入,不夠仔細,造成我的系統每次切換任務的時候,會page fault。
重點在於interrupt的處理,緩存的概念和內存相關結構的設計。至於亂序執行,pipeline之類的都是次要的,對於linux不是特別的重要。
x86的匯編是基礎,有助於debug和理解linux源代碼。我寫系統的時候大段寫過x86代碼來實現低層操作。不知道真正的linux是不是這樣實現的。
3. high level編程
系統畢竟是為了應用程序而服務的,就像有需求才有生產一樣。沒有應用程序的需求,就不會設計相關的系統功能。了解high level的編程一定程度上可以融會貫通。
B. 如何更深入地學習 Linux
看你想學那方面了。linux基本分三個層次。網路層,應用層,驅動層。看你主要想往哪裡發展。
網路層,主要是tcp/ip協議,伺服器架設等。
應用層,各種應用程序,數據結構什麼的
驅動層,主要是面向底層硬體,編寫驅動,linux內核剪裁等。
如果要自學的話,先從屬性linux系統開始,學習c語言數據結構什麼的。然後看想往哪裡發展。
由於我對驅動比較了解,就跟你說下驅動,我感覺學習驅動,首先c語言一定要會,一二級指針結構體數據結構,這是一定的。然後就是學習單片機,最好有單片機的基礎,無論是51的還是2440的,當然你也可以沒有這方面的基礎,不過學起來可能要比較吃力。然後就是剪裁內核,給自己板子上個系統什麼的,然後編寫驅動什麼USB I2C UART什麼的,再掛到你的板子上。。基本就這些,這些一般就夠學習很久了,再往後的話就涉及內核編譯什麼的了。等樓主學到這里再取想去問吧。。。畢竟夠學一陣了。。
C. 如何更深入地學習Linux
如果想深入學習Linux,一定要嘗試去看英文文檔。 因為,技術性的東西寫得最好的,最全面的文檔都是英語寫的,最先發布的高新技術也都是用英語寫的。
開始Linux的學習之後,請不要用Windows的工作方式來思考問題,因為它們之間確實有很大的不同。
比如它們之間的內存管理機制、進程運行機制等都有很大不同,因此拋開Windows的那種思維,用全新的理念嘗試去挖掘Linux身上特有的潛質,對初學者是至關重要的。
另外Linux是由命令行組成的操作系統,精髓在命令行,無論圖形界面發展到什麼水平,命令行方式的操作永遠是不會變的。
Linux命令有許多強大的功能:從簡單的磁碟操作、文件存取,到進行復雜的多媒體圖像和流媒體文件的製作,都離不開命令行。
雖然Linux也有桌面系統,但是X-window也只是運行在命令行模式下的一個應用程序。
因此,可以說命令是學習Linux系統的基礎,在很大程度上學習Linux就是學習命令,很多Linux高手其實都是玩兒命令很熟練的人。
D. 如何學習linux
第一階段:初級入門
初級階段需要把linux運維學習路線搞清楚,任何學習都是循序漸進的,所以學linux運維也是需要有一定的路線。
1、Linux基礎知識、基本命令(起源、組成、常用命令如cp、ls、file、mkdir等常見操作命令)
2、Linux用戶及許可權基礎
3、Linux系統進程管理進階
4、linux高效文本、文件處理命令(vim、grep、sed、awk、find等命令)
5、shell腳本入門(可邊練習邊學習)
第二階段:中級進階
中級進階需要在充分了解linux原理和基礎知識之後,對上層的應用和服務進行深入學習,其中說到服務肯定涉及到網路的相關知識,是需要花時間學習的。
1、TCP/IP網路基礎(差不多CCNA、NP的知識就夠用)
2、Linux企業常用服務(如dns、http、ftp、mail、nfs等)
3、Linux企業級安全原理和防範技巧(系統性能/安全、安全威脅模型和保護方法
4、加密/解密原理及數據安全、系統服務訪問控制及服務安全基礎
5、iptables安全策略構建
6、shell腳本進階(主要是結合一些應用,寫一些案例)
7、MySQL應用原理及管理入門(能管理和搭建一個個人博客站點)
第三階段:高級提升
1、http服務代理緩存加速(其中主要學習varnish、nginx緩存系統,要對CDN的知識有所了解。)
2、企業級負載集群(其中主要學習nginx、haproxy、lvs要對主要知識熟練掌握,對負載均衡演算法有清晰認識)
3、企業級高可用集群 (其中需要對keepalived,heartbeat等進行深入講解)
4、運維監控zabbix詳解(主要是zabbix、cacti、nagios等監控系統,現在用的比較多的是zabbix)
5、運維自動化學習(需要學一些開源運維自動化工具的使用如ansible、puppet、cobbler等運維自動化工具)
第四階段:資深方向進階
1、 大數據方向(需要對hadoop、storm等常見開源大數據系統需要深入了解)
2、 雲計算方向(主要是openstack這套東西,當然像一些kvm等虛擬化技術,也是需要掌握的,現在docker也比較流行)
3、 運維開發(主要是python運維開發)
4、 自動化運維(在之前自動化基礎上做深入)
5、 運維架構師(主要需要廣度,差不多5年左右以上經驗,可以擔當此職位)
E. 如何才能更深入的學習linux
1、當我們進行Linux學習的時候,首先要找到一個適合自己的Linux發行版本,雖然說發型版本太多了,沒有準確的數字,但是有一點的可以確定,就是Linux是非常流行的,所以在不斷的更近中,所以想要學習好Linux,我們就需要明確自己的方向,找到適合自己的系統。
2、學習的途徑,也是我們需要掌握的關鍵。對於沒有什麼基礎的人來說,學習Linux最好找培訓班進行學習,這樣可以滿足實際的需求,也可以先買幾本書簡單了解一下,做一個入門,書籍推薦《跟老男孩學Linux運維》。
3、想要學習好Linux,我們需要對基礎的知識做到完全掌握,包含一些基本的命令,同時還需要掌握shell編程。
4、基本的入門知識了解的比較通透之後,我們就可以進行進階階段了,了解一些伺服器搭建,參加一下實戰項目
F. 淺談如何學習linux
一.為什麼要學linux?
當然最重要是愛好和興趣!如果你這種必要學,或者根本不喜歡,請不要浪費時間,你學也學不好!
二.起步
你應該為自己創造一個學習linux的環境--在電腦上裝一個linux或unix
如何選擇版本:北美用redhat,歐洲用SuSE,桌面mandrake較多,而debian是技術最先進的linux開發人員中用debian的最多,其次是redhat,從全球linux各應用領域市場份額來看無疑redhat是最多的,此外還有很多出名的發行版本,不再列舉。
對於初學linux的人來說,我建議是使用redhat,原因如下:
1)現在很多書都是以redhat為例講的,為了與書本協調一致
2)周圍的人都用redhat,交流比較方便
3)redhat應用范圍廣,有典型性和代表性
4)它易於使用和安裝,我們沒有必要把時間浪費在「裝系統」上而應集中精力學習最有用的東西。
【注】現在覺得RH很死板,AS,ES等用在伺服器上或許不錯,Personal desktop用mandrake,debian,suse都不錯,筆者現在用Mandrake,因為她長得漂亮:)
如果你並不打算深入學習linux,而是有諸如適應北京市政府辦公平台遷移到linux上這種需要,那麼中軟,紅旗等中文linux是不錯的選擇
我強烈建議:自己親自動手把linux裝到你的硬碟上,你必須學會獨立安裝linux系統的技能,對於現在的版本來說,其實跟裝WinXP一樣簡單
從此現在開始,請不要以windows的工作方式來考慮問題,應該嘗試挖掘linux身上的「天才unix」的氣質。
G. 怎樣深入的學習linux,希望在linux方面有所發展
想要學好Linux,必須有一個合適的學習路線,以下是老男孩教育的學習課程大綱,你可以參考一下:
對於Linux的學習,可以分為四個階段,Linux初級入門階段→Linux中級進階→Linux高級進階→Linux資深方向細化階段
第一階段:初級階段
初級階段需要把linux學習路線搞清楚,任何學習都是循序漸進的,所以學linux也是需要有一定的路線。
1. Linux基礎知識、基本命令;
2. Linux用戶及許可權基礎;
3. Linux系統進程管理進階;
4. linux高效文本、文件處理命令;
5. shell腳本入門
第二階段:中級進階
中級進階需要在充分了解linux原理和基礎知識之後,對上層的應用和服務進行深入學習,其中說到服務肯定涉及到網路的相關知識,是需要花時間學習的。
1. TCP/IP網路基礎;
2. Linux企業常用服務;
3. Linux企業級安全原理和防範技巧;
4. 加密/解密原理及數據安全、系統服務訪問控制及服務安全基礎;
5. iptables安全策略構建;
6. shell腳本進階;
7. MySQL應用原理及管理入門
第三階段:Linux高級進階
1. http服務代理緩存加速;
2. 企業級負載集群;
3. 企業級高可用集群;
4. 運維監控zabbix詳解;
5. 運維自動化學習;
第四階段:Linux資深方向細化
1. 大數據方向;
2. 雲計算方向;
3. 運維開發;
4. 自動化運維;
5. 運維架構師
以上是Linux的一個學習方向和路線,對於Linux學習是一個需要堅持的過程,也許通過自學或者培訓,3至6個月都可以把基本知識學會,但是重在實踐,深入的思考和不斷的摸索,你會發現Linux更多的美!
H. 怎麼學習linux
Linux主體分為「運維」與「開發」兩個方向,無論你是Linux相關從業者,還是說愛好都可以歸類到這里,其中「運維」一般是初學者或者轉行人員的首選,而Linux運維主要是對伺服器穩定、性能與安全方面的維護和調試。
實際上Linux入門並不困難,只要具備Linux基礎,讀懂Linux的命令格式,大多數的服務架構都是可以按照文檔部署出來。當然做Linux開發,個人建議去參加培訓學習更有效率,如果報班學習則大概需要4-6個月時間。
學習主要內容有:
1)網路基礎與linux系統的管理
2)優化及高可用技能
3)虛擬化與雲平台技術
4)開發運維
畢業後可從事的工作有:
1)Linux運維工程師
2)資料庫工程師
3)雲計算運維工程師
4)自動化運維工程師
5)雲計算架構工程師等
互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。
想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。
祝你學有所成,望採納。