最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

云晶Cloud:解說(shuō)已有的操作系統(tǒng)(三)

2023-06-28 15:34 作者:云晶Cloud  | 我要投稿

04??操作系統(tǒng)中與編程有關(guān)的基本知識(shí)


進(jìn)程線程的基本概念

  • 并發(fā)和隔離。

  • 程序執(zhí)行的上下文(Context of Execution)

  • 執(zhí)行與調(diào)度的基本單位:thread

  • 資源所有權(quán):process

  • 進(jìn)程是資源的容器,包含(一個(gè)或)多個(gè)線程。內(nèi)核調(diào)度的基本單位是線程(不完全是)、而非進(jìn)程。

  • 同一進(jìn)程下的各個(gè)線程共享資源(address space、open files、signal handlers,etc),但寄存器、棧、PC指針等不共享。

進(jìn)程和線程到底有什么區(qū)別?

以上其實(shí)已經(jīng)說(shuō)了一部分,線程是調(diào)度和執(zhí)行的基本單位,最終代碼都在線程中執(zhí)行。而進(jìn)程是資源的容器,包括一個(gè)或多個(gè)線程。同一個(gè)進(jìn)程下的各個(gè)線程共享資源。

如下圖為區(qū)別:


Linux的線程進(jìn)程概念

Linux的線程是用戶(hù)級(jí)別的,也就是內(nèi)核中不存在線程。

  • 所有的線程管理都在應(yīng)用層去執(zhí)行。

  • 內(nèi)核不關(guān)心,實(shí)際上也覺(jué)察不到線程的存在。

Windows的線程進(jìn)程概念


而從上圖也可以看出,Windows和Linux顯然采用不同的理念。

windows的線程是內(nèi)核級(jí)別的。

  • Windows是這些概念的一個(gè)例子。

  • 內(nèi)核維護(hù)著線程和進(jìn)程的上下文。

  • 調(diào)度實(shí)際上是基于線程而運(yùn)行的。

05??進(jìn)程間的通信

有了線程,進(jìn)程的隔離,就需要線程進(jìn)程之間的通信機(jī)制來(lái)保證協(xié)作完成任務(wù),共享訪問(wèn)數(shù)據(jù)。

Windows進(jìn)程間的通信

  • 文件映射

  • 共享內(nèi)存

  • 匿名管道(單項(xiàng),一端寫(xiě),一端讀)

  • 命名管道。

  • 動(dòng)態(tài)鏈接庫(kù)

  • 遠(yuǎn)程過(guò)程調(diào)用(可以在一臺(tái)機(jī)器內(nèi),也可以跨機(jī)器)

  • UDS(Unix Domain Socket)

  • 基于Windows的消息機(jī)制 ……

Linux進(jìn)程間的通信

  • 管道(Pipe),以及有名管道

  • 信號(hào)(Signal)

  • 報(bào)文(Message)隊(duì)列(消息隊(duì)列)

  • 共享內(nèi)存(效率最高)

  • 信號(hào)量(Semaphore)

  • 主要作用是進(jìn)程間,以及同一進(jìn)程的不同線程之間的同步手段(UDS)Socket套接字

以上Window和Linux雖然采用了不同的方式,概念上有所不同的方式進(jìn)行進(jìn)程間的通信,實(shí)際上,他們的基本原理類(lèi)似。

06??線程間的通信

  • 共享數(shù)據(jù)結(jié)構(gòu)。共享內(nèi)存

  • 事件(Event)傳遞

  • 消息隊(duì)列

  • 郵箱(ucosII)

07??線程同步

線程同步,即當(dāng)有一個(gè)線程在對(duì)內(nèi)存或者外設(shè)進(jìn)行操作時(shí),其他線程都不可以對(duì)這個(gè)內(nèi)存地址或者外設(shè)進(jìn)行操作,直到該線程完成操作,其他線程才可以進(jìn)行操作,而其他線程又處于等待狀態(tài),實(shí)現(xiàn)線程同步的方法有很多,如下。

  • 一般使用信號(hào)量(Semaphore)。

  • 高級(jí)語(yǔ)言如java本身語(yǔ)言的設(shè)計(jì)就為此考慮,如synchronized關(guān)鍵字,wait,notify方法。

  • 可以使用Mutex。

  • 臨界區(qū)對(duì)象。

08??信號(hào)量與互斥鎖

Semaphore(信號(hào)量,或者信號(hào)燈)

以一個(gè)停車(chē)場(chǎng)的運(yùn)作為例。簡(jiǎn)單起見(jiàn),假設(shè)停車(chē)場(chǎng)只有三個(gè)車(chē)位,一開(kāi)始三個(gè)車(chē)位都是空的。

如果同時(shí)來(lái)了五輛車(chē),看門(mén)人允許其中三輛直接進(jìn)入,然后放下車(chē)攔,剩下的車(chē)則必須在入口等待,此后來(lái)的車(chē)也都不得不在入口處等待。

這時(shí),有一輛車(chē)離開(kāi)停車(chē)場(chǎng),看門(mén)人得知后,打開(kāi)車(chē)欄,放入外面的一輛進(jìn)去,如果又離開(kāi)兩輛,則又可以放入兩輛,如此往復(fù)。

在微觀世界里,計(jì)算機(jī)世界里,比如訪問(wèn)硬盤(pán)空間,讀取數(shù)據(jù),往往資源有限??梢钥梢允褂迷摍C(jī)制,進(jìn)行有效的對(duì)資源的訪問(wèn)進(jìn)行協(xié)調(diào)控制。

Mutex(互斥鎖)

一次只能有一個(gè)線程進(jìn)入的特殊信號(hào)量。性能會(huì)比信號(hào)量好。對(duì)于某些特殊的應(yīng)用場(chǎng)景,一次只能有一個(gè)線程訪問(wèn),待該線程退出后,其他線程方可繼續(xù)運(yùn)行。例如操作系統(tǒng)的IO外設(shè),打印機(jī),現(xiàn)實(shí)生活當(dāng)中的公共衛(wèi)生間等等。

云晶Cloud:解說(shuō)已有的操作系統(tǒng)(三)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
南溪县| 钟祥市| 剑阁县| 滨州市| 陵水| 梅河口市| 阜南县| 武穴市| 正蓝旗| 方城县| 蒲城县| 平泉县| 吉水县| 栾川县| 新田县| 余干县| 庆云县| 滨州市| 黄平县| 洛宁县| 日喀则市| 来宾市| 德阳市| 翁源县| 青州市| 高尔夫| 康乐县| 芦山县| 常宁市| 无棣县| 偃师市| 武隆县| 洪洞县| 新邵县| 巴南区| 嵩明县| 连山| 文昌市| 灵武市| 响水县| 竹山县|