色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

Linux系統(tǒng)開發(fā)中進(jìn)程與線程的基本原理

嵌入式開發(fā)愛好者 ? 來源:嵌入式開發(fā)愛好者 ? 2023-01-04 09:41 ? 次閱讀

一進(jìn)程, 線程

1.進(jìn)程

什么是進(jìn)程?

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

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

精簡重點(diǎn)

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

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

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

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

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

進(jìn)程之間交互

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

2.線程

什么是線程

線程是操作系統(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ù)。

精簡重點(diǎn)

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

線程之間交互

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

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

例子:

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

所以可以說"進(jìn)程"包含"線程","線程"是"進(jìn)程"的子集

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

工廠流水線例子:

9e065868-8b93-11ed-bfe3-dac502259ad0.png

9e3b1116-8b93-11ed-bfe3-dac502259ad0.png

4.總結(jié)

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

線程:系統(tǒng)分配處理器時(shí)間資源的基本單元,或者說進(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ù)看起來是同時(shí)進(jìn)行, 這是一種假并行

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

9e495bcc-8b93-11ed-bfe3-dac502259ad0.png

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

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

9e7c4582-8b93-11ed-bfe3-dac502259ad0.png

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

9ea86162-8b93-11ed-bfe3-dac502259ad0.png

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

進(jìn)程在運(yùn)行的過程中不斷地改變其運(yùn)行狀態(tài)

通常一個(gè)運(yùn)行的進(jìn)程必須具有三種狀態(tài):就緒態(tài),運(yùn)行態(tài),阻塞態(tài)

1.就緒態(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ì)列

2.運(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)

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

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

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

4.進(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)換圖

9eb56f4c-8b93-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)行過程中,因?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)限而無法繼續(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ù)提交的兩種方式

1.同步

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

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

2.異步

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

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

3.例子

同步

?你叫我去吃飯,我聽到了就立即和你去吃飯,如果沒有聽到,你就不停的叫,直到我告訴你聽到了,才一起去吃飯

?打電話好比同步,兩邊是同時(shí)進(jìn)行不能再打給另一個(gè)人

異步

?你叫我去吃飯,然后自己去吃飯了,我得到消息后可能立即走,也可能過會(huì)兒走

?發(fā)消息好比異步,和一個(gè)人發(fā)完消息就可能和另一個(gè)人發(fā)消息

五.進(jìn)程池

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

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

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

忙時(shí)會(huì)有成千上萬的任務(wù)需要被執(zhí)行,閑時(shí)可能只有零星任務(wù)。

那么在成千上萬個(gè)任務(wù)需要被執(zhí)行的時(shí)候,我們就需要去創(chuàng)建成千上萬個(gè)進(jìn)程么?

首先,創(chuàng)建進(jìn)程需要消耗時(shí)間,銷毀進(jìn)程也需要消耗時(shí)間。

第二即便開啟了成千上萬的進(jìn)程,操作系統(tǒng)也不能讓他們同時(shí)執(zhí)行,這樣反而會(huì)影響程序的效率。

因此我們不能無限制的根據(jù)任務(wù)去開啟或者結(jié)束進(jìn)程。那么我們要怎么做呢?

3.進(jìn)程池的概念

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

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

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

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

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

4.資源進(jìn)程

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

5.管理進(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)程?

通過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ī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11294

    瀏覽量

    209344
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4780

    瀏覽量

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

    關(guān)注

    0

    文章

    504

    瀏覽量

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

    關(guān)注

    0

    文章

    203

    瀏覽量

    13960

原文標(biāo)題:Linux系統(tǒng)開發(fā)中進(jìn)程與線程的基本原理

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux中進(jìn)程線程的深度對(duì)比

    關(guān)于進(jìn)程線程,在 Linux 中是一對(duì)兒很核心的概念。但是進(jìn)程線程到底有啥聯(lián)系,又有啥區(qū)別,很多人還都沒有搞清楚。
    發(fā)表于 10-14 16:47 ?1305次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>中進(jìn)程</b>和<b class='flag-5'>線程</b>的深度對(duì)比

    Linux系統(tǒng)開發(fā)環(huán)境搭建

    今天給大家講一講Linux系統(tǒng)開發(fā)環(huán)境搭建。
    發(fā)表于 07-12 14:51 ?1010次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)開發(fā)</b>環(huán)境搭建

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

    上看起來并行執(zhí)行的效果)。進(jìn)程線程在實(shí)現(xiàn)并行效果的原理上不同。而且這個(gè)差異和操作系統(tǒng)有關(guān)。譬如windows中進(jìn)程線程差異比較大,在
    發(fā)表于 11-30 14:06

    Linux系統(tǒng)中進(jìn)程線程之間的關(guān)系

    我們先打個(gè)比方,多線程是十字路口多線程是平面交通系統(tǒng),造價(jià)低,但是紅綠燈多,老堵車,而多進(jìn)程是則是立交橋,雖然造價(jià)高,上下坡多耗油,但是不堵車。這是一個(gè)抽象的概念。相信大家看完會(huì)有這種
    發(fā)表于 09-07 15:48

    ARM嵌入式Linux系統(tǒng)開發(fā)詳解

    Linux技術(shù)的*發(fā)展,全部采用當(dāng)前最流行和穩(wěn)定的Linux發(fā)行版或者相關(guān)工具,是Linux愛好者學(xué)習(xí)Linux的好幫手。《Linux典藏
    發(fā)表于 09-14 08:57

    初學(xué)者嵌入式linux系統(tǒng)的學(xué)習(xí)步驟

    嵌入式Linux應(yīng)用軟件開發(fā)流程熟悉嵌入式系統(tǒng)概念以及開發(fā)流程 建立嵌入式系統(tǒng)開發(fā)環(huán)境制作cross_gcc工具鏈 編譯并下載U-boot
    發(fā)表于 01-18 10:34

    Linux系統(tǒng)中進(jìn)程如何查看及控制

    Linux系統(tǒng)中進(jìn)程的查看及控制
    發(fā)表于 06-09 08:34

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

    Linux進(jìn)程線程的區(qū)別是什么為什么要使用線程線程操作的函數(shù)
    發(fā)表于 03-11 06:13

    嵌入式系統(tǒng)開發(fā)工具有哪些

    嵌入式系統(tǒng)開發(fā)上期回顧嵌入式系統(tǒng)開發(fā)工具(一)文件編程Linux文件(二)進(jìn)程線程編程(三)TCP/UDP上期回顧嵌入式
    發(fā)表于 12-22 06:37

    LINUX系統(tǒng)下多線程與多進(jìn)程性能分析

    采用多進(jìn)程處理多個(gè)任務(wù),會(huì)占用很多系統(tǒng)資源(主要是CPU 和內(nèi)存的使用)。在LINUX 中,則對(duì)這種弊端進(jìn)行了改進(jìn),在用戶態(tài)實(shí)現(xiàn)了多線程處理多任務(wù)。本文
    發(fā)表于 08-13 08:31 ?20次下載

    Linux源碼分析系列的進(jìn)程

    概述:相關(guān)概念,進(jìn)程在整個(gè)內(nèi)核中的功能位置,源代碼中進(jìn)程相關(guān)的文件源代碼中進(jìn)程相關(guān)的文件。 Linux核心是多任務(wù)的,運(yùn)行的程序稱作進(jìn)程 (
    發(fā)表于 11-03 22:26 ?32次下載

    虛擬機(jī):linux 進(jìn)程的最大線程個(gè)數(shù)

    虛擬機(jī):linux 進(jìn)程的最大線程個(gè)數(shù)
    的頭像 發(fā)表于 06-22 15:56 ?2742次閱讀
    虛擬機(jī):<b class='flag-5'>linux</b> <b class='flag-5'>進(jìn)程</b>的最大<b class='flag-5'>線程</b>個(gè)數(shù)

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

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

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

    進(jìn)程的內(nèi)存空間和系統(tǒng)資源。線程是調(diào)度的基本單位。 2、進(jìn)程的創(chuàng)建和銷毀 在Linux中啟動(dòng)一個(gè)進(jìn)程
    的頭像 發(fā)表于 06-22 11:39 ?667次閱讀
    程序<b class='flag-5'>中進(jìn)程</b>和<b class='flag-5'>線程</b>的區(qū)別

    Linux中進(jìn)程線程和協(xié)程的基礎(chǔ)概念

    進(jìn)程是計(jì)算機(jī)中運(yùn)行的程序的實(shí)例,它是操作系統(tǒng)中最基本的執(zhí)行單元之一。每個(gè)進(jìn)程都有自己的獨(dú)立內(nèi)存空間、系統(tǒng)資源和代碼執(zhí)行流。這意味著一個(gè)進(jìn)程
    的頭像 發(fā)表于 12-06 09:22 ?853次閱讀
    主站蜘蛛池模板: 出轨的妻子在线观看| 九热这里只有精品| 秋霞电影院兔费理论观频84mb| 99热最新在线| 偷拍自偷拍亚洲精品| 激情丛林电影完整在线| 中文无码第3页不卡av| 嫩草电影网嫩草影院| 国产v综合v亚洲欧美大片| 亚洲一区在线视频观看| 欧美video巨大粗暴18| 国产成人精品系列在线观看| 一区二区三区高清视频| 欧美在线看欧美视频免费| 古风H啪肉NP文| 在线观看免费国产成人软件| 日本亚洲精品无码区国产电影| 加勒比一本之道高清视频在线观看| 99在线精品国自产拍不卡| 脱女学小内内摸出水网站免费 | 99精品免费观看| 小xav导航| 暖暖视频免费观看视频| 国产自啪偷啪视频在线| jj插入bb| 中文在线中文资源| 性直播免费| 人人草人人草| 老湿影院色情a| 国产亚洲精品A久久777777| 白人大战34厘米黑人BD| 在线观看国产精美视频| 午夜AV内射一区二区三区红桃视 | 99久久国产综合精品| 亚洲国产成人精品久久久久 | 日产亚洲一区二区三区| 久久这里只有精品国产99| 国产精人妻无码一区麻豆| 爱穿丝袜的麻麻3d漫画acg| 在线免费国产| 亚洲视频国产|