在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在用戶態與內核中實現并使用線程

冬至配餃子 ? 來源:廣廣的隨筆 ? 作者:廣廣的隨筆 ? 2022-08-17 17:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

一個進程內有多個線程,線程有自己的寄存器,程序計數器,堆棧,狀態。但是線程間是沒有保護的,可以共享地址空間,打開文件集,子進程,定時器以及相關信號量。為什么沒有保護,原因是:不可能,也沒必要。不同進程可能來自不同用戶,它們之間彼此可能有敵意,用戶所持有的資源以進程為單位。

與傳統進程一樣,線程也擁有運行,阻塞,就緒終止狀態,正在運行的線程獨占CPU并且活躍。與進程狀態切換一致,這里就不介紹了。

每個線程堆棧都有一幀,在該棧幀存放了局部變量和過程調用后的返回地址。

在多線程情況下,進程通常會從當前的單個線程開始,也就是主線程,該線程會調用庫函數(thread_create)來創建新線程。一般來說,線程之間是平等的。這里介紹其它庫函數:

pthread_exit:線程運行結束時,退出,線程消失。

pthread_join:一個線程可以阻塞等待另一個線程退出。

pthread_yield:允許線程自動放棄CPU讓給其它線程。

4. pthread_attr_init:創建并初始化一個線程的屬性結構。

5. pthread_attr_destroy:刪除一個線程的屬性結構。

pthread.h

在用戶態實現線程

poYBAGL8usCACQ4xAAF5M5PrHlU598.png

在用戶空間管理線程時,每個進程都會有一個線程表,用來跟蹤該進程中的線程。這些表和內核空間中的進程表相似,不過它僅記錄線程的屬性。

用戶線程中,每個進程都有其相關調度算法,可擴展性高,這是因為內核線程需要固定的表格和堆棧空間。

但是,由于用戶線程沒有時鐘中斷,導致某線程想要運行時,只能依靠前一個線程主動放棄CPU,所以沒有輪轉的說法。

在內核中使用線程

當內核支持管理線程時,進程中就沒有線程表了,相反,在內核中就有一張線程表,線程想要創建新線程時,通過系統調用來對線程表更新。另外,內核還維護了傳統的進程表。

在上述情況下,當一個線程阻塞時,就可以通過系統調用(內核中的線程表)來切換線程了。

在內核回收和創建線程代價是比較大的,所以回收時,一般會將線程標記為不可運行(并不是真正的回收),需要時再啟動。用戶態線程不需要。

雖然內核線程可以解決很多問題,但不是能解決所有問題。比如信號問題,創建新進程問題等......

混合實現

人們研究出了采用多個用戶線程對應一個內核線程的方法,多個用戶線程多路復用。

彈出式線程

在分布式系統中,線程經常使用,通常下,服務接受到消息后,該服務所對應的線程會阻塞并receive,但是彈出式線程會創建一個新的線程去處理收到的消息。

poYBAGL8utWADON8AACnLcR1hFo555.png

在一些OS中,協作的進程可能共享一些彼此都能讀寫的公共存儲區。該存儲區可能是一個數據結構,可能是一個共享文件。



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5430

    瀏覽量

    123989
  • 計數器
    +關注

    關注

    32

    文章

    2290

    瀏覽量

    96245
  • 定時器
    +關注

    關注

    23

    文章

    3297

    瀏覽量

    117634
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    鴻蒙內核源碼Task/線程技術分析

    、使用內存空間等系統資源,獨立于其它線程運行。 鴻蒙內核每個進程內的線程獨立運行、獨立調度,當前進程內線程的調度不受其它進程內
    的頭像 發表于 10-18 10:42 ?2535次閱讀
    鴻蒙<b class='flag-5'>內核</b>源碼Task/<b class='flag-5'>線程</b>技術分析

    用戶線程內核線程

    線程:不需要內核支持而在用戶程序實現線程,其不依賴于操作系統核心,應用進程利用
    發表于 01-10 15:01

    linux 下如何獲取線程ID

    ),Linux在早期內核不支持線程的時候glibc就在庫用戶)以纖程(就是用戶
    發表于 07-09 08:36

    操作系統為什么分內核用戶?這兩者如何切換?

    操作系統為什么分內核用戶,這兩者如何切換?進程在地址空間會劃分為哪些區域?堆和棧有什么區別?
    發表于 07-23 09:01

    請問CPU與寄存器,內核用戶及如何切換?

    計算機硬件系統由哪幾部分構成?編程語言的作用及與操作系統和硬件的關系是什么?請問CPU與寄存器,內核用戶及如何切換?
    發表于 10-25 06:31

    OpenHarmony喂狗源碼解讀之用戶源碼

    ,ioctl,release ——> 創建內核喂狗線程hidog,并以30.01s喂狗 ——> 用戶等待/dev/watchdog創建 ——> 設置和獲取超時時間,
    發表于 01-26 10:57

    鴻蒙內核實現用戶快速互斥鎖Futex設計資料合集

    Futex(Fast userspace mutex,用戶快速互斥鎖),系列篇簡稱 快鎖 ,是一個在 Linux 上實現鎖定和構建高級抽象鎖如信號量和POSIX互斥的基本工具,它第一次出現在
    發表于 03-23 14:12

    基于Windows 操作系統內核驅動的多核CPU 線程管理

    1 引言 本文分析了Windows 系統的進程調度機制,設計了一種基于Windows 操作系統內核驅動的多核CPU 線程管理方法,實現了一個基于Windows
    發表于 10-31 11:02 ?0次下載
    基于Windows 操作系統<b class='flag-5'>內核</b>驅動的多核CPU <b class='flag-5'>線程</b>管理

    一個內核Key-Value存儲系統

    的數據存儲需求尤為突出。針對該問題,給出了一個內核Key-Value存儲系統的實現-KStore:提供內核空間的索引和內存分配機制,并在
    發表于 01-19 16:37 ?0次下載
    一個<b class='flag-5'>內核</b><b class='flag-5'>態</b>Key-Value存儲系統

    Linux系統內核空間與用戶空間通信

    使用。 套接字 在硬、軟中斷無法無阻塞地接收數據。 ??3 Linux內核用戶
    發表于 04-02 14:43 ?596次閱讀

    為什么說內核線程放入SCHED_FIFO的做法毫無意義?

    內核線程的優先級Linux內核會將大量(并且在不斷增加)工作放置在內核線程
    的頭像 發表于 06-09 15:21 ?4923次閱讀

    深入淺析Linux內核內核線程(上)

    本文力求與完整介紹完內核線程的整個生命周期,如內核線程的創建、調度等等,當然本文還是主要從內存管理和進程調度兩個維度來解析,且不會涉及到具體的內核
    的頭像 發表于 04-28 16:26 ?2288次閱讀
    深入淺析Linux<b class='flag-5'>內核</b>之<b class='flag-5'>內核</b><b class='flag-5'>線程</b>(上)

    Linux內核用戶是如何睡眠的

    clock_nanosleep系統調用來進行睡眠(也就是說用戶任務睡眠需要調用系統調用陷入內核)。 下面我們來研究下clock_nanosleep的實現(這里集中到睡眠的
    的頭像 發表于 08-16 15:06 ?2186次閱讀

    tcpdump如何實現內核的包

    今天聊聊大家工作中經常用到的 tcpdump。 在網絡包的發送和接收過程,絕大部分的工作都是在內核完成的。那么問題來了,我們常用的運行在用戶
    的頭像 發表于 10-08 10:34 ?2985次閱讀
    tcpdump如何<b class='flag-5'>實現</b>抓<b class='flag-5'>內核</b><b class='flag-5'>態</b>的包

    Linux線程線程與異步編程、協程與異步介紹

    線程之間的切換不需要陷入內核,但部分操作系統中用戶線程的切換需要內核
    的頭像 發表于 11-11 11:35 ?1604次閱讀
    Linux<b class='flag-5'>線程</b>、<b class='flag-5'>線程</b>與異步編程、協程與異步介紹
    主站蜘蛛池模板: 午夜h视频 | 午夜免费福利片 | 五月激情五月婷婷 | 日本特黄特色aaa大片免费欧 | 欧美18性欧美丶黑吊 | 最近国语视频免费观看在线播放 | 欧美在线不卡视频 | 久久久久久夜精品精品免费啦 | 中文字幕一区二区三区永久 | 色综合亚洲天天综合网站 | 日本69式xxx视频 | 日韩理论电影2021第1页 | 亚洲小视频| h黄网站| 男人天堂网在线观看 | 一级毛片西西人体44rt高清 | 色婷婷激情综合 | 男人和女人做免费做爽爽视频 | 激情五月婷婷在线 | 你懂的网站在线观看网址 | 狼狼狼色精品视频在线播放 | h小视频在线观看 | 六月丁香深爱六月综合激情 | 国产精品高清免费网站 | xxxx日本黄色 | 一级全免费视频播放 | 色噜噜狠狠成人网 | 伊人婷婷涩六月丁香七月 | 成年人www | 美国一级做a一级爱视频 | 色综合色综合色综合色综合 | 四虎国产精品永久在线 | 黄h网站| 日本黄色小视频在线观看 | 婷婷激情六月 | 色综合888| 天天爽夜夜爽人人爽 | 亚洲色图综合 | 天天干天天干天天干天天 | 国产亚洲一区二区精品 | 波多野结衣在线观看一区二区 |