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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在用戶(hù)態(tài)與內(nèi)核中實(shí)現(xiàn)并使用線(xiàn)程

冬至配餃子 ? 來(lái)源:廣廣的隨筆 ? 作者:廣廣的隨筆 ? 2022-08-17 17:55 ? 次閱讀

前言

一個(gè)進(jìn)程內(nèi)有多個(gè)線(xiàn)程,線(xiàn)程有自己的寄存器,程序計(jì)數(shù)器,堆棧,狀態(tài)。但是線(xiàn)程間是沒(méi)有保護(hù)的,可以共享地址空間,打開(kāi)文件集,子進(jìn)程,定時(shí)器以及相關(guān)信號(hào)量。為什么沒(méi)有保護(hù),原因是:不可能,也沒(méi)必要。不同進(jìn)程可能來(lái)自不同用戶(hù),它們之間彼此可能有敵意,用戶(hù)所持有的資源以進(jìn)程為單位。

與傳統(tǒng)進(jìn)程一樣,線(xiàn)程也擁有運(yùn)行,阻塞,就緒終止?fàn)顟B(tài),正在運(yùn)行的線(xiàn)程獨(dú)占CPU并且活躍。與進(jìn)程狀態(tài)切換一致,這里就不介紹了。

每個(gè)線(xiàn)程堆棧都有一幀,在該棧幀存放了局部變量和過(guò)程調(diào)用后的返回地址。

在多線(xiàn)程情況下,進(jìn)程通常會(huì)從當(dāng)前的單個(gè)線(xiàn)程開(kāi)始,也就是主線(xiàn)程,該線(xiàn)程會(huì)調(diào)用庫(kù)函數(shù)(thread_create)來(lái)創(chuàng)建新線(xiàn)程。一般來(lái)說(shuō),線(xiàn)程之間是平等的。這里介紹其它庫(kù)函數(shù):

pthread_exit:線(xiàn)程運(yùn)行結(jié)束時(shí),退出,線(xiàn)程消失。

pthread_join:一個(gè)線(xiàn)程可以阻塞等待另一個(gè)線(xiàn)程退出。

pthread_yield:允許線(xiàn)程自動(dòng)放棄CPU讓給其它線(xiàn)程。

4. pthread_attr_init:創(chuàng)建并初始化一個(gè)線(xiàn)程的屬性結(jié)構(gòu)。

5. pthread_attr_destroy:刪除一個(gè)線(xiàn)程的屬性結(jié)構(gòu)。

pthread.h

在用戶(hù)態(tài)實(shí)現(xiàn)線(xiàn)程

poYBAGL8usCACQ4xAAF5M5PrHlU598.png

在用戶(hù)空間管理線(xiàn)程時(shí),每個(gè)進(jìn)程都會(huì)有一個(gè)線(xiàn)程表,用來(lái)跟蹤該進(jìn)程中的線(xiàn)程。這些表和內(nèi)核空間中的進(jìn)程表相似,不過(guò)它僅記錄線(xiàn)程的屬性。

用戶(hù)線(xiàn)程中,每個(gè)進(jìn)程都有其相關(guān)調(diào)度算法,可擴(kuò)展性高,這是因?yàn)閮?nèi)核線(xiàn)程需要固定的表格和堆棧空間。

但是,由于用戶(hù)線(xiàn)程沒(méi)有時(shí)鐘中斷,導(dǎo)致某線(xiàn)程想要運(yùn)行時(shí),只能依靠前一個(gè)線(xiàn)程主動(dòng)放棄CPU,所以沒(méi)有輪轉(zhuǎn)的說(shuō)法。

在內(nèi)核中使用線(xiàn)程

當(dāng)內(nèi)核支持管理線(xiàn)程時(shí),進(jìn)程中就沒(méi)有線(xiàn)程表了,相反,在內(nèi)核中就有一張線(xiàn)程表,線(xiàn)程想要?jiǎng)?chuàng)建新線(xiàn)程時(shí),通過(guò)系統(tǒng)調(diào)用來(lái)對(duì)線(xiàn)程表更新。另外,內(nèi)核還維護(hù)了傳統(tǒng)的進(jìn)程表。

在上述情況下,當(dāng)一個(gè)線(xiàn)程阻塞時(shí),就可以通過(guò)系統(tǒng)調(diào)用(內(nèi)核中的線(xiàn)程表)來(lái)切換線(xiàn)程了。

在內(nèi)核回收和創(chuàng)建線(xiàn)程代價(jià)是比較大的,所以回收時(shí),一般會(huì)將線(xiàn)程標(biāo)記為不可運(yùn)行(并不是真正的回收),需要時(shí)再啟動(dòng)。用戶(hù)態(tài)線(xiàn)程不需要。

雖然內(nèi)核線(xiàn)程可以解決很多問(wèn)題,但不是能解決所有問(wèn)題。比如信號(hào)問(wèn)題,創(chuàng)建新進(jìn)程問(wèn)題等......

混合實(shí)現(xiàn)

人們研究出了采用多個(gè)用戶(hù)線(xiàn)程對(duì)應(yīng)一個(gè)內(nèi)核線(xiàn)程的方法,多個(gè)用戶(hù)線(xiàn)程多路復(fù)用。

彈出式線(xiàn)程

在分布式系統(tǒng)中,線(xiàn)程經(jīng)常使用,通常下,服務(wù)接受到消息后,該服務(wù)所對(duì)應(yīng)的線(xiàn)程會(huì)阻塞并receive,但是彈出式線(xiàn)程會(huì)創(chuàng)建一個(gè)新的線(xiàn)程去處理收到的消息。

poYBAGL8utWADON8AACnLcR1hFo555.png

在一些OS中,協(xié)作的進(jìn)程可能共享一些彼此都能讀寫(xiě)的公共存儲(chǔ)區(qū)。該存儲(chǔ)區(qū)可能是一個(gè)數(shù)據(jù)結(jié)構(gòu),可能是一個(gè)共享文件。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5372

    瀏覽量

    121336
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2276

    瀏覽量

    95079
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3256

    瀏覽量

    115474
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙內(nèi)核源碼Task/線(xiàn)程技術(shù)分析

    、使用內(nèi)存空間等系統(tǒng)資源,獨(dú)立于其它線(xiàn)程運(yùn)行。 鴻蒙內(nèi)核每個(gè)進(jìn)程內(nèi)的線(xiàn)程獨(dú)立運(yùn)行、獨(dú)立調(diào)度,當(dāng)前進(jìn)程內(nèi)線(xiàn)程的調(diào)度不受其它進(jìn)程內(nèi)
    的頭像 發(fā)表于 10-18 10:42 ?2280次閱讀
    鴻蒙<b class='flag-5'>內(nèi)核</b>源碼Task/<b class='flag-5'>線(xiàn)程</b>技術(shù)分析

    用戶(hù)級(jí)線(xiàn)程內(nèi)核級(jí)線(xiàn)程

    線(xiàn)程:不需要內(nèi)核支持而在用戶(hù)程序實(shí)現(xiàn)線(xiàn)程,其不依賴(lài)于操作系統(tǒng)核心,應(yīng)用進(jìn)程利用
    發(fā)表于 01-10 15:01

    linux 下如何獲取線(xiàn)程ID

    ),Linux在早期內(nèi)核不支持線(xiàn)程的時(shí)候glibc就在庫(kù)用戶(hù)態(tài))以纖程(就是用戶(hù)
    發(fā)表于 07-09 08:36

    操作系統(tǒng)為什么分內(nèi)核態(tài)用戶(hù)態(tài)?這兩者如何切換?

    操作系統(tǒng)為什么分內(nèi)核態(tài)用戶(hù)態(tài),這兩者如何切換?進(jìn)程在地址空間會(huì)劃分為哪些區(qū)域?堆和棧有什么區(qū)別?
    發(fā)表于 07-23 09:01

    請(qǐng)問(wèn)CPU與寄存器,內(nèi)核態(tài)用戶(hù)態(tài)及如何切換?

    計(jì)算機(jī)硬件系統(tǒng)由哪幾部分構(gòu)成?編程語(yǔ)言的作用及與操作系統(tǒng)和硬件的關(guān)系是什么?請(qǐng)問(wèn)CPU與寄存器,內(nèi)核態(tài)用戶(hù)態(tài)及如何切換?
    發(fā)表于 10-25 06:31

    OpenHarmony喂狗源碼解讀之用戶(hù)態(tài)源碼

    ,ioctl,release ——> 創(chuàng)建內(nèi)核喂狗線(xiàn)程hidog,并以30.01s喂狗 ——> 用戶(hù)態(tài)等待/dev/watchdog創(chuàng)建 ——> 設(shè)置和獲取超時(shí)時(shí)間,
    發(fā)表于 01-26 10:57

    鴻蒙內(nèi)核實(shí)現(xiàn)用戶(hù)態(tài)快速互斥鎖Futex設(shè)計(jì)資料合集

    Futex(Fast userspace mutex,用戶(hù)態(tài)快速互斥鎖),系列篇簡(jiǎn)稱(chēng) 快鎖 ,是一個(gè)在 Linux 上實(shí)現(xiàn)鎖定和構(gòu)建高級(jí)抽象鎖如信號(hào)量和POSIX互斥的基本工具,它第一次出現(xiàn)在
    發(fā)表于 03-23 14:12

    基于Windows 操作系統(tǒng)內(nèi)核驅(qū)動(dòng)的多核CPU 線(xiàn)程管理

    1 引言 本文分析了Windows 系統(tǒng)的進(jìn)程調(diào)度機(jī)制,設(shè)計(jì)了一種基于Windows 操作系統(tǒng)內(nèi)核驅(qū)動(dòng)的多核CPU 線(xiàn)程管理方法,實(shí)現(xiàn)了一個(gè)基于Windows
    發(fā)表于 10-31 11:02 ?0次下載
    基于Windows 操作系統(tǒng)<b class='flag-5'>內(nèi)核</b>驅(qū)動(dòng)的多核CPU <b class='flag-5'>線(xiàn)程</b>管理

    一個(gè)內(nèi)核態(tài)Key-Value存儲(chǔ)系統(tǒng)

    的數(shù)據(jù)存儲(chǔ)需求尤為突出。針對(duì)該問(wèn)題,給出了一個(gè)內(nèi)核態(tài)Key-Value存儲(chǔ)系統(tǒng)的實(shí)現(xiàn)-KStore:提供內(nèi)核空間的索引和內(nèi)存分配機(jī)制,并在
    發(fā)表于 01-19 16:37 ?0次下載
    一個(gè)<b class='flag-5'>內(nèi)核</b><b class='flag-5'>態(tài)</b>Key-Value存儲(chǔ)系統(tǒng)

    Linux系統(tǒng)內(nèi)核空間與用戶(hù)空間通信

    使用。 套接字 在硬、軟中斷無(wú)法無(wú)阻塞地接收數(shù)據(jù)。 ??3 Linux內(nèi)核態(tài)用戶(hù)
    發(fā)表于 04-02 14:43 ?514次閱讀

    為什么說(shuō)內(nèi)核線(xiàn)程放入SCHED_FIFO的做法毫無(wú)意義?

    內(nèi)核線(xiàn)程的優(yōu)先級(jí)Linux內(nèi)核會(huì)將大量(并且在不斷增加)工作放置在內(nèi)核線(xiàn)程
    的頭像 發(fā)表于 06-09 15:21 ?4797次閱讀

    深入淺析Linux內(nèi)核內(nèi)核線(xiàn)程(上)

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

    Linux內(nèi)核用戶(hù)態(tài)是如何睡眠的

    clock_nanosleep系統(tǒng)調(diào)用來(lái)進(jìn)行睡眠(也就是說(shuō)用戶(hù)態(tài)任務(wù)睡眠需要調(diào)用系統(tǒng)調(diào)用陷入內(nèi)核)。 下面我們來(lái)研究下clock_nanosleep的實(shí)現(xiàn)(這里集中到睡眠的
    的頭像 發(fā)表于 08-16 15:06 ?1979次閱讀

    tcpdump如何實(shí)現(xiàn)內(nèi)核態(tài)的包

    今天聊聊大家工作中經(jīng)常用到的 tcpdump。 在網(wǎng)絡(luò)包的發(fā)送和接收過(guò)程,絕大部分的工作都是在內(nèi)核態(tài)完成的。那么問(wèn)題來(lái)了,我們常用的運(yùn)行在用戶(hù)態(tài)
    的頭像 發(fā)表于 10-08 10:34 ?2810次閱讀
    tcpdump如何<b class='flag-5'>實(shí)現(xiàn)</b>抓<b class='flag-5'>內(nèi)核</b><b class='flag-5'>態(tài)</b>的包

    Linux線(xiàn)程線(xiàn)程與異步編程、協(xié)程與異步介紹

    線(xiàn)程之間的切換不需要陷入內(nèi)核,但部分操作系統(tǒng)中用戶(hù)態(tài)線(xiàn)程的切換需要內(nèi)核
    的頭像 發(fā)表于 11-11 11:35 ?1296次閱讀
    Linux<b class='flag-5'>線(xiàn)程</b>、<b class='flag-5'>線(xiàn)程</b>與異步編程、協(xié)程與異步介紹
    主站蜘蛛池模板: 久久香蕉国产精品一区二区三 | 五月婷婷丁香 | 久久夜色精品国产亚洲噜噜 | 色多多官网 | 国产免费成人在线视频 | 完全免费在线视频 | 天天干天天玩 | 99热国内精品 | 国产精品久久自在自2021 | 黄色一级毛片看一级毛片 | 四虎影在线永久免费观看 | 成人伊人 | 午夜女上男下xx00xx00动态 | 色综合网址 | 中文4480yy私人免费影院 | 免费视频一区 | 国产成人精品本亚洲 | 黄免费网站 | 不卡无毒免费毛片视频观看 | 色视频网站免费 | dy888午夜秋霞影院不卡 | 天天干天天舔天天射 | 202z国产高清日本在线播放 | www男人的天堂 | 六月丁香激情综合成人 | 全黄性色大片 | 欧美午夜色视频国产精品 | 怡红院网址 | 日日做夜夜爽夜夜爽 | 成人爽爽激情在线观看 | 88av免费观看 | 午夜理伦| 亚洲激情视频网站 | 欧美午夜色视频国产精品 | 亚洲黄网址 | 国产情侣出租屋露脸实拍 | 日本高清一本视频 | 免费国产综合视频在线看 | 中年艳妇乱小玩 | 女bbbbxxxx毛片视频丶 | 天天视频一区二区三区 |