一張圖看懂線程和進程 什么是php進程?
什么是php進程?首先,PHP流程模型進程的概念是操作系統結構的基礎。Multics的設計者在60年代首次使用這個專業術語,比作業更籠統。流程的定義如下:1.正在執行的程序。2.計算機中正在運行的程序
什么是php進程?
首先,PHP流程模型
進程的概念是操作系統結構的基礎。Multics的設計者在60年代首次使用這個專業術語,比作業更籠統。流程的定義如下:
1.正在執行的程序。
2.計算機中正在運行的程序的例子。
3.可以分配給處理器并由處理器執行的實體。
4.由單個順序執行線程、當前狀態和一組相關系統資源描述的活動單元。
二、進程和線程的區別
進程是資源分配的基本單位。與過程相關的所有資源都記錄在過程控制塊PCB中。以指示該進程擁有或正在使用這些資源。
另外,進程也是搶占式處理器的調度單元,它擁有完整的虛擬地址空間。在調度進程時,不同的進程有不同的虛擬地址空間,而同一進程中的不同線程共享相同的地址空間。
對應一個進程,線程與資源分配無關。它屬于一個進程,并與該進程中的其他線程共享該進程的資源。
線程僅由相關的堆棧(系統堆棧或用戶堆棧)寄存器和線程控制表TCB組成。寄存器可用于存儲線程內的局部變量,但不能存儲其他線程的相關變量。
通常,一個進程可以包含幾個線程,這些線程可以利用進程所擁有的資源。在有線程的操作系統中,進程通常被視為分配資源的基本單位,而線程則被視為獨立運行和獨立調度的基本單位。由于線程比進程小,基本沒有系統資源,其調度的成本會小很多,可以更高效地提高系統中多個程序并發執行的程度,從而顯著提高系統資源的利用率和吞吐量。因此,近年來,通用操作系統為了進一步提高系統的并發性,紛紛引入線程,并將其作為現代操作系統的重要指標。
線程和進程之間的差異可以總結如下:
(1)進程是資源分配和調度的獨立單位,而線程是CPU調度的基本單位。
(2)同一個進程中可以包含多個線程,線程共享整個進程的資源(寄存器、棧、上下文),每個進程至少包含一個線程。
(3)進程的創建調用fork或vfork,而線程的創建調用pthread_create。進程結束后,它擁有的所有線程都將被銷毀,一個線程的結束不會影響同一進程中其他線程的結束。
(4)線程是輕量級進程,創建和銷毀線程所需的時間比進程少得多。操作系統中所有的執行功能都是通過創建線程來完成的。
(5)在線程中執行時,一般需要同步和互斥,因為它們共享同一個進程的所有資源。
(6)線程有自己的私有屬性TCB,線程id,寄存器,硬件。上下文,進程也有自己的私有屬性,進程控制塊PCB,不共享,用來標記一個進程或線程。
第三,進程間的通信
1.管道和命名管道:管道可用于相關進程之間的通信。著名管道克服了管道沒有名字的限制,因此除了管道的功能之外,它們還允許不相關的進程之間的通信。
2.信號:信號是一種復雜的通信,用于通知接收進程某個事件已經發生。除了進程間通信,進程還可以向進程本身發送信號。Linux不僅支持Unix早期的信號語義函數sigal,還支持語義符合Posix.1標準的信號函數sigaction(實際上這個函數是基于BSD的,BSD為了實現可靠的信號機制和統一對外接口,用sigaction函數重新實現了信號函數)。
3.消息隊列(Message queue):消息隊列是消息的鏈表,包括Posix消息隊列system V message queue。擁有足夠權限的進程可以將消息添加到隊列中,擁有讀取權限的進程可以從隊列中讀取消息。消息隊列克服了信號攜帶信息量少、流水線只能攜帶無格式字節流和緩沖區大小有限的缺點。
4.共享內存:它允許多個進程訪問同一個內存空間,這是最快的IPC形式。它是針對其他通信機制的低效率而設計的。它通常與其他通信機制(如信號量)結合使用,以實現進程間的同步和互斥。
信號量(Semaphore):主要用作進程之間以及同一進程的不同線程之間的同步手段。
Sock
wps的線程是什么意思?
打開一個新程序會在系統中打開一個新的進程,但是進程不負責具體操作,具體操作由線程執行;進程是資源單元,線程是執行單元;例如:當您打開一個wps軟件時,此時不會創建新文件。如果創建了一個新文檔,這個文檔就是當前運行的wps軟件的線程;Wps軟件本身只占用資源,不做具體的執行操作。新創建的文檔是特定的執行單元。