[linux]曆程管理,記憶體管理,檔案系統,系統管理,網路操作概述

來源:互聯網
上載者:User
進程/線程 

   進程概念:進程/線程是電腦中最小的執行單元,是實現分時多使用者作業系統的基礎;那麼一個進程在linux中是如何?的呢?如果熟悉核心就知道核心就是一堆的資料結構,一個進程的所有狀態就包含在task_struck這個結構中:存放進程的狀態,檔案/socket描述符,程式地址(stask/heap);時間片;ddl地址;許可權資訊等等資訊;如:展示了進程在記憶體中的表示:

                 

 

 

 

  linux中的進程就是一個鏈表;進程和子進程有父子關係,進程號為1的進程為init; 進程建立子進程是運用:寫時複製的原則;

   線程概念: 一個進程可以包含許多線程;一個進程的各線程可以方便共用記憶體;線程建立時只建立一個屬於本線程的棧空間;

   命令: ps -ef ; ps -eLf ;pstree; pidstat;

   進程的狀態:running;stopped,uninterruptible; interruptitble; sleeping;zombie;

   進程的銷毀:進程銷毀時會釋放所有的資料結構(釋放檔案/socket控制代碼,記憶體等等),釋放完後會發送一個訊號給父進程,此時子進程為殭屍狀態;父進程回應此訊號,子進程才徹底銷毀;如果父進程沒有響應此訊號,子進程狀態會變成殭屍狀態;

    進程的調度: linux 是搶佔式的調度策略,即正在cpu上啟動並執行進程是隨時可以被其他進程搶佔的。 那麼linux是如何調度進程是非常重要的;linux核心依據進程的優先順序(即時優先順序)和進程是屬於cpu敏感還是I/O敏感型的分配不同長短的時間片; 可以說進程的調度策略是動態智能化的;進程調度的演算法時間複雜度是O(1),通過為進程的不同的優先順序建立對應的數組,即一個優先順序對應一個數組;相同的優先順序用佇列儲存體,並有一個二進位位元影像來常量時間從數組中尋找到將要調度的優先順序隊列。巧妙的用空間換取時間,最大的提高調度效能。

環境切換

是指進程/線程的環境切換(context switch) ; 環境切換由linux核心完成將當前正在啟動並執行進程上下文資訊從寄存器中卸載下來到進程堆棧中暫存,然後Load新的進程到寄存器,快取中開始執行。所以說環境切換頻繁是最影響程式的效能的因素之一。 如:

              


 
 

 

降低環境切換頻率是提高進程效能的關鍵; 對於我們的網路伺服器來說,大量的客戶請求隨時都大量湧入伺服器,cpu頻繁響應網路中斷會對我們的應用程式效能產生極大的影響。 如何避免頻繁的環境切換呢? 除了提高進程的優先順序外; smp核心提供了親和度這一技術,將網路中斷親和到一個CPU上去。 這樣頻繁的中斷就不會干擾其他CPU上的應用進程的執行;

       查看環境切換頻率:pidstat -w 或者 vmstat; 查看親和度設定: cat /proc/irq/$irq/smp_affinity

記憶體管理

linux的將記憶體分為kernel space 和 user space 兩部分; 對於32bit 系統來說,kernel space為 1G ,user space 為3G; Linux核心的代碼直接物理訪問kernel space,不允許應用程式訪問kernel-space; 

        Linux的設計考慮“安全性” 和 “多進程並發” 執行2方面考慮, 將user-space虛擬化,這樣和核心空間隔離,每個進程在建立時都擁有自己的獨立的虛擬進程地址空間(和其他進程地址空間互不干擾);虛擬進程空間大小擁有3G;這樣每個進程看上去擁有3G的可訪問記憶體空間一樣;可以說沒有記憶體的虛擬化,就沒有並發啟動並執行進程,也就沒有多使用者支援。

       linux是如何分配記憶體的呢?: 核心是以頁為單位分配記憶體的,頁的大小一般為4kb,8kb等。 進程建立時,應用程式申請的記憶體(堆),都是虛擬記憶體地址而已,進程運行時,真正訪問這塊記憶體時,如果這塊記憶體未曾申請過實體記憶體或者這塊記憶體不在實體記憶體中(swap) . 進程會陷入核心態(系統調用),併產生一個page fault異常,然後申請實體記憶體,並和虛擬記憶體映射起來。

    虛擬記憶體是如何映射到實體記憶體的呢?每個進程都有一張page table 維護虛擬記憶體到實體記憶體的映射關係;cpu在執行代碼時先通過MMU將虛擬記憶體轉換為實體記憶體,然後訪問記憶體位址。Linux核心還通過TLB這個資料結構來對虛擬記憶體到實體記憶體的映射進行一個緩衝。如:



 

 

 

 命令: 查看進程虛擬記憶體分布:cat /proc/$pid/maps ;查看page fault的情況:pidstat -r ; 

檔案

       linux依靠的檔案子系統屏蔽了各種不同檔案系統的實現;給應用程式操作檔案系統提供統一api; 並且檔案系統會維護一個cache在memory中,並根據LRU演算法來快取檔案內容;核心線程pdflush定期或cache佔用memory佔用一定百分比會被觸發,將cache的內容寫入disk; 如:

      

 

      常用的檔案系統有:ext3, xfs,jf (各檔案系統適合不同的使用情境,表現出優越的效能)

       命令:fsck,fdisk,mount -t ext3 /dev/sda /home/xxx; umount /home/xxx;iostat;sar;

      

系統(cpu/memory/硬碟/IO)

     linux的層次是結構如, 系統的硬體資源cpu/memory/io/disk等都是有核心統一管理,應用程式層程式要使用這些資源必須調用核心;應用程式層調用核心的功能是通過系統調用(system call)完成的:

         那麼系統調用是如何?的呢? 當前大部分作業系統通過非強制中斷實現。 應用程式調用核心功能時,會同時發送一個中斷到cpu,cpu在中斷向量表裡找到此中斷號對應的處理常式,從而執行核心代碼。現在x86等cpu已經從硬體層開始支援系統調用這個功能,並且效能提升了不少。 因為一個程式的越少的系統調用效能越好。 通過命令strace yourexeapplication 可以看到你的可執行代碼都調用了那些系統調用;

       現在常用的機器架構為SMP結構(即所有CPU共用L1/L2,memory,外設);區別與NUMA結構; 所以一個某一個瞬間一個進程/線程只會在一個核上運行;一個進程頻繁的在不同的CPU上運行效能會降低;因為每個核之間不共用快取,如果進程頻繁在核之間切換,快取命中率下降,嚴重影響效能;作業系統核心會保證一個進程盡量運行在一個核上,並保證每個核的負載平衡。我們知道cpu要頻繁的響應中斷,有些中斷來了,cpu必須放下正在執行的進程去響應中斷,比如對於web伺服器網路流量很高的伺服器,網路中斷很頻繁;作業系統提供一個親和度演算法將一個終端號綁定到一個核上。這樣其他核就不會受中斷影響,提高系統效能;cat
02 >> /proc/irq/xx/smp_affinity

      命令:top, uptime, vmstat; ps; pidstat;

網路(tcp/udp)

GNU/linux的自由性來源於網路,來源於網路各端的頂尖程式員一起完成的傑作。可以說沒有tcp/ip就沒有linux的蓬勃發展。 linux對網路的發展也無與倫比。linux2.6核心支援同步和非同步網路I/O ; 對非同步支援讓現在網路伺服器可以支援更多的請求量。 比如apache通過epoll,讓少量的worder線程池可以響應大量的請求。如:

     

 

       網路連接分為 : 監聽串連和傳輸串連; 比如apache的LINSTEN串連監聽在80連接埠上等待客戶請求,客戶請求過來後,監聽串連會和用戶端請求建立三向交握後,將串連扔給背景工作執行緒去處理此請求,此時用戶端請求和worder線程建立ESTABLISHED狀態,進行資料的傳輸。

     命令:netstat,traceroute,ifconfig; dig ; hostname;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.