欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:java 【多線程】進(jìn)程與線程

柚子快報(bào)邀請(qǐng)碼778899分享:java 【多線程】進(jìn)程與線程

http://yzkb.51969.com/

殺殺殺來都來了,不妨點(diǎn)個(gè)關(guān)注叭! ?博客主頁:歡迎各位大佬!?

文章目錄

1. 操作系統(tǒng)2. 進(jìn)程2.1 進(jìn)程是什么2.2 進(jìn)程管理2.3 進(jìn)程調(diào)度2.3 內(nèi)存管理2.4 進(jìn)程間通信

3. 線程3.1 線程是什么3.2 多線程編程3.3 線程與進(jìn)程聯(lián)系與區(qū)別

1. 操作系統(tǒng)

【概念】是一個(gè)軟件,是一組做計(jì)算機(jī)資源管理的軟件統(tǒng)稱,非常復(fù)雜,所以操作系統(tǒng)本身是一個(gè)很大的話題(這里簡單了解,引入進(jìn)程概念) 【常見的操作系統(tǒng)】 【基本功能】 1)防止硬件被時(shí)空的應(yīng)用程序?yàn)E用 2)向應(yīng)用程序提供簡單一致的機(jī)制來控制復(fù)雜低級(jí)硬件設(shè)備 【對(duì)上】要給軟件提供穩(wěn)定的運(yùn)行環(huán)境 【對(duì)下】要管理好各種硬件設(shè)備 操作系統(tǒng)的功能非常多,其中一個(gè)與我們密切相關(guān)的功能模塊—>進(jìn)程管理 接下來讓我們一起來看看,進(jìn)程是什么吧~~~

2. 進(jìn)程

2.1 進(jìn)程是什么

【進(jìn)程】也稱作任務(wù),一個(gè)運(yùn)行起來的程序,就是進(jìn)程~ 這個(gè).exe是一個(gè)可執(zhí)行文件,即程序,當(dāng)我們雙擊這個(gè)exe,這個(gè)程序微信就運(yùn)行起來,在系統(tǒng)中形成一個(gè)進(jìn)程 即進(jìn)程是操作系統(tǒng)對(duì)一個(gè)正在運(yùn)行的程序的一種抽象,可以把進(jìn)程看做程序的一次運(yùn)行過程 【基本單位】進(jìn)程是操作系統(tǒng)進(jìn)行資源分配的基本單位 (此處涉及到的資源包括不限于內(nèi)存,硬盤,CPU等等) 在任務(wù)管理器中,我們可以看到電腦的進(jìn)程,打開任務(wù)管理器的快捷鍵為Ctrl+Alt+Del,如圖: 通過任務(wù)管理器,我們能看到系統(tǒng)中有如此多的進(jìn)程都在跑著!那么進(jìn)程有如此之多,如何去管理呢~

2.2 進(jìn)程管理

所謂進(jìn)程管理,即進(jìn)程多了才需要管理,分為以下兩步:

1)描述一個(gè)進(jìn)程:使用結(jié)構(gòu)體/類,表示一個(gè)進(jìn)程的信息 2)組織這些進(jìn)程:使用一定的數(shù)據(jù)結(jié)構(gòu),把這些結(jié)構(gòu)體/對(duì)象放到一起

舉一個(gè)生活中常見的栗子叭~ 一個(gè)大型超市,有特別多的商品,超市需要管理這些商品,建立一個(gè)商品信息管理系統(tǒng),需要做: 1)明確每個(gè)商品的相關(guān)信息(價(jià)格、生產(chǎn)日期等) 2)通過一定的數(shù)據(jù)結(jié)構(gòu)將這些商品信息都組織起來(如通過表格等)

2.3 進(jìn)程調(diào)度

【進(jìn)程調(diào)度概念】操作系統(tǒng)對(duì)CPU資源的分配,采用時(shí)間模式,不同的進(jìn)程在不同的時(shí)間段去使用 CPU 資源即為進(jìn)程調(diào)度~ 先來了解進(jìn)程的基本知識(shí)叭~ 在Java中,我們通過類/對(duì)象描述這個(gè)特征,即每一個(gè)PCB對(duì)象代表一個(gè)在運(yùn)行的程序即進(jìn)程 進(jìn)程類—> PCB(process control block)

class PCB {

//屬性1 pid

//屬性2 內(nèi)存指針

//屬性3 文件描述表

//屬性4 進(jìn)程調(diào)度信息

//...

}

操作系統(tǒng)再通過數(shù)據(jù)結(jié)構(gòu)把PCB對(duì)象組織起來,往往使用雙向鏈表來組織PCB對(duì)象,進(jìn)程相當(dāng)于鏈表中的節(jié)點(diǎn),方便管理時(shí)進(jìn)行增刪改查的操作

創(chuàng)建一個(gè)進(jìn)程,即創(chuàng)建一個(gè)鏈表的節(jié)點(diǎn)銷毀一個(gè)進(jìn)程,即把鏈表的節(jié)點(diǎn)刪除遍歷進(jìn)程列表,即遍歷鏈表

PCB中的屬性非常多,在這里枚舉4個(gè)核心的屬性: 1)pid 每個(gè)進(jìn)程需要有一個(gè)唯一的身份標(biāo)識(shí)(如每個(gè)人都有獨(dú)一無二的身份證~~) 2)內(nèi)存指針 當(dāng)前這個(gè)進(jìn)程使用的內(nèi)存是哪一部分(進(jìn)程要跑起來,就需要消耗一定的硬件資源,比如內(nèi)存~進(jìn)程運(yùn)行的時(shí)候,使用哪些內(nèi)存上的資源) 3)文件描述符表 進(jìn)程每次打開一個(gè)文件,就會(huì)產(chǎn)生一個(gè)"文件描述符",標(biāo)識(shí)了這個(gè)被打開的文件,一個(gè)進(jìn)程可能會(huì)打開很多文件,對(duì)應(yīng)一組文件描述符,把這些文件描述符放到一個(gè)順序表這樣的結(jié)構(gòu),構(gòu)成文件描述符表 4)進(jìn)程調(diào)度信息 這一組屬性都是描述和CPU資源相關(guān)的屬性,這些屬性都輔助進(jìn)行進(jìn)程調(diào)度 【預(yù)備知識(shí)】先來了解了解CPU! 我們的程序能運(yùn)行,全靠CPU,每一個(gè)程序相當(dāng)于一組"二進(jìn)制指令"的集合 CPU中的一個(gè)概念:核心數(shù)(在任務(wù)管理器中可以看到我們電腦的核心數(shù)) 這個(gè)表示16核32線程,即CPU里有16個(gè)核心,每個(gè)核心頂兩個(gè)!16個(gè)人可以干32個(gè)人的活~ 但是我們可以看到一個(gè)電腦上可以運(yùn)行很多程序,不止這些,那么計(jì)算機(jī)是如何做的呢~ 【并行】同一時(shí)刻,兩個(gè)核心同時(shí)執(zhí)行兩個(gè)進(jìn)程,此時(shí)這兩個(gè)進(jìn)程就是并行執(zhí)行的(強(qiáng)調(diào)同時(shí)) 【并發(fā)】一個(gè)核心先執(zhí)行進(jìn)程1執(zhí)行一會(huì)后再去執(zhí)行進(jìn)程2…只要這里切換進(jìn)程的速度足夠快,看起來進(jìn)程1和2就是"同時(shí)"進(jìn)行的 所以雖然只有這些核心,但是也可以同時(shí)執(zhí)行很多很多個(gè)任務(wù)啦~ 在計(jì)算機(jī)中,通過并行+并發(fā)的方式來完成的(由操作系統(tǒng)控制,我們感知不到的~)所以很多時(shí)候把并行+并發(fā)統(tǒng)稱為并發(fā)! 【進(jìn)程調(diào)度意義】如上所述,進(jìn)程調(diào)度就是為了解決電腦核心數(shù)是固定的但是電腦有很多程序要運(yùn)行的問題~ A) 進(jìn)程狀態(tài) 簡單認(rèn)為進(jìn)程狀態(tài)主要是這兩個(gè): 【就緒態(tài)】該進(jìn)程已準(zhǔn)備好,隨時(shí)可以上CPU執(zhí)行 【阻塞態(tài)】該進(jìn)程暫時(shí)無法上CPU執(zhí)行 B)進(jìn)程的優(yōu)先級(jí) 進(jìn)程之間的調(diào)度不一定是"公平"的,有的會(huì)優(yōu)先調(diào)度(在現(xiàn)實(shí)生活中,我們也會(huì)將事情根據(jù)重要性排個(gè)序,有的事情就需要優(yōu)先做~) C) 進(jìn)程的上下文 即描述當(dāng)前進(jìn)程執(zhí)行到哪里的"存檔記錄",進(jìn)程在暫時(shí)離開CPU時(shí)把當(dāng)前運(yùn)行的中間結(jié)果進(jìn)行"存檔",等下次進(jìn)程回到CPU執(zhí)行時(shí),恢復(fù)之前的"存檔",從上次的結(jié)果繼續(xù)往后執(zhí)行(即記錄離開結(jié)果,這樣回來時(shí)我可以從離開的地方繼續(xù)執(zhí)行)具體過程如下: D)進(jìn)程的記賬信息 統(tǒng)計(jì)了每個(gè)進(jìn)程在CPU上執(zhí)行多久(這個(gè)可以作為調(diào)度的參考依據(jù)~)

2.3 內(nèi)存管理

操作系統(tǒng)對(duì)內(nèi)存資源的分配,采用空間模式,不同進(jìn)程使用內(nèi)存中的不同區(qū)域,互相之間不會(huì)干擾,相互獨(dú)立的~ 每個(gè)進(jìn)程訪問的內(nèi)存地址并不是真實(shí)的物理內(nèi)存地址,操作系統(tǒng)給進(jìn)程分配的內(nèi)存是以"虛擬地址空間"的方式進(jìn)行分配的~ 【直接訪問物理內(nèi)存地址缺點(diǎn)】如果進(jìn)程1內(nèi)容改變則會(huì)可能會(huì)影響進(jìn)程2的內(nèi)存內(nèi)容 (比如進(jìn)程1數(shù)組下標(biāo)越界、野指針情況等) 【虛擬地址空間優(yōu)點(diǎn)】 【解釋說明】站在進(jìn)程角度,它們的代碼操作的內(nèi)存地址是圖中0x00-0x33這一段,這里訪問的內(nèi)存就會(huì)被操作系統(tǒng)自動(dòng)映射到真實(shí)的物理內(nèi)存上,當(dāng)然進(jìn)程自己是感受不到實(shí)際物理內(nèi)存地址是什么的,如果進(jìn)程1代碼出bug,就沒有什么影響,因?yàn)槿魏我粋€(gè)內(nèi)存操作都需要通過頁表翻譯,如果拿著這個(gè)地址發(fā)現(xiàn)頁表沒有這個(gè)地址,則不會(huì)翻譯,也就不會(huì)修改真正物理內(nèi)存,即不會(huì)對(duì)進(jìn)程2的內(nèi)存數(shù)據(jù)進(jìn)行干擾 1)方便校驗(yàn),當(dāng)前地址是否有效 2)一個(gè)進(jìn)程無法直接影響另一個(gè)進(jìn)程的內(nèi)存內(nèi)容,每個(gè)地址都有自己獨(dú)立的地址空間,具有獨(dú)立性 3)大大提升操作系統(tǒng)的穩(wěn)定性

2.4 進(jìn)程間通信

進(jìn)程是操作系統(tǒng)進(jìn)行資源分配的最小單位,即各個(gè)進(jìn)程互相之間是無法感受到對(duì)方存在的,是相互獨(dú)立的,這樣進(jìn)程之間互相具備"隔離性",但有時(shí)候需要進(jìn)程之間進(jìn)行交互,相互配合~ 【進(jìn)程間通信】即在隔離性前提下,找一個(gè)公共區(qū)域,讓進(jìn)程借助這個(gè)區(qū)域完成數(shù)據(jù)交換 【實(shí)現(xiàn)方式】操作系統(tǒng)提供進(jìn)程間通信具體實(shí)現(xiàn)方式,有很多種,如以下: 1)管道 2)共享內(nèi)存 3)文件 4)信號(hào) 5)消息隊(duì)列 6)網(wǎng)絡(luò) 等等 其中網(wǎng)絡(luò)是一種相對(duì)特殊的 IPC 機(jī)制,支持同主機(jī)也支持同一網(wǎng)絡(luò)內(nèi)部非同一主機(jī),進(jìn)行進(jìn)程間通信

3. 線程

3.1 線程是什么

【線程】是更輕量的進(jìn)程,約定:一個(gè)進(jìn)程中可以包含多個(gè)線程,此時(shí)這多個(gè)線程的每一個(gè)線程都是一個(gè)可以調(diào)度執(zhí)行一個(gè)獨(dú)立的"執(zhí)行流",多個(gè)線程之間也是并發(fā)執(zhí)行(多個(gè)線程可能是在多個(gè)CPU核心同時(shí)運(yùn)行,也可能是在一個(gè)CPU核心上,通過快速調(diào)度進(jìn)行運(yùn)行),同時(shí)這些線程共用同一份進(jìn)程的系統(tǒng)資源 即對(duì)于線程來說,系統(tǒng)資源已經(jīng)分配好,創(chuàng)建線程就省下分配資源開銷,但是創(chuàng)建進(jìn)程則需要系統(tǒng)分配資源,較耗時(shí)~ 【為什么資源分配如此耗時(shí)】 比如系統(tǒng)要給進(jìn)程分配一塊內(nèi)存需要做的以及遇到的情況: 1)系統(tǒng)需遍歷自己的空閑內(nèi)存的表(數(shù)據(jù)結(jié)構(gòu)) 找到差不多的空間,進(jìn)行分配內(nèi)存 2)很多進(jìn)程都在向系統(tǒng)申請(qǐng)資源~但是系統(tǒng)進(jìn)行資源分配時(shí)候,得一個(gè)個(gè)來,很耗時(shí) 【為什么要線程】 (1) 并發(fā)編程能更充分利用多核 CPU 資源,多進(jìn)程編程和多線程編程都滿足并發(fā)編程需求場景(并發(fā)編程即同一時(shí)刻要運(yùn)行多個(gè)任務(wù)) (2) 線程比進(jìn)程更輕量,進(jìn)程創(chuàng)建、銷毀、調(diào)度成本高且速度慢不高效,線程則相反,線程創(chuàng)建、銷毀、調(diào)度成本比進(jìn)程低~(只有在進(jìn)程啟動(dòng),創(chuàng)建第一個(gè)線程的時(shí)候,需花成本去申請(qǐng)系統(tǒng)資源,一旦進(jìn)程創(chuàng)建完畢,后續(xù)再創(chuàng)建的線程,就不需要再申請(qǐng)資源,這樣創(chuàng)建/銷毀的效率大大提高) (3) 在Java中不鼓勵(lì)多進(jìn)程編程,非常鼓勵(lì)多線程編程~

3.2 多線程編程

【意義】解決并發(fā)編程問題 舉個(gè)栗子吧!更加深入理解一下多進(jìn)程和多線程編程~ 比如想加工一大批零件,有兩種做法: 一是再建一個(gè)工廠重新再搭一套機(jī)器(多進(jìn)程) 此時(shí)這兩套機(jī)器可以同時(shí)生產(chǎn),不過這種方式需要再建立一個(gè)工廠,建工廠比較麻煩,成本較高,但這兩個(gè)工廠之間是相互獨(dú)立的,相互不影響~ 二是還在當(dāng)前工廠,引進(jìn)機(jī)器再弄一套生產(chǎn)線(多線程) 這兩套機(jī)器也可以各自獨(dú)立生產(chǎn),是兩個(gè)獨(dú)立的執(zhí)行流,共用同一個(gè)資源工廠,除工廠共用,存儲(chǔ)原料/成品/倉庫/物流運(yùn)輸?shù)鹊?,都能共用,成本降低~ 這兩種方式均提高了工廠的生產(chǎn)效率,進(jìn)程相當(dāng)于工廠,線程相當(dāng)于流水線~ 多進(jìn)程工廠方式,需多建工廠,開銷大,且兩機(jī)器之間看不到對(duì)方進(jìn)度 多線程工廠方式,有兩個(gè)機(jī)器,共用一個(gè)工廠,可以互相了解對(duì)方進(jìn)度 此時(shí)想要生產(chǎn)更多的零件,在工廠內(nèi)弄更多的機(jī)器,以此提高生產(chǎn)效率,但是并不是越多越好,如下圖: 1)一個(gè)工廠的大小提供的空間是固定的即CPU核心數(shù)是固定的,此時(shí)想進(jìn)一步提高機(jī)器的數(shù)量,工廠已經(jīng)沒有空余位置了,機(jī)器只能在工廠外干著急~這時(shí),程序的效率并沒進(jìn)一步提升,可能不僅沒提升,可能還會(huì)下降,因?yàn)檎{(diào)度本身也是有開銷的,調(diào)度上一個(gè)機(jī)器,需要把之前的機(jī)器移出來,再把這個(gè)機(jī)器移進(jìn)去,有開銷,總并發(fā)程度依舊固定 2)機(jī)器是有脾氣的,在這個(gè)調(diào)度來調(diào)度去的過程中,可能很生氣很累,出現(xiàn)異常,如果一個(gè)線程出現(xiàn)異常,可能會(huì)帶走整個(gè)進(jìn)程! 在我們的電腦中: 1)在同一程序中,內(nèi)部需要并發(fā)完成多組任務(wù),此時(shí)使用多線程比較合適(比如微信,可以同時(shí)的視頻,也可以聊天,網(wǎng)絡(luò)傳輸?shù)鹊? 2)多個(gè)程序之間,此時(shí)是多進(jìn)程,進(jìn)程之間具有"隔離性"(比如微信是一個(gè)進(jìn)程,qq是一個(gè)進(jìn)程等等) 所以多進(jìn)程和多線程在電腦中是同時(shí)存在的~不是多線程代替了全部!且多進(jìn)程和多線程都是可以并發(fā)和并行的

3.3 線程與進(jìn)程聯(lián)系與區(qū)別

【聯(lián)系】 進(jìn)程包含線程,一個(gè)進(jìn)程可以有多個(gè)線程 【區(qū)別】

(1) 進(jìn)程有自己獨(dú)立的內(nèi)存空間和文件描述符表,同一進(jìn)程多個(gè)線程之間共享同一份地址空間和文件描述符表 (2) 進(jìn)程是操作系統(tǒng)資源分配的基本單位,線程是操作系統(tǒng)調(diào)度執(zhí)行的基本單位 (3) 進(jìn)程具有獨(dú)立性,一個(gè)進(jìn)程不會(huì)影響另一個(gè)進(jìn)程,但在同一進(jìn)程的多個(gè)線程之間,一個(gè)線程掛了,可能會(huì)把整個(gè)線程帶走,影響其它線程~ (4) 進(jìn)程開銷大,消耗資源多,線程執(zhí)行開銷小,但不利于資源的管理和保護(hù)

???本期內(nèi)容回顧??? ???本期內(nèi)容到此結(jié)束啦~下期再見!

柚子快報(bào)邀請(qǐng)碼778899分享:java 【多線程】進(jìn)程與線程

http://yzkb.51969.com/

推薦文章

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19033218.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄