一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

總結(jié)進(jìn)程、線程、進(jìn)程池、同步、異步、并發(fā)、并行、串行

STM32嵌入式開發(fā) ? 來(lái)源:Shawn派大星 ? 2023-02-09 14:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

進(jìn)程、線程

什么是進(jìn)程?

開發(fā)寫的代碼我們稱為程序,那么將開發(fā)的代碼運(yùn)行起來(lái)。我們稱為進(jìn)程。

明白點(diǎn): 當(dāng)我們運(yùn)行一個(gè)程序,那么我們將運(yùn)行的程序叫進(jìn)程。

精簡(jiǎn)重點(diǎn)

進(jìn)程是申請(qǐng)一塊內(nèi)存空間,將數(shù)據(jù)放到內(nèi)存空間中去,是申請(qǐng)數(shù)據(jù)的過(guò)程是最小的資源管理單元

進(jìn)程是線程的容器

程序與進(jìn)程的區(qū)別

程序是數(shù)據(jù)和指令的集合, 是一個(gè)靜態(tài)的概念, 就是一堆代碼, 可以長(zhǎng)時(shí)間的保存在系統(tǒng)中

進(jìn)程是程序運(yùn)行的過(guò)程, 是一個(gè)動(dòng)態(tài)的概念, 進(jìn)程存在著生命周期, 也就是說(shuō)進(jìn)程會(huì)隨著程序的終止而銷毀, 不會(huì)永久存在系統(tǒng)中

進(jìn)程之間交互

進(jìn)程之間通過(guò) TCP/IP 端口實(shí)現(xiàn)

什么是線程

線程是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。

它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。

一條線程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù)。

精簡(jiǎn)重點(diǎn)

是進(jìn)程的一條流水線,只用來(lái)執(zhí)行程序,而不涉及到申請(qǐng)資源,是程序的實(shí)際執(zhí)行者最小的執(zhí)行單元

線程之間交互

多個(gè)線程共享同一塊內(nèi)存,通過(guò)共享的內(nèi)存空間來(lái)進(jìn)行交互

進(jìn)程與線程的關(guān)系

例子:

我們打開一個(gè)聊天軟件,這就是開啟了一個(gè)進(jìn)程;當(dāng)我們?cè)谲浖锩娲蜷_一些功能,比如空間, 掃一掃, 設(shè)置...,這些操作就是線程 所以可以說(shuō)"進(jìn)程"包含"線程","線程"是"進(jìn)程"的子集

進(jìn)程是線程的容器

工廠流水線例子:

fc954d02-a831-11ed-bfe3-dac502259ad0.png

fca5c1dc-a831-11ed-bfe3-dac502259ad0.png

進(jìn)程:指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序;程序一旦運(yùn)行就是進(jìn)程;進(jìn)程——資源分配的最小單位。

線程:系統(tǒng)分配處理器時(shí)間資源的基本單元,或者說(shuō)進(jìn)程之內(nèi)獨(dú)立執(zhí)行的一個(gè)單元執(zhí)行流。線程——程序執(zhí)行的最小單位。

進(jìn)程要分配一大部分的內(nèi)存,而線程只需要分配一部分棧就可以了.

一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程.

一個(gè)線程可以創(chuàng)建和撤銷另一個(gè)線程,同一個(gè)進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行.

并行、并發(fā)、串行

并發(fā): 多個(gè)任務(wù)看起來(lái)是同時(shí)進(jìn)行, 這是一種假并行

單核下使用多道技術(shù)實(shí)現(xiàn)

fcc90db8-a831-11ed-bfe3-dac502259ad0.png

并行: 多個(gè)任務(wù)同時(shí)進(jìn)行

并行必須有多核才能實(shí)現(xiàn),否則只能實(shí)現(xiàn)并發(fā)(偽并行)。

fce11fd4-a831-11ed-bfe3-dac502259ad0.png

串行: 一個(gè)程序完完整整的運(yùn)行完,再運(yùn)行下一個(gè)進(jìn)程

fcfce14c-a831-11ed-bfe3-dac502259ad0.png

任務(wù)運(yùn)行的三種狀態(tài)

進(jìn)程在運(yùn)行的過(guò)程中不斷地改變其運(yùn)行狀態(tài)。 通常一個(gè)運(yùn)行的進(jìn)程必須具有三種狀態(tài):就緒態(tài),運(yùn)行態(tài),阻塞態(tài)。

就緒態(tài) (Ready)

當(dāng)進(jìn)程已分配到除CPU以外的所有必要的資源后,只要再獲得CPU, 便可執(zhí)行程序, 進(jìn)程這時(shí)的狀態(tài)就稱為就緒態(tài),

在一個(gè)系統(tǒng)中處于就緒態(tài)的進(jìn)程可能有多個(gè), 通常將他們排成一個(gè)隊(duì)列, 這就叫就緒隊(duì)列

運(yùn)行態(tài) (Running)

當(dāng)進(jìn)程已經(jīng)獲得CPU操作權(quán)限, 其程序正在運(yùn)行, 著就叫做運(yùn)行態(tài)

在單核操作系統(tǒng)中, 只有一個(gè)進(jìn)程處于運(yùn)行態(tài), 多核操作系統(tǒng)有多個(gè)進(jìn)程處于運(yùn)行態(tài)

阻塞態(tài) (Blocked)(sleep)

正在執(zhí)行的進(jìn)程, 由于等待某個(gè)事件而無(wú)法執(zhí)行時(shí), 便被操作系統(tǒng)剝奪了cpu的操作時(shí)間, 這是就是阻塞態(tài)

引起阻塞的原因多種, 例如: 等待I/O操作, 更高優(yōu)先級(jí)的任務(wù)搶走了CPU權(quán)限等.

進(jìn)程三種狀態(tài) 間的轉(zhuǎn)換

一個(gè)進(jìn)程在運(yùn)行期間,會(huì)不斷地在一種狀態(tài)切換到另一只種狀態(tài) 他可以是多次處于就緒態(tài)和運(yùn)行態(tài),也可以多次處于阻塞態(tài),下圖是三種狀態(tài)的轉(zhuǎn)換圖

fd2186dc-a831-11ed-bfe3-dac502259ad0.png

就緒態(tài)??運(yùn)行態(tài)

處于就緒態(tài)的進(jìn)程,當(dāng)進(jìn)程調(diào)度程序?yàn)橹峙淞薈PU的時(shí)間片后,該進(jìn)程就會(huì)由就緒態(tài)轉(zhuǎn)變成運(yùn)行態(tài)

運(yùn)行態(tài)??就緒態(tài)

處于運(yùn)行態(tài)的進(jìn)程在運(yùn)行過(guò)程中,因?yàn)榉峙涞臅r(shí)間片用完了,于是失去了CPU的使用權(quán)限,運(yùn)行態(tài)就會(huì)重新轉(zhuǎn)為就緒態(tài)

運(yùn)行態(tài)??阻塞態(tài)

正在運(yùn)行的進(jìn)程由于遇到I/O操作或被更高優(yōu)先級(jí)的任務(wù)搶走CPU使用權(quán)限而無(wú)法繼續(xù)執(zhí)行,便從運(yùn)行態(tài)轉(zhuǎn)為阻塞態(tài)

阻塞態(tài)??就緒態(tài)

處于阻塞態(tài)的進(jìn)程,若其等待的事情已經(jīng)處理完畢,于是進(jìn)程從阻塞態(tài)轉(zhuǎn)為就緒態(tài)

任務(wù)提交的兩種方式

同步

同步是指發(fā)送方發(fā)送數(shù)據(jù)后, 等接收方發(fā)回響應(yīng)后才發(fā)下一個(gè)數(shù)據(jù)報(bào)的通訊方式

同步是指兩個(gè)程序的運(yùn)行是相關(guān)的, 其中一個(gè)線程在阻塞需要等待狀態(tài), 那另一個(gè)線程才運(yùn)行

異步

異步是指發(fā)送方發(fā)出數(shù)據(jù)后, 不等接收方發(fā)回響應(yīng), 接著就發(fā)下個(gè)數(shù)據(jù)報(bào)的通訊方式

異步是指兩個(gè)線程毫無(wú)相關(guān), 自己運(yùn)行自己的

例子

同步:

你叫我去吃飯,我聽到了就立即和你去吃飯,如果沒(méi)有聽到,你就不停的叫,直到我告訴你聽到了,才一起去吃飯 打電話好比同步,兩邊是同時(shí)進(jìn)行不能再打給另一個(gè)人

異步:

你叫我去吃飯,然后自己去吃飯了,我得到消息后可能立即走,也可能過(guò)會(huì)兒走 發(fā)消息好比異步,和一個(gè)人發(fā)完消息就可能和另一個(gè)人發(fā)消息

進(jìn)程池

什么是進(jìn)程池?

進(jìn)程池是資源進(jìn)程,管理進(jìn)程組成的技術(shù)的應(yīng)用.

為什么要有進(jìn)程池?

忙時(shí)會(huì)有成千上萬(wàn)的任務(wù)需要被執(zhí)行,閑時(shí)可能只有零星任務(wù)。 那么在成千上萬(wàn)個(gè)任務(wù)需要被執(zhí)行的時(shí)候,我們就需要去創(chuàng)建成千上萬(wàn)個(gè)進(jìn)程么? 首先,創(chuàng)建進(jìn)程需要消耗時(shí)間,銷毀進(jìn)程也需要消耗時(shí)間。 第二即便開啟了成千上萬(wàn)的進(jìn)程,操作系統(tǒng)也不能讓他們同時(shí)執(zhí)行,這樣反而會(huì)影響程序的效率。 因此我們不能無(wú)限制的根據(jù)任務(wù)去開啟或者結(jié)束進(jìn)程。那么我們要怎么做呢?

進(jìn)程池的概念

定義一個(gè)池子,在里面放上固定數(shù)量的進(jìn)程,有需求來(lái)了,就拿一個(gè)池中的進(jìn)程來(lái)處理任務(wù)

等到處理完畢,進(jìn)程并不關(guān)閉,而是將進(jìn)程再放回進(jìn)程池中繼續(xù)等待任務(wù)

如果有很多任務(wù)需要執(zhí)行,池中的進(jìn)程數(shù)量不夠,任務(wù)就要等待之前的進(jìn)程執(zhí)行任務(wù)完畢歸來(lái),拿到空閑進(jìn)程才能繼續(xù)執(zhí)行。

也就是說(shuō),進(jìn)池中進(jìn)程的數(shù)量是固定的,那么同一時(shí)間最多有固定數(shù)量的進(jìn)程在運(yùn)行

這樣不會(huì)增加操作系統(tǒng)的調(diào)度難度,還節(jié)省了開關(guān)進(jìn)程的時(shí)間,也一定程度上能夠?qū)崿F(xiàn)并發(fā)效果。

資源進(jìn)程

預(yù)先創(chuàng)建好的空閑進(jìn)程,管理進(jìn)程(好比池子)會(huì)把工作分發(fā)到空閑進(jìn)程來(lái)處理。

管理進(jìn)程

管理進(jìn)程負(fù)責(zé)創(chuàng)建資源進(jìn)程,把工作交給空閑資源進(jìn)程處理,回收已經(jīng)處理完工作的資源進(jìn)程。

資源進(jìn)程與管理進(jìn)程的交互

管理進(jìn)程如何有效的管理資源進(jìn)程,分配任務(wù)給資源進(jìn)程? 通過(guò)IPC,信號(hào),信號(hào)量,消息隊(duì)列,管道等進(jìn)行交互。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎ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)注

    0

    文章

    237

    瀏覽量

    34498
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    508

    瀏覽量

    20205
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    207

    瀏覽量

    14277

原文標(biāo)題:總結(jié)進(jìn)程、線程、進(jìn)程池、同步、異步、并發(fā)、并行、串行

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    進(jìn)程線程的區(qū)別

    是資源分配和擁有的單位,同一個(gè)進(jìn)程內(nèi)的線程共享進(jìn)程的資源(3)線程是處理器調(diào)度的基本單位,但進(jìn)程不是.4)二者均可
    發(fā)表于 12-12 09:28

    進(jìn)程線程區(qū)別

    工人都可以進(jìn)出的。這象征一個(gè)進(jìn)程的內(nèi)存空間是共享的,每個(gè)線程都可以使用這些共享內(nèi)存。進(jìn)程線程是操作系統(tǒng)的兩種不同軟件技術(shù),目的是實(shí)現(xiàn)宏觀上的并行
    發(fā)表于 11-30 14:06

    線程、進(jìn)程、程序的區(qū)別

    分配資源的基本單位,而把線程作為獨(dú)立運(yùn)行和獨(dú)立調(diào)度的基本單位。由于線程進(jìn)程更小,基本上不擁有系統(tǒng)資源,故對(duì)它的調(diào)度所付出的開銷就會(huì)小得多,能更高效的提高系統(tǒng)內(nèi)多個(gè)程序間并發(fā)執(zhí)行的程度
    發(fā)表于 03-23 13:09

    進(jìn)程線程的區(qū)別和聯(lián)系介紹

    發(fā)生了變化:它只是資源分配的單位,而不再是調(diào)度運(yùn)行的單位 。在微內(nèi)核系統(tǒng)中,真正調(diào)度運(yùn)行的基本單位是線程。因此,實(shí)現(xiàn)并發(fā)功能的單位是線程。 線程概念   
    發(fā)表于 07-04 00:18

    Linux系統(tǒng)進(jìn)程的知識(shí)總結(jié)

    對(duì)象(CMutex)、信號(hào)量對(duì)象(CS emaphore)和事件對(duì)象(CEvent)。在這些對(duì)象中,臨界區(qū)對(duì)象使用起來(lái)最簡(jiǎn)單,它的缺點(diǎn)是只能同步同一個(gè)進(jìn)程中的線程。另外,還有一種基本的方法,本文稱為
    發(fā)表于 09-06 12:00

    進(jìn)程互斥、同步概念

    進(jìn)程同步與通信,進(jìn)程線程同步的區(qū)別,進(jìn)程線程
    發(fā)表于 06-05 06:24

    Java進(jìn)程線程

    Windows等操作系統(tǒng)均支持多線程進(jìn)程并發(fā)處理機(jī)制。操作系統(tǒng)支持多線程,使多個(gè)程序能夠并發(fā)執(zhí)行,以改善資源使用率和提高系統(tǒng)效率;操作系統(tǒng)
    發(fā)表于 07-31 15:10

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

    我對(duì)于線程,進(jìn)程的概念一直都是比較模糊,最近整理了一下。總結(jié)起來(lái)就是,線程進(jìn)程的一部分,進(jìn)程
    發(fā)表于 08-05 08:17

    如何使用多線程異步操作等并發(fā)設(shè)計(jì)方法來(lái)最大化程序的性能

    的DMA操作?! ?b class='flag-5'>線程的本質(zhì)  線程不是一個(gè)計(jì)算機(jī)硬件的功能,而是操作系統(tǒng)提供的一種邏輯功能,線程本質(zhì)上是進(jìn)程中一段并發(fā)運(yùn)行的代碼,所以
    發(fā)表于 08-23 16:31

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

    (英語(yǔ):thread,***譯為運(yùn)行緒),操作系統(tǒng)技術(shù)中的術(shù)語(yǔ),是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包涵在進(jìn)程之中,一條線程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以
    發(fā)表于 04-02 14:49 ?860次閱讀

    進(jìn)程線程定義

    線程是CPU調(diào)度的最小單位(程序執(zhí)行流的最小單元),它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單元。一條線程進(jìn)程中一個(gè)單一順序的控制流,一個(gè)
    的頭像 發(fā)表于 11-20 10:23 ?2911次閱讀

    線程進(jìn)程的關(guān)系與區(qū)別

    線程是CPU調(diào)度的最小單位(程序執(zhí)行流的最小單元),它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單元。一條線程進(jìn)程中一個(gè)單一順序的控制流,一個(gè)
    的頭像 發(fā)表于 11-29 11:01 ?1.4w次閱讀

    Linux下線程進(jìn)程的區(qū)別

    線程(英語(yǔ):thread)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。一條線程指的是進(jìn)程中一個(gè)單一順序
    的頭像 發(fā)表于 08-24 15:37 ?2177次閱讀
    Linux下<b class='flag-5'>線程</b>與<b class='flag-5'>進(jìn)程</b>的區(qū)別

    mcu線程進(jìn)程的區(qū)別是什么

    MCU線程進(jìn)程是嵌入式系統(tǒng)中常見的并行執(zhí)行的概念,它們之間有許多區(qū)別,包括線程進(jìn)程的定義、資源管理、通信機(jī)制、執(zhí)行方式等等。下面將詳細(xì)介
    的頭像 發(fā)表于 01-04 10:45 ?1201次閱讀

    Python中多線程和多進(jìn)程的區(qū)別

    Python作為一種高級(jí)編程語(yǔ)言,提供了多種并發(fā)編程的方式,其中多線程與多進(jìn)程是最常見的兩種方式之一。在本文中,我們將探討Python中多線程與多進(jìn)
    的頭像 發(fā)表于 10-23 11:48 ?1012次閱讀
    Python中多<b class='flag-5'>線程</b>和多<b class='flag-5'>進(jìn)程</b>的區(qū)別