轉: 關於程式 進程 和 線程

來源:互聯網
上載者:User

標籤:

我對於線程,進程的概念一直都是比較模糊,最近整理了一下。總結起來就是,線程是進程的一部分,進程是程式的一部分。

線程的引入:例如,有一個Web伺服器要進程的方式並發地處理來自不同使用者的網頁訪問請求的話,可以建立父進程和多個子進程的方式來 進行處理,但是建立一個進程要花費較大的系統開銷和佔用較多的資源。除外,這些不同的使用者子進程在執行的時候涉及到進程環境切換,環境切換是一個複雜 的過程。所以,為了減少進程切換和建立的開銷,提高執行效率和節省資源,人們在作業系統中引入了"線程(thread)"的概念。

進程的作用和定義:進程是為了提高CPU的執行效率,減少因為程式等待帶來的CPU空轉以及其他電腦軟硬體資源的浪費而提出來的。進程是為了完成使用者任務所需要的程式的一次執行過程和為其分配資源的一個基本單位,是一個具有獨立功能的程式段對某個資料集的一次執行活動。

線程和進程的區別

1、線程是進程的一部分,所以線程有的時候被稱為是輕權進程或者輕量級進程。

2、一個沒有線程的進程是可以被看作單線程的,如果一個進程內擁有多個進程,進程的執行過程不是一條線(線程)的,而是多條線(線程)共同完成的。

3、系統在啟動並執行時候會為每個進程分配不同的記憶體地區,但是不會為線程分配記憶體(線程所使用的資源是它所屬的進程的資源),線程組只能共用資源。那 就是說,出了CPU之外(線程在啟動並執行時候要佔用CPU資源),電腦內部的軟硬體資源的分配與線程無關,線程只能共用它所屬進程的資源。

4、與進程的控製表PCB相似,線程也有自己的控製表TCB,但是TCB中所儲存的線程狀態比PCB表中少多了。

5、進程是系統所有資源分派時候的一個基本單位,擁有一個完整的虛擬空間地址,並不依賴線程而獨立存在。

進程與程式的區別

程式是一組指令的集合,它是靜態實體,沒有執行的含義。而進程是一個動態實體,有自己的生命週期。一般說來,一個進程肯定與一個程式相對應,並且只有一個,但是一個程式可以有多個進程,或者一個進程都沒有也可以只有一個進程。除此之外,進程還有並發性和交往性。簡單地說,進程是程式的一部分,程式啟動並執行時候會產生進程。

總結

線程是進程的一部分,進程是程式的一部分。

 

轉自: https://www.ezloo.com/2007/10/thread_process_program.html 

轉: 關於程式 進程 和 線程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.