亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

操作系統(tǒng)實戰(zhàn)

developerworks / 2762人閱讀

摘要:操作系統(tǒng)實戰(zhàn)臨界資源保護臨界資源進行通信線程間同步互斥量和讀寫鎖自旋鎖條件變量進程間同步共享內(nèi)存域套接字重要概念用戶態(tài)與內(nèi)核態(tài)上下文切換協(xié)程線程同步之互斥量互斥量鎖可以保證多線程的指令按順序執(zhí)行,避免兩個線程的指令交叉執(zhí)行即原子性原子性是指

操作系統(tǒng)實戰(zhàn) 臨界資源
保護臨界資源/進行通信

線程間同步

互斥量和 讀寫鎖 自旋鎖 條件變量

進程間同步

共享內(nèi)存 域套接字

重要概念

用戶態(tài)與內(nèi)核態(tài)

上下文切換

協(xié)程

線程同步之互斥量

互斥量()可以保證多線程的指令按順序執(zhí)行,避免兩個線程的指令交叉執(zhí)行(即 原子性

原子性是指一系列操作指令不可被中斷執(zhí)行,要么全部執(zhí)行,要么全部沒有執(zhí)行,不存在部分執(zhí)行的情況

互斥量是最簡單的線程同步的方法

互斥量(互斥鎖)是處于兩態(tài)之一的變量: 解鎖加鎖

兩個狀態(tài)可以保證資源訪問的串行

操作系統(tǒng)直接提供了互斥量的API,可使用API完成資源的加鎖,解鎖的操作

pthread_mutex_t
線程同步之自旋鎖

自旋轉(zhuǎn)也是一種多線程同步的變量

使用自旋轉(zhuǎn)的線程會反復(fù)檢查鎖的變量是否可用

自旋轉(zhuǎn)不會讓出CPU,是一種忙等待 的狀態(tài) (死循環(huán)等待鎖被釋放)

自旋鎖避免了進程或線程的**上下文切換**的開銷

操作系統(tǒng)內(nèi)部很多地方使用的是自旋鎖
自旋鎖不適合在單核CPU使用

pthread_spinlock_t
線程同步之讀寫鎖
當(dāng)臨界資源屬于 多讀少寫 的情況,可以采用效率更高的同步方法:讀寫鎖 讀多寫少場景相比互斥量性能提出幾倍

讀寫鎖是一種特殊的 自旋鎖

允許多個讀者同時訪問資源以提高讀性能(讀 不改變臨界資源的值)

對于寫操作則是 互斥 的

pthread_rwlock_t
pthread_relock_rdlock
pthread_rwlock_wrlock
線程同步之條件變量

在生產(chǎn)消費場景中面臨以下情況
1 緩沖區(qū)小于0時,不允許消費者消費,消費者必須等待
2 緩沖區(qū)滿時,不允許生產(chǎn)者往緩沖區(qū)生產(chǎn),生產(chǎn)者必須等待
當(dāng)生產(chǎn)者生產(chǎn)一個產(chǎn)品時,喚醒可能等待的消費者
當(dāng)消費者消費一個產(chǎn)品時,喚醒可能等待的生產(chǎn)者

pthread_cond_t  配合 互斥量(鎖)使用
pthread_cond_wait
pthread_cond_signal

條件變量是一種相對復(fù)雜的線程同步方法

條件變量允許線程睡眠,直到滿足某種條件

當(dāng)滿足條件時,可以向該線程信號,通知喚醒

線程同步方法總結(jié)

1 互斥鎖 最簡單的線程同步方法,會阻塞線程
2 自旋鎖 避免上下文切換的一種線程同步方法,屬性忙等待CPU
3 讀寫鎖 為多讀少寫的資源設(shè)計的線程同步方法,顯著提高性能
4 條件變量 相對復(fù)雜的多線程同步方法,配合互斥量,更靈活的使用場景

使用fork系統(tǒng)調(diào)用創(chuàng)建進程
java python 等語言底層也是通過fork 創(chuàng)建進程

fork系統(tǒng)調(diào)用是用于創(chuàng)建進程的

fork創(chuàng)建的進程初始狀態(tài)與父進程一樣

系統(tǒng)會為fork的進程分配新的資源

fork系統(tǒng)調(diào)用無參數(shù) fork會返回兩次 ,分別是子進程id0

進程同步之共享內(nèi)存

進程的線程共享進程資源,理論上進程之間由于操作系統(tǒng)的進程管理機制(進程-頁表-物理內(nèi)存),進程間的內(nèi)存空間是相互獨立的,(進程默認(rèn)是不能訪問進程空間之外的內(nèi)存空間)但進程可以通過共享內(nèi)存打破這樣的限制

共享存儲允許不相關(guān)的進程訪問同一片物理內(nèi)存

共享存儲是兩個進程之間共享和傳遞數(shù)據(jù)最快的一種方式

共享內(nèi)存未提供同步機制,需要借助其他機制管理訪問

共內(nèi)存是高性能后臺開發(fā)中最常用的進程同步方式
共享內(nèi)存實現(xiàn)流程

1 申請共享內(nèi)存
2 連接到進程空間
3 使用共享內(nèi)存
4 脫離進程空間&刪除

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/76278.html

相關(guān)文章

  • 從小白程序員一路晉升為大廠高級技術(shù)專家我看過哪些書籍?(建議收藏)

    摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術(shù)專家我看過哪些技術(shù)類書籍。 大家好,我是...

    sf_wangchong 評論0 收藏0
  • spring boot - 收藏集 - 掘金

    摘要:引入了新的環(huán)境和概要信息,是一種更揭秘與實戰(zhàn)六消息隊列篇掘金本文,講解如何集成,實現(xiàn)消息隊列。博客地址揭秘與實戰(zhàn)二數(shù)據(jù)緩存篇掘金本文,講解如何集成,實現(xiàn)緩存。 Spring Boot 揭秘與實戰(zhàn)(九) 應(yīng)用監(jiān)控篇 - HTTP 健康監(jiān)控 - 掘金Health 信息是從 ApplicationContext 中所有的 HealthIndicator 的 Bean 中收集的, Spring...

    rollback 評論0 收藏0
  • 實戰(zhàn)Java虛擬機之二“虛擬機的工作模式”

    摘要:今天開始實戰(zhàn)虛擬機之二虛擬機的工作模式??傆嬘袀€系列實戰(zhàn)虛擬機之一堆溢出處理實戰(zhàn)虛擬機之二虛擬機的工作模式實戰(zhàn)虛擬機之三的新生代實戰(zhàn)虛擬機之四禁用實戰(zhàn)虛擬機之五開啟編譯目前的虛擬機支持和兩種運行模式。 今天開始實戰(zhàn)Java虛擬機之二:虛擬機的工作模式。 總計有5個系列實戰(zhàn)Java虛擬機之一堆溢出處理實戰(zhàn)Java虛擬機之二虛擬機的工作模式實戰(zhàn)Java虛擬機之三G1的新生代GC實戰(zhàn)Jav...

    focusj 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<