日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux知识(一) 程序、进程与线程

發布時間:2023/11/30 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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知识(一) 程序、进程与线程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。