tft每日頭條

 > 科技

 > linux操作系統的作用和原理

linux操作系統的作用和原理

科技 更新时间:2025-02-22 00:43:06

  雖然計算機相關專業,操作系統和計算機組成原理是必修課。但是大學時和真正從事相關專業工作之後,對于知識的認知自然會發生變化。還很有可能,一輩子呆在學校的老師們隻是照本宣科,自己的理解也不深。所以今天我站在真正排查解決問題時的需要層面,用白話說一說linux操作系統的那些知識。

  本文整體采用的是類似遞歸調用的遞進式結構。

  linux内核的本質

  linux操作系統的作用和原理(白話linux操作系統原理)(1)

  簡單來說如上圖所示,咱們平時的應用程序或者linux命令要和操作系統打交道,都要經過一個叫做linux内核的軟件。所有的硬件操作都需要通過他。就像古代女子出嫁,都要有媒人。

  雖然現在都是婚姻自由,沒有父母之命媒妁之言那一套。其實在古代,媒人對于整個古代曆史上的婚姻而言,起到的正向的作用。現在社會欺騙的婚姻也不少。而古代媒人都要是對兩家熟悉,或者做過背調,掌握了情況的人。多數都是門當戶對,除了個别婚前就心有所屬的,大多數還是過得很幸福的。畢竟多數人的标準都差不多:好看就行。我覺得自己老公長得就挺好看,隻是出去打聽了一下,95%的人不這麼認為

  linux操作系統的作用和原理(白話linux操作系統原理)(2)

  本文不是為封裝制度正名。想表達的是:媒人最初是一種保護機制。而linux之父林納斯最初設計linux内核也是設計成一種保護機制。

  linux操作系統的作用和原理(白話linux操作系統原理)(3)

  為什麼說linux内核是一種保護機制呢,這要從馮·諾依曼體系結構說起。

  馮·諾依曼體系結構

  linux操作系統的作用和原理(白話linux操作系統原理)(4)

  馮·諾依曼體系結構的要點是:

  計算機的數制采用二進制。計算機應該按照程序順序執行。它采用存儲程序方式,指令和數據不加區别,混合存儲在同一個存儲器中。數據和程序在内存中是沒有區别的,它們都是内存中的數據。當EIP指針指向哪,cpu就加載哪段内存中的數據。如果是不正确的指令格式,CPU就會發生錯誤中斷。

  這裡提到計算機是在順序的執行指令,但是咱們明明可以一邊聽歌一邊敲代碼。這個除了在目前多CPU架構下可以實現,之前單CPU下也可以實現。因為有時鐘分片。如果沒有插入優先級高的任務,cpu會在均勻的執行多項任務分片。因為CPU執行速度快,人可能完全感覺不到實際上是斷續執行的。

  不過我記得上大學的時候,03年我買了一台筆記本用來打魔獸。當時可是用的市面上的頂配呢。有時候還是會一卡一卡的。可以切身感受到時鐘分片。

  如果出現錯誤,可以通過中斷來處理。中斷也需要等待時鐘分片。好在linux内核的分片十分合理,讓中斷可以及時響應。

  linux操作系統的作用和原理(白話linux操作系統原理)(5)

  在現代CPU的保護模式中,每個内存段都有其描述符。這個描述符記錄着這個内存段的訪問權限。在《接下來一段時間會對大家進行網絡通信的魔鬼訓練-理解socket》裡我就提到過文件描述符。這裡稍詳細的解釋下。

  文件描述符

  linux系統中,一切皆文件。文件描述符是一個索引值,指向内核為每一個進程所維護的該進程打開文件的記錄表。當程序打開一個現有文件或者創建一個新文件時,内核向進程返回一個文件描述符。在程序設計中,一些涉及底層的程序編寫往往會圍繞着文件描述符展開。

  文件描述符、文件、進程間的關系1.描述:每個文件描述符會與一個打開的文件相對應不同的文件描述符也可能指向同一個文件相同的文件可以被不同的進程打開,也可以在同一個進程被多次打開2.系統為維護文件描述符,建立了三個表進程級的文件描述符表系統級的文件描述符表文件系統的i-node表 linux操作系統的作用和原理(白話linux操作系統原理)(6)

  3.通過這三個表,認識文件描述符 linux操作系統的作用和原理(白話linux操作系統原理)(7)

  在進程A中,文件描述符1和30都指向了同一個打開的文件句柄(#23),這可能是該進程多次對執行打開操作進程A中的文件描述符2和進程B的文件描述符2都指向了同一個打開的文件句柄(#73),這種情況有幾種可能,1.進程A和進程B可能是父子進程關系;2.進程A和進程B打開了同一個文件,且文件描述符相同(低概率事件=_=);3.A、B中某個進程通過UNIX域套接字将一個打開的文件描述符傳遞給另一個進程。進程A的描述符0和進程B的描述符3分别指向不同的打開文件句柄,但這些句柄均指向i-node表的相同條目(#1936),換言之,指向同一個文件。發生這種情況是因為每個進程各自對同一個文件發起了打開請求。同一個進程兩次打開同一個文件,也會發生類似情況。文件描述符限制 有資源的地方就有戰争,文件描述符也是一種資源,系統中的每個進程都需要有文件描述符才能進行改變世界的宏圖霸業。世界需要秩序,于是就有了“文件描述符限制”的規定。

  如下表: linux操作系統的作用和原理(白話linux操作系統原理)(8)

  查看文件描述符限制也可以使用linux命令。

  找到需要檢查的進程id查看該進程的資源,比如fd 是描述符,limits是限制。查看該進程的限制,如圖,在 Max open files 那一行,可以看到當前設置中soft最大文件描述符的數量為1024。 linux操作系統的作用和原理(白話linux操作系統原理)(9)

  在《提供一個排查性能問題的思路》裡,我就提到過解決過too many open files問題。咱們今天來實際理解一下。執行下面命令:

  linux操作系統的作用和原理(白話linux操作系統原理)(10)

  這就是一個進程實際占用的文件描述符和文件描述符數。超過系統設定值就會發生too many open files異常。這裡大家應該可以切實理解一個文件描述符就是一個文件,文件描述符占用超限就是too many open files啦。

  特殊的文件描述符

  有三個特殊的文件描述符,分别是0、1、2,對應每個進程的标準輸入、标準輸出和錯誤輸出。每個進程啟動時,操作系統就會給它分配這三個标準的文件描述符。咱們平時用的console控制台就是通過讀寫這三個文件來實現滴。

  linux基礎裡有介紹怎麼重定向,下面一條命令可以将标準輸出1和錯誤輸出2重定向到一個文件:

  linux操作系統的作用和原理(白話linux操作系統原理)(11)

  總結

  linux的内存分段、中斷機制和文件描述符限制都是内核的保護機制。當然這并不全面,還有其他機制。

  本篇内容和《網絡通信之Session的曆史血脈》、《深入理解MQ生産端的底層通信過程-理解channel》、《接下來一段時間會對大家進行網絡通信的魔鬼訓練-理解socket》、《網絡字節序列-大端序和小端序》、《https引起的跨域問題-COE&casestudy》、《懂得三境界-使用dubbo時請求超過問題》、《一個http請求進來都經過了什麼(2021版)》是一個系列。等全部串聯起來,之前很多讓人望而卻步的生産問題,會有了大緻的排查方向吧~

  原文:htt

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved