国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

為何需要創建線程

2019-11-17 03:00:40
字體:
來源:轉載
供稿:網友

為何需要創建線程

個人以為是為了提高CPU利用率。線程給操作系統帶來的創建維護和管理負擔要輕。因為與線程相關的信息比較少,交情的負擔意味著線程的代價或開銷比較少。當處理器除一個進程并激活另一個進程時,就要發生上下文切換。為了發生上下文切換,操作系統必須啟動和重新啟動每個進程所需的信息。這就意味著必須保存描述進程存在狀態的有關信息,在進程再次激活時,就可以從離開的地點繼續執行。那么系統在進程切換時需要保存那些信息呢?下面一一列舉

1、所需信息包括可執行程序、堆棧、以及靜態與動態分配變量內存的指針。

2、寄存器組中包含執行下一條指令的指針這樣的信息 。

3、重新任命進程時需要進程的狀態(進程是被掛起還是被阻塞)和優先權。同時程序的I/O狀態也被保存。

4、保存進程的規劃信息,內存管理信息以及計數信息。

5、進程需要文件描述器和讀寫指針來繼續使用資源。

而線程同樣需要上下文。當線程被搶先時同樣也會發生上下文切換。

與進程相比線程的優勢如下:

1、線程不需要地址空間。線程包含在進程的地址空間中。(所以在重新任命進程時所需的線程都不需要)

2、線程的上下文只包含一個堆棧、一個寄存器組和一個優先權。

3、寄存器組包含程序或指令指針以及堆棧指針。

4、線程的文本包含在他的進程的文本中。

5、進程擁有的所有資源都屬于線程。所以與資源相關的所有信息不是線程上下文的部分。

6、其他信息如規劃、計數等都是由進程所定義。無需包含在線程的上下文中。

線程與進程的相同之處是:都有ID,寄存器組、狀態、以及優先權。線程與子進程共享父進程的資源。

他們的不同之處是:

1、線程沒有自己的地址空間,如果進程創建了多個所有的線程都將包含在他的地址空間中。

2、父進程和子進程之間必須通過進程間通信機制來進行通信。而進程中的多個線程之間是通過讀取和寫入數據到進程變量來通信。

3、子進程對其他子進程不施加控制,而進程的線程被看做同位體(peer)并對進程的其他的線程施加控制。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青州市| 尼木县| 朝阳区| 德保县| 京山县| 曲水县| 墨竹工卡县| 太白县| 晋城| 长阳| 吉木萨尔县| 阳江市| 陇西县| 莒南县| 惠州市| 开远市| 伊宁市| 连江县| 峡江县| 晋中市| 嘉祥县| 定南县| 上思县| 公主岭市| 和静县| 阿拉善左旗| 慈利县| 双流县| 甘洛县| 平远县| 东乡县| 乌鲁木齐县| 温州市| 卢龙县| 射阳县| 宜川县| 张家界市| 乌拉特中旗| 永胜县| 黄骅市| 巴林左旗|