9.1 Linux線程概述
9.1.1 線程概述
前面已經提到,進程是系統中程序執行和資源分配的基本單位。每個進程都擁有自己的數據段、代碼段和堆棧段,這就造成了進程在進行切換等操作時都需要有比較復雜的上下文切換等動作。為了進一步減少處理機的空轉時間,支持多處理器以及減少上下文切換開銷,進程在演化中出現了另一個概念——線程。它是進程內獨立的一條運行路線,處理器調度的最小單元,也可以稱為輕量級進程。線程可以對進程的內存空間和資源進行訪問,并與同一進程中的其他線程共享。因此,線程的上下文切換的開銷比創建進程小很多。
同進程一樣,線程也將相關的執行狀態和存儲變量放在線程控制表內。一個進程可以有多個線程,也就是有多個線程控制表及堆棧寄存器,但卻共享一個用戶地址空間。要注意的是,由于線程共享了進程的資源和地址空間,因此,任何線程對系統資源的操作都會給其他線程帶來影響。由此可知,多線程中的同步是非常重要的問題。在多線程系統中,進程與進程的關系如圖9.1所示。
圖9.1 進程與線程關系
9.1.2 線程機制的分類和特性
線程按照其調度者可以分為用戶級線程和核心級線程兩種。
(1)用戶級線程。
用戶級線程主要解決的是上下文切換的問題,它的調度算法和調度過程全部由用戶自行選擇決定,在運行時不需要特定的內核支持。在這里,操作系統往往會提供一個用戶空間的線程庫,該線程庫提供了線程的創建、調度和撤銷等功能,而內核仍然僅對進程進行管理。如果一個進程中的某一個線程調用了一個阻塞的系統調用函數,那么該進程包括該進程中的其他所有線程也同時被阻塞。這種用戶級線程的主要缺點是在一個進程中的多個線程的調度中無法發揮多處理器的優勢。
(2)輕量級進程。
輕量級進程是內核支持的用戶線程,是內核線程的一種抽象對象。每個線程擁有一個或多個輕量級線程,而每個輕量級線程分別被綁定在一個內核線程上。
(3)內核線程。
這種線程允許不同進程中的線程按照同一相對優先調度方法進行調度,這樣就可以發揮多處理器的并發優勢。
現在大多數系統都采用用戶級線程與核心級線程并存的方法。一個用戶級線程可以對應一個或幾個核心級線程,也就是“一對一”或“多對一”模型。這樣既可滿足多處理機系統的需要,也可以最大限度地減少調度開銷。
使用線程機制大大加快上下文切換速度而且節省很多資源。但是因為在用戶態和內核態均要實現調度管理,所以會增加實現的復雜度和引起優先級翻轉的可能性。一個多線程程序的同步設計與調試也會增加程序實現的難度。
網站首頁 |網站簡介 | 關于我們 | 廣告業務 | 投稿信箱
Copyright © 2000-2020 www.fnsyft.com All Rights Reserved.
中國網絡消費網 版權所有 未經書面授權 不得復制或建立鏡像
聯系郵箱:920 891 263@qq.com
亚洲热线99精品视频| 亚洲精品无码mv在线观看网站| 亚洲视频在线一区二区| 亚洲人成色4444在线观看| 337p日本欧洲亚洲大胆艺术| 亚洲AV日韩AV永久无码绿巨人 | 亚洲性日韩精品国产一区二区| 亚洲欧美第一成人网站7777| 亚洲综合在线一区二区三区| 亚洲一区二区三区在线| 亚洲欧洲精品视频在线观看| 亚洲视频一区网站| 亚洲日本在线播放| 亚洲人成影院在线高清| 亚洲国产日产无码精品| 亚洲一区电影在线观看| 2017亚洲男人天堂一| 日本亚洲精品色婷婷在线影院| 91亚洲视频在线观看| 亚洲五月综合网色九月色| 亚洲日产2021三区在线| 亚洲午夜精品在线| 亚洲午夜在线播放| 色综合久久精品亚洲国产| 亚洲国产精品自在自线观看| 亚洲熟妇无码av另类vr影视| 亚洲国产精品精华液| 亚洲av手机在线观看| 亚洲精品成人a在线观看| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产精品国产亚洲精品看不卡| 亚洲老妈激情一区二区三区| 国产成人精品日本亚洲网站| 亚洲国产精品无码中文字| 亚洲av无码精品网站| 亚洲邪恶天堂影院在线观看| 亚洲成a人片在线观看中文!!!| 国产精品亚洲自在线播放页码| 国产精品亚洲自在线播放页码 | 久久久久亚洲AV成人网人人网站| 国产精品亚洲mnbav网站 |