一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Solaris - Solaris線程模型詳解

Solaris線程模型詳解

2019-11-05 17:14Solaris教程網 Solaris

Solaris是Sun公司開發和發布的一種現代操作系統,是UNIX系統的一個重要分支,今天小編為大家帶來的是Solaris線程模型詳解,希望對大家會有幫助,有需要的朋友一起去看看吧

計算機中正在執行的程序稱為進程,進程中單一順序的控制流叫做線程,進程是資源管理的最小單位,線程是程序執行的最小單位。在操作系統設計上,從進程演化出線程,最主要的目的就是利用線程共享同一地址空間的特點,更好的支持對稱多處理(SMP)以及減小(進程/線程)上下文切換開銷。

Solaris是Sun公司開發和發布的一種現代操作系統,是UNIX系統的一個重要分支,下面就其內部的線程模型做一些介紹和討論。

Solaris線程模型的設計目標:

主要有四個方面:

①.能夠描述各種情況下的線程間工作機制

②.支持代價盡可能小的線程

③.既支持單CPU實現,又支持多CPU實現

④.保持對現有UNIX版本的兼容性

Solaris線程模型的實現方法:

線程庫的高級內核具有多處理及多線程特性,因此Solaris提供了大量的用戶級線程庫,其使用了一種兩層的線程庫模型:在高層是用戶線程,而底層則是輕量級進程(LWP)。

LWP其實就是內核線程,是Solaris中真正的可調度實體。內核只關心LWP,而不關心用戶線程。

用戶線程由線程庫管理,線程庫支持用戶線程及LWP之間的一到一、多到多、多到一映射,并且用線程庫管理用戶線程與LWP池之間的映射關系及用戶線程的調度。

Solaris有兩種用戶線程: 綁定線程(bound threads)和未綁定線程(unbound threads)。一個綁定線程就是用戶線程與LWP之間的一一映射,一個未綁定線程則沒有一個固定對應的LWP。在一個進程中,線程庫在LWP池上對用戶線程進行調度。其結構圖如下:

對以上兩者進行比較,未綁定進程由線程庫來實現用戶線程獲得LWP的調度,而不需要內核的參與,這種方式的線程上下文切換比較快,并且更節省內核資源,solaris根據一定的策略提供一個LWP池,供上面更多的線程分享。

綁定線程和LWP是一對一關系,因此實時調度性要好,但是由于內核的加入,比較浪費資源。綁定線程比起非綁定線程的開銷要大。因為綁定線程可以改變它所在的LWP的屬性,LWP在綁定線程退出后不會被緩存,在新的綁定線程生成時,操作系統將提供一個新的LWP。僅僅在線程需要只有在所在的LWP內可用的資源時(例如虛擬的定時器或者一個指定的堆棧),或者為了實現實時調度而必須使線程對于內核可見的場合下,才需要使用綁定線程。

Solaris對線程的控制與同步:

內核根據LWP的調度類型和優先級對它們進行調度。進程建立時有一個初始LWP被建立,并且繼承父進程的調度類型和優先級。一般來說,綁定的用戶線程繼承底層的LWP調度類型和優先級,而未綁定的則繼承父進程的調度類型和優先級。

Solaris內核使用一種搶先的基于優先級的調度機制,高優先級的LWP比低優先級的LWP先執行。Solaris線程庫使用優先級對用戶線程在LWP池上進行調度,每次選擇一個LWP執行已經就緒的用戶線程。如果某LWP因無限等待而阻塞,線程庫則將其對應的用戶線程的上下文保存起來,并分派另一個用戶線程到該LWP上執行。線程庫通常建立足夠多的LWP,以保證進程不發生”饑餓”。

線程的同步用于共享數據,轉換和控制線程執行,保證程序安全。Solaris支持4種線程的同步原語,分別是互斥鎖,信號量,多讀進程單寫進程鎖,條件變量。

內核級線程和用戶級線程都具有這些原語操作。一條原語執行時創建一個包含線程信息的數據結構,對每個同步對象只能執行加鎖和解鎖兩項操作,但內核和線程庫沒有提供防死鎖機制。

總結:

Solaris作為多線程,多進程型的操作系統,其關于線程實現機制方面一直是業界領先的,了解solaris的多線程實現機制不但能夠幫助我們充分理解操作系統對多線程的控制原理,而且對多線程程序的編寫技巧的提高也有很大啟發。

延伸 · 閱讀

精彩推薦
  • SolarisSolaris中對tar.z進行安裝卸載詳解

    Solaris中對tar.z進行安裝卸載詳解

    今天小編將要為大家帶來的是Solaris中對tar.z進行安裝卸載詳解!希望對大家會有幫助!有需要的朋友一起去看看吧 ...

    sanyao12074912019-11-06
  • SolarisSolaris10.0下掛載光驅

    Solaris10.0下掛載光驅

    Solaris10.0下掛載光驅...

    Solaris教程網3882019-11-07
  • SolarisSolaris設置ADSL撥號上網

    Solaris設置ADSL撥號上網

    Solaris設置ADSL撥號上網...

    Solaris教程網2722019-11-22
  • SolarisSolaris8安裝OPENSSH方法

    Solaris8安裝OPENSSH方法

    Solaris8安裝OPENSSH方法...

    Solaris教程網4112019-11-19
  • SolarisSolaris 基礎知識

    Solaris 基礎知識

    1. Q: Solaris 的系統配置文件一般在什么地方? A: 可以查看/etc/system文件,里面有一些solaris啟動時默認加載的選項,包括 共享內存大小等的設置。 2. Q: 在sol...

    Solaris教程網3272019-11-20
  • SolarisSolaris系統硬盤分區知識

    Solaris系統硬盤分區知識

    Solaris 下,一個磁盤包含8個分區,標記為0-7。此信息可以通過format命令,然后選擇一個硬盤來看到,例如,在我自己的系統中(Solaris9,Ultra60),顯示出來的信...

    Solaris教程網6252019-11-18
  • Solarissolaris下VNC的安裝方法

    solaris下VNC的安裝方法

    solaris下VNC的安裝方法,有需要的朋友可以參考一下。 ...

    solaris教程網6232019-11-19
  • SolarisSolaris系統下配置MPXIO

    Solaris系統下配置MPXIO

    用的LSI的存儲 和普安的存儲 SUN V245平臺+LPE11002 或者Qlogic QLE2460 環境SUN的V245 +LSI 3994 想測試下 LSI的存儲在Solaris下的路徑冗余,因為用LSI帶的RDAC裝完系統就...

    Solaris教程網3952019-11-11
主站蜘蛛池模板: 天堂资源在线www中文 | 午夜一级影院 | 日韩一级片在线播放 | 青青精品 | 视频一本大道香蕉久在线播放 | 无人区乱码1区2区3区网站 | 国产在线视频资源 | 97se狠狠狠狠狼亚洲综合网 | 太大了轻点阿受不了小说h 四色6677最新永久网站 | 色婷婷综合久久久 | 狠狠干日日操 | 日韩视频一区二区 | 男人日女人的b | 日韩在线观看一区二区不卡视频 | 免费午夜影片在线观看影院 | 岛国最新资源网站 | 久久中文字幕免费高清 | 久久99精品国产免费观看 | 办公室里被迫高h | 国产精品怡红院永久免费 | a片毛片在线免费看 | 三级午夜宅宅伦不卡在线 | 天天综合色天天综合色sb | 国产在线观看一区 | 国产成人精品高清不卡在线 | 国产精品福利在线观看秒播 | 非洲黑人女bbwxxxx | 视频在线观看入口一二三2021 | 亚洲成人影院在线 | 精品久久久噜噜噜久久久app | 色cccwww| 青青草国产精品久久久久 | 亚洲性视频在线观看 | 性的张力| 亚洲视频一区网站 | 成人资源影音先锋久久资源网 | 饭冈加奈子黑人解禁在线播放 | 免费午夜影院 | 亚洲国产天堂久久综合网站 | 国产精品免费_区二区三区观看 | 国产精品免费视频一区一 |