計(jì)算機(jī)基礎(chǔ)-操作系統(tǒng)提升篇

一,線程,進(jìn)程同步

為什么需要同步


微信截圖_20190818173000.png

1.線程同步

以下都是對資源加鎖

  • 互斥量(互斥鎖)
    邏輯開始加個(gè)鎖,結(jié)束再解鎖,其他進(jìn)程,線程不可以中途執(zhí)行
    操作系統(tǒng)互斥量API:pthread_mutex_t
    缺點(diǎn):性能損耗大,耗時(shí)增加
  • 自旋鎖
    同互斥量原理相似,不同點(diǎn)是不會讓出CPU,不適合單核CPU,會造成等待
    優(yōu)勢,避免了進(jìn)程,線程切換,上下文切換的開銷,提高速度

這里沒有聽懂,再去查查資料

  • 讀寫鎖
    因?yàn)榇嬖诙嘧x少寫類型的資源,為提升效率,讀取操作不上鎖。
    讀寫鎖是一種自旋鎖,只對寫操作之間,讀寫之間,是互斥的。
  • 條件變量
    允許線程睡眠,知道滿足條件,喚醒線程;來處理0和滿載兩個(gè)極端值的情況。

2.進(jìn)程同步

  • 共享內(nèi)存
    正常情況下,每個(gè)進(jìn)程有自己的進(jìn)程空間,通過自己的頁表管理,指向物理內(nèi)存的地址。
    多個(gè)進(jìn)程共用物理內(nèi)存,又相互獨(dú)立。
    共享內(nèi)存就是兩個(gè)進(jìn)程可以使用同一塊物理內(nèi)存


    捕獲.PNG

    捕獲.PNG
  • Unix域套接字(進(jìn)程通信方法)
    類似網(wǎng)絡(luò)變成的套接字(socket)

3.使用fork系統(tǒng)調(diào)用 創(chuàng)建進(jìn)程

fork函數(shù)無參數(shù),創(chuàng)建的子進(jìn)程會擁有和父進(jìn)程一樣的所有狀態(tài)。
調(diào)用一次,返回兩次,為子進(jìn)程的id和0(0是繼承自父進(jìn)程的fork函數(shù)返回的空,id是父進(jìn)程的返回)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容