高級程序員知識學習(操作系統的知識點)

在操作系統中主要是涉及的是線程 進程 併發 鎖和其他的知識。等

什麼是線程 進程的區別:

線程是執行的最小的單位,而進程是資源分配的最小的單位。

進程是資源分配的最小單位,線程是程序執行的最小單位。進程是系統中正在運行的一個程序,程序一旦運行就是進程。一個進程可以擁有多個線程,每個線程使用其所屬進程的棧空間。線程與進程的一個主要區別是,同一進程內的一個主要區別是,同一進程內的多個線程會共享部分狀態,多個線程可以讀寫同一塊內存(一個進程無法直接訪問另一進程的內存)。同時,每個線程還擁有自己的寄存器和棧,其他線程可以讀寫這些棧內存。

更過的區別是:

1.地址空間和其他資源(如打開文件):進程間相互獨立,同一進程的各線程間共享。某進程內的線程在其他進程內不可見。

2.通信:進程間通信IPC(管道,信號量,共享內存,消息隊列),線程間可以直接獨寫進程數據段(如全局變量)來進程通信—需要進程同步和互斥手段的輔助,以保證數據的一致性。

3.調度和切換:線程上下文切換比進程上下文切換快得多。

4.在多線程OS中,進程不是一個可執行的實體。

 進程間通信的方式

管道(pipe)及有名管道(named pipe):管道可用於具有親緣關係的父子進程間的通信,有名管道除了具有管道所具有的功能外,它還允許無親緣關係進程間的通信。

信號(signal):信號是在軟件層次上對中斷機制的一種模擬,它是比較複雜的通信方式,用於通知進程有某事件發生,一個進程收到一個信號與處理器收到一箇中斷請求效果上可以說是一致的。

消息隊列(message queue):消息隊列是消息的鏈接表,它克服了上兩種通信方式中信號量有限的缺點,具有寫權限得進程可以按照一定得規則向消息隊列中添加新信息;對消息隊列有讀權限得進程則可以從消息隊列中讀取信息。

共享內存(shared memory):可以說這是最有用的進程間通信方式。它使得多個進程可以訪問同一塊內存空間,不同進程可以及時看到對方進程中對共享內存中數據得更新。這種方式需要依靠某種同步操作,如互斥鎖和信號量等。

信號量(semaphore):主要作爲進程之間及同一種進程的不同線程之間得同步和互斥手段。

套接字(socket):這是一種更爲一般得進程間通信機制,它可用於網絡中不同機器之間的進程間通信,應用非常廣泛。

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