php中的線程、進程和并發(fā)區(qū)別

      網(wǎng)友投稿 724 2025-04-02

      https://mp.weixin.qq.com/s/Ps5w13TTmpnZx-RPWbsl1A

      進程

      進程是什么?進程是正在執(zhí)行的程序;進程是正在計算機上執(zhí)行的程序?qū)嵗贿M程是能分配給處理器并由處理器執(zhí)行的實體。進程一般會包括指令集和系統(tǒng)資源集,這里的指令集是指程序代碼,這里的系統(tǒng)資源集是指I/O、CPU、內(nèi)存等。綜合起來,我們也可以理解進程是具有一定獨立功能的程序在關(guān)于某個數(shù)據(jù)集合上的一次運行活動,進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。

      在進程執(zhí)行時,進程都可以被唯一的表示,由以下一些元素組成:

      進程描述符:進程的唯一標識符,用來和其它進程區(qū)分。在Linux中叫進程ID,在系統(tǒng)調(diào)用fork期間生成,只是我們通過getpid返回的不是其pid字段,而是其線程組號tgid。

      進程狀態(tài):我們常說的掛起、運行等狀態(tài),其表示的是當前的狀態(tài)。

      php中的線程、進程和并發(fā)區(qū)別

      優(yōu)先級:進程間的執(zhí)行調(diào)度相關(guān),相對于其它進程而言。

      程序計數(shù)器:程序中即將被執(zhí)行的下一條指令的地址,該地址是內(nèi)核術(shù)中或用戶內(nèi)存空間中的內(nèi)存地址。

      內(nèi)存指針:包括程序代碼和進程相關(guān)數(shù)據(jù)的指針,還有和其它進程共享內(nèi)存塊的指針。

      上下文數(shù)據(jù):進程執(zhí)行時處理器的寄存器的數(shù)據(jù)。

      I/O狀態(tài)信息:包括顯式的I/O請求、分配給進程的I/O設(shè)備等

      記賬信息:可能包括處理器時間總和、使用的時鐘數(shù)總和、時間限制等

      以上的這些元素都會放在一個叫做進程控制塊的數(shù)據(jù)結(jié)構(gòu)中。進程控制塊是操作系統(tǒng)能夠支持多進程和提供多處理的結(jié)構(gòu)。當操作系統(tǒng)做進程切換時,它會執(zhí)行兩步操作,一是中斷當前處理器中的進程,二是執(zhí)行下一個進程。不管是中斷還是執(zhí)行,進程控制塊中的程序計數(shù)器、上下文數(shù)據(jù)和進程狀態(tài)都會發(fā)生變化。當進程中斷時,操作系統(tǒng)會把程序計數(shù)器和處理器寄存器(對應(yīng)進程控制塊中的上下文數(shù)據(jù))保存到進程控制塊中的相應(yīng)位置,進程狀態(tài)也會有所變化,可能進入阻塞狀態(tài),也有可能進入就緒態(tài)。當執(zhí)行下一個進程時,操作系統(tǒng)按規(guī)則將下一個進程設(shè)置為運行態(tài),并加載即將要執(zhí)行進程的程序上下文數(shù)據(jù)和程序計數(shù)器等。

      線程

      進程有兩個特性部分:資源所有權(quán)和調(diào)度執(zhí)行。資源所有權(quán)是指進程包括了進程運行所需要的內(nèi)存空間、I/O等資源。調(diào)度執(zhí)行是指進程執(zhí)行過程中間的執(zhí)行路徑,或者說程序的指令執(zhí)行流。這兩個特性部分是可以分開的,分開后,擁有資料所有權(quán)的通常稱為進程,擁有執(zhí)行代碼的可分派部分的被稱之為線程或輕量級進程。

      線程有“執(zhí)行的線索”的意思在里面,而進程在多線程環(huán)境中被定義為資源所有者,其還是會存儲進程的進程控制塊。線程的結(jié)構(gòu)與進程不同,每個線程包括:

      線程狀態(tài): 線程當前的狀態(tài)。

      一個執(zhí)行棧

      私有的數(shù)據(jù)區(qū): 用于每個線程局部變量的靜態(tài)存儲空間

      寄存器集: 存儲處理器的一些狀態(tài)

      每個進程都有一個進程控制塊和用戶地址空間,每個線程都有一個獨立的棧和獨立的控制塊,都有自己一個獨立執(zhí)行上下文。其結(jié)構(gòu)如圖8.1所示。

      線程在執(zhí)行過程中與進程有一些不同。每個獨立的線程有一個程序運行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨立執(zhí)行,必須依存在于進程之中,由進程提供多個線程執(zhí)行控制。從邏輯角度來看,多線程的意義在于一個進程中,有多個執(zhí)行部分可以同時執(zhí)行。此時,進程本身不是基本運行單位,而是線程的容器。

      線程較之進程,其優(yōu)勢在于一個快,不管是創(chuàng)建新的線程還是終止一個線程;不管是線程間的切換還是線程間共享數(shù)據(jù)或通信,其速度與進程相比都有較大的優(yōu)勢。

      并發(fā)及并行

      并發(fā)又稱共行,是指能處理多個同時性活動的能力,并發(fā)事件之間不一定要同一時刻發(fā)生。比如,現(xiàn)代計算機系統(tǒng)可在同一段時間內(nèi)以進程的形式將多個程序加載到存儲器中,并借由處理器的時分復(fù)用,以在一個處理器上表現(xiàn)出同時運行的感覺。

      并行是指同時發(fā)生的兩個并發(fā)事件,具有并發(fā)的含義,而并發(fā)則不一定并行。

      并發(fā)和并行的區(qū)別就是一個處理器同時處理多個任務(wù)和多個處理器或者是多核的處理器同時處理多個不同的任務(wù)。前者是邏輯上的同時發(fā)生(simultaneous),而后者是物理上的同時發(fā)生。

      參考資料

      《操作系統(tǒng)精髓與設(shè)計原理》

      PHP 任務(wù)調(diào)度

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:統(tǒng)計報表模板大全(統(tǒng)計數(shù)據(jù)報告模板)
      下一篇:JAVA--線程
      相關(guān)文章
      亚洲日本国产综合高清| 亚洲冬月枫中文字幕在线看| 亚洲视频一区二区在线观看| 亚洲精品午夜无码电影网| 亚洲国产成人精品女人久久久| 亚洲无人区视频大全| 亚洲激情校园春色| 91精品国产亚洲爽啪在线观看| 老司机亚洲精品影院无码| 久久精品国产亚洲av麻豆小说| 久久精品国产亚洲av麻| 亚洲一区二区影院| 亚洲精品在线免费观看| 亚洲老熟女@TubeumTV| 亚洲理论精品午夜电影| 亚洲国产成+人+综合| 国产精品亚洲四区在线观看| 亚洲中文字幕一二三四区苍井空| 亚洲国产熟亚洲女视频| 亚洲午夜精品一区二区麻豆| 亚洲综合色婷婷在线观看| 亚洲精华国产精华精华液| 亚洲第一第二第三第四第五第六| 亚洲AV无码专区国产乱码不卡| 亚洲AV永久无码精品放毛片| 99亚洲精品卡2卡三卡4卡2卡| 一本色道久久88综合亚洲精品高清| 亚洲Av无码乱码在线观看性色| 亚洲伊人成无码综合网| 国产gv天堂亚洲国产gv刚刚碰 | 日韩精品亚洲aⅴ在线影院| 国产亚洲欧洲Aⅴ综合一区| 久久亚洲高清观看| 91亚洲导航深夜福利| 亚洲av无码一区二区三区天堂古代| 国产精品高清视亚洲一区二区| 亚洲AV无码XXX麻豆艾秋| 亚洲国产人成中文幕一级二级| 亚洲色偷拍另类无码专区| 亚洲∧v久久久无码精品| 亚洲欧洲日本精品|