【Linux】進程和線程

程序:存儲在磁盤上的二進制可執行文件。

進程:一個正在運行的程序,是系統進行資源分配的基本單位。

線程:進程內部的一條執行路徑,是系統進行調度的基本單位。

在操作系統中將線程的實現分爲三類:用戶級線程、內核級線程、混合方式

在linux下線程的實現:linux實現線程的機制非常獨特。從內核的角度來說,它並沒有線程這個概念。linux把所有的線程都當作進程來實現。內核並沒有準備特別的調度算法或是定義特別的數據結構來表徵線程。相反,線程僅僅被視爲一個與其他進程共享某些資源的進程。每個線程都擁有唯一隸屬於自己的task_struct,所以在內核中,它看起來更像是一個普通的進程(只是該進程和其他一些進程共享某些資源,如地址空間)。

注意:進程是動態的,程序一個靜態的文件,進程是程序的一次實例化,一個程序可執行多次生成多個進程。

 

計算機五大組成部分:運算器、控制器、儲存器、輸入設備、輸出設備。由總線連接。

進程的三種基本狀態:就緒、執行、阻塞

   

操作系統:管理計算機上的軟硬件資源,爲用戶提供一個交互的接口。管理進程和內存。

進程控制塊(PCB):進程的所有的信息。實現:結構體。用鏈表管理

 

如何將計算機上有限的物理內存分配給多個程序使用?

   存在的問題:

  1. 地址空間不隔離。
  2. 內存使用效率低。
  3. 程序運行的地址不確定

問題解決:

  1. 虛擬地址空間
  2. 虛擬內存。在磁盤上劃分虛擬內存,運行比物理內存更大的程序。
  3. 分頁。由操作系統選擇決定頁的大小。32位每頁4KB.
  4. 重定位

 

爲什麼不連續:如果連續,每一個進程都從0頁開始分配,會發生衝突

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章