進程的分類:用戶級線程和內核級線程。
用戶級線程是全部由用戶程序完成,操作系統內核只對進程進程管理。
內核級線程是線程所有工作都由內核完成,應用程序沒有進行線程管理的代碼,只有一個到內核級線程的編程接口。
用戶級線程占用系統開銷最小,內核級線程的開銷則比進程開銷小,但還是要大於用戶級線程的開銷。
線程的執行特性:
派生:由其他進程或者線程通過系統調用來創建。
阻塞(black:線程阻塞后代表該父進程被阻塞。
激活(unblack):激活就進入就緒隊列。
調度(schedule):選擇一個就緒線程進入執行狀態。
結束(finish):結束,則釋放寄存器上下文以及堆棧的內容。
系統必須為線程提供同步控制機制,以防止線程對資源的操作都會對其他相關線程帶來的影響。
考點分析
只有就緒狀態既可以有運行狀態過去也能有阻塞狀態轉變過去。
線程是處理器調度和分配的單位,線程本身不具備資源,它共享所屬進程的資源。
在多對一的線程模型中,用戶級的線程的多是對操作系統透明的,即操作系統並不知道用戶有多少線程,故該進程的一個線程阻塞后,該進程就被阻塞了,進程的其他進程當然就被阻塞了。
進程是操作系統資源分配和獨立的基本單位。
語言編寫的程序在使用內存時一般分為三個段:一般是正文段,即代碼和賦值數據段,數據堆段,數據棧段。二進制代碼和常量存放在正文段,動態分配的存儲區在數據堆段,臨時使用的變量在數據棧段。
同一個系統的進程(或線程)可以由系統調用的方法,被不同的進程或(線程)多次使用。
進程間的通信一般有管道,消息傳遞,共享內存,文件映射,套接字。
管道是一種固定大小的緩存區。管道對於管道兩端的進程而言,就是一個文件,但是不屬於文件系統,而是單獨一種文件系統,可以實現雙向的數據傳輸,而在同一時刻最多有一個方向的傳輸。管道的大小並不是受磁盤容量大小的限制。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。