linux知识(一) 程序、进程与线程
生活随笔
收集整理的這篇文章主要介紹了
linux知识(一) 程序、进程与线程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
linux知識(一) 程序、進程與線程
- 程序
- 進程
- 程序如何變成進程?
- 線程
- 線程與進程
- fork和創建新線程的區別
- 優點
程序
程序:程序是已編譯好的二進制文件,存儲在磁盤中,不占用系統資源
程序包括:
- RO段:只讀代碼段(code段.text段)和常量段(RO data段/.constdata段)
- RW段:(.data段)已初始化成非0的變量段(全局變量和靜態變量)
- ZI段:(.bss段)未初始化的為0的變量段(全局變量和靜態變量)
進程
進程: 進程是資源分配的最小單位,占用系統資源
進程主要包括:
- RO段:只讀代碼段(code段.text段)和常量段(RO data段/.constdata段)
- RW段:(.data段)已初始化成非0的變量段(全局變量和靜態變量)
- ZI段:(.bss段)未初始化的為0的變量段(全局變量和靜態變量)
- 棧:存儲局部、臨時變量,函數調用時,存儲的函數返回指針,用于控制函數的調用和返回。程序開始時自動分配內存,結束時自動釋放內存
- 堆:存儲動態內存空間,需要程序員手工分配,手動釋放。
程序如何變成進程?
當我們啟動程序的時候,由DMA模塊將程序從磁盤中拷貝到內存中,同時啟動DMA中斷,讓cpu來加載進程
線程
線程:線程是資源調度的最小單位
線程與進程
假設linux系統中有三個進程同時運行,cpu分配每個進程時間片分別是3s、2s、4s.進程A中有兩個線程,一個線程對應一個cpu的核心,進程A就會在分配的2s的時間片中用兩個線程來處理事情,提高處理的效率。
fork和創建新線程的區別
- 當一個進程執行一個fork調用的時候,會創建出進程的一個新拷貝,新進程將擁有它自己的變量和自己的pid。新進程運行時是獨立的。
- 在進程里面創建一個新線程的時候,新的執行線程擁有自己的堆棧,當共享了全局變量、文件描述符、信號處理器和當前的子目錄狀態
優點
- 創建一個新線程的代價要比創建一個新進 程小得多
- 與進程之間的切換相比,線程之間的切換 需要操作系統做的工作至少在理論上要少很多
- 線程占用的資源要比進程少很多
總結
以上是生活随笔為你收集整理的linux知识(一) 程序、进程与线程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人工受孕什么时候做好
- 下一篇: linux知识(二)互斥量、信号量和生产