線程的引入:例如,有一個Web服務器要進程的方式并發地處理來自不同用戶的網頁訪問請求的話,可以創建父進程和多個子進程的方式來進行處理,但是創建一個進程要花費較大的系統開銷和占用較多的資源。除外,這些不同的用戶子進程在執行的時候涉及到進程上下文切換,上下文切換是一個復雜的過程。所以,為了減少進程切換和創建的開銷,提高執行效率和節省資源,人們在操作系統中引入了"線程(thread)"的概念。
進程的作用和定義:進程是為了提高CPU的執行效率,減少因為程序等待帶來的CPU空轉以及其他計算機軟硬件資源的浪費而提出來的。進程是為了完成用戶任務所需要的程序的一次執行過程和為其分配資源的一個基本單位,是一個具有獨立功能的程序段對某個數據集的一次執行活動。
線程和進程的區別:
1、線程是進程的一部分,所以線程有的時候被稱為是輕權進程或者輕量級進程。
2、一個沒有線程的進程是可以被看作單線程的,如果一個進程內擁有多個進程,進程的執行過程不是一條線(線程)的,而是多條線(線程)共同完成的。
3、系統在運行的時候會為每個進程分配不同的內存區域,但是不會為線程分配內存(線程所使用的資源是它所屬的進程的資源),線程組只能共享資源。那就是說,出了CPU之外(線程在運行的時候要占用CPU資源),計算機內部的軟硬件資源的分配與線程無關,線程只能共享它所屬進程的資源。
4、與進程的控制表PCB相似,線程也有自己的控制表TCB,但是TCB中所保存的線程狀態比PCB表中少多了。
5、進程是系統所有資源分配時候的一個基本單位,擁有一個完整的虛擬空間地址,并不依賴線程而獨立存在。
進程與程序的區別:
程序是一組指令的集合,它是靜態的實體,沒有執行的含義。而進程是一個動態的實體,有自己的生命周期。一般說來,一個進程肯定與一個程序相對應,并且只有一個,但是一個程序可以有多個進程,或者一個進程都沒有。除此之外,進程還有并發性和交往性。簡單地說,進程是程序的一部分,程序運行的時候會產生進程。
總結:
線程是進程的一部分,進程是程序的一部分。
題:http://zhidao.baidu.com/question/42875356.html?fr=qrl
http://jsjedu.hxu.edu.cn/os/zy/fy1/xt2.htm
http://www1.nttvu.edu.cn/ntddnew/classweb/article.asp?classid=46&id=416
轉自 http://www.javaeye.com/topic/271229