線程與進程的區別

進程是資源分配的基本單位。全部與該進程有關的資源,都被記錄在進程控制塊PCB中。以表示該進程擁有這些資源或正在使用它們。
另外,進程也是搶佔處理機的調度單位,它擁有一個完整的虛擬地址空間。當進程發生調度時,不一樣的進程擁有不一樣的虛擬地址空間,而同一進程內的不一樣線程共享同一地址空間。
與進程相對應,線程與資源分配無關,它屬於某一個進程,並與進程內的其餘線程一塊兒共享進程的資源。
線程只由相關 堆棧系統棧或 用戶棧寄存器和線程控制表TCB組成。 寄存器可被用來存儲線程內的 局部變量,但不能存儲其餘線程的相關變量。
一般在一個進程中能夠包含若干個線程,它們能夠利用進程所擁有的資源。在引入線程的操做系統中,一般都是把進程做爲分配資源的基本單位,而把線程做爲獨立運行和獨立調度的基本單位。因爲線程比進程更小,基本上不擁有系統資源,故對它的調度所付出的開銷就會小得多,能更高效的提升系統內多個程序間併發執行的程度,從而顯著提升系統資源的利用率和吞吐量。於是近年來推出的 通用操做系統都引入了線程,以便進一步提升系統的 併發性,並把它視爲現代操做系統的一個重要指標。
線程與進程的區別能夠概括爲如下4點:
1)地址空間和其它資源(如打開文件):進程間相互獨立,同一進程的各線程間共享。某進程內的線程在其它進程不可見。
2)通訊: 進程間通訊 IPC,線程間能夠直接讀寫進程數據段(如全局變量)來進行通訊——須要 進程同步和互斥手段的輔助,以保證數據的一致性。
3)調度和切換:線程上下文切換比進程上下文切換要快得多。
4)在多線程OS中,進程不是一個可執行的實體。
相關文章
相關標籤/搜索