操作系統基礎(二)
文章目錄
- 操作系統基礎(二)
- 6、線程
- 7、進程內存管理
- 8、內存頁
- 9、內存保護
- 10、匿名內存和內存映射內存
- 11、內存映射文件和模塊
6、線程
程序首次啟動時,會創建一個新進程,并為該程序分配一個線程。該初始線程負責初始化進程并最終調用程序中的主函數。多線程程序可以請求向進程添加其他線程來處理后臺工作。例如,多線程 Web 應用服務器可能會為每個傳入請求使用一個線程,以防止長時間運行的請求阻塞其他用戶訪問網站。
進程始終至少有一個線程。當進程中的最后一個線程完成時,該進程將退出。查看程序內部線程的一種方法是通過 top11 程序,該程序使用語法 top –H –p 。例如,圖 6.1 顯示了程序 rsyslogd 內部正在運行的線程。
每個線程獨立運行代碼,邏輯上就像一個獨立的處理器核心一樣運行。每個線程都有自己的一組處理器寄存器和處理器狀態,包括自己的程序計數器、堆棧指針和算術標志,以及自己內部管理的局部變量和調用堆棧。但請注意,與進程不同,線程彼此之間并非隔離。每個線程的代碼和數據都加載到同一個進程中,盡管編程約定通常規定一個線程不應直接干擾另一個線程的私有數據,