成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

一篇讓你明白進(jìn)程與線程之間的區(qū)別與聯(lián)系

lbool / 897人閱讀

摘要:線程程序執(zhí)行的最小單位。一個(gè)線程可以創(chuàng)建和撤銷另一個(gè)線程,同一個(gè)進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行文末本章節(jié)介紹了進(jìn)程與線程之間的區(qū)別與聯(lián)系,以及其他方面的小知識點(diǎn),也是面試過程中會出現(xiàn)的內(nèi)容點(diǎn)。

前言
歡迎關(guān)注公眾號:Coder編程
獲取最新原創(chuàng)技術(shù)文章和相關(guān)免費(fèi)學(xué)習(xí)資料,隨時(shí)隨地學(xué)習(xí)技術(shù)知識!

本章主要介紹進(jìn)程與線程的區(qū)別與聯(lián)系相關(guān)知識點(diǎn),也是我們面試過程中,經(jīng)常會問到的了一個(gè)問題。希望通過這篇文章,能讓大家理解相關(guān)知識點(diǎn)~

涉及面試題:

1.進(jìn)程與線程之間有什么區(qū)別?

2.進(jìn)程、線程都各有什么特點(diǎn)?

3.進(jìn)程之間的是怎么進(jìn)行交互的呢?

4.什么是緩沖區(qū)溢出?

5.進(jìn)程之間如何進(jìn)行交互?

6.線程之間如何進(jìn)行交互?

上面的面試題可以看出,其實(shí)都是一回事,只是換了一種提問方式,只要我們能掌握核心要點(diǎn),隨便面試官怎么提問,我們都能輕松應(yīng)對!
1. 小栗子:
我們生活中有許許多多關(guān)于進(jìn)程與線程的小栗子,比如:1.我們使用打開一個(gè)微信軟件,這個(gè)時(shí)候就開啟了一個(gè)進(jìn)程,
當(dāng)我們在微信里面進(jìn)行各種操作(查看朋友圈,掃一掃...),這么多的操作就是線程。
所以我們可以說“進(jìn)程”是包含“線程”的,“線程”是“進(jìn)程”的一個(gè)子集。
來源百度百科:

進(jìn)程(Process) 是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。 在當(dāng)代面向線程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是線程的容器。程序是指令、數(shù)據(jù)及其組織形式的描述,進(jìn)程是程序的實(shí)體。是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。程序是指令、數(shù)據(jù)及其組織形式的描述,進(jìn)程是程序的實(shí)體。

線程(thread)是操作系統(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é)下:

進(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í)行的最小單位。

2. 深入理解:

2.1 進(jìn)程(線程+內(nèi)存+文件/網(wǎng)絡(luò)句柄)

我們通過上面的圖片進(jìn)行進(jìn)一步理解:

“內(nèi)存”:
我們通常所理解的內(nèi)存是我們所見到的(2G/4G/8G/16G)物理內(nèi)存,它為什么會在進(jìn)程之中呢?
實(shí)際上,這里的內(nèi)存是邏輯內(nèi)存。指的是內(nèi)存的尋址空間。每個(gè)進(jìn)程的內(nèi)存是相互獨(dú)立的。
否則的話會出現(xiàn)一個(gè)問題:我們把指針的值改一改就指向其他進(jìn)程的內(nèi)存了,通過這樣我們豈不是就可以看到其他進(jìn)程中"微信"或者是"網(wǎng)上銀行"的信息,
這樣的話,那我們的微信聊天記錄或者是銀行賬戶的信息就都被別人找到了,這是一個(gè)很危險(xiǎn)的信號!顯然這樣是不可能的。

“文件/網(wǎng)絡(luò)句柄”:
它們是所有的進(jìn)程所共有的,例如打開同一個(gè)文件,去搶同一個(gè)網(wǎng)絡(luò)的端口這樣的操作是被允許的。

“線程”:
接下來,我們就要介紹一下我們的“線程”有關(guān)知識

2.2 線程(棧+PC+TLS) 2.2.1 棧:

我們通常都是說調(diào)用堆棧,其實(shí)這里的堆是沒有含義的,調(diào)用堆棧就是調(diào)用棧的意思。
那么我們的棧里面有什么呢?
我們從主線程的入口main函數(shù),會不斷的進(jìn)行函數(shù)調(diào)用,
每次調(diào)用的時(shí)候,會把所有的參數(shù)和返回地址壓入到棧中。

2.2.2 PC:

Program Counter 程序計(jì)數(shù)器,操作系統(tǒng)真正運(yùn)行的是一個(gè)個(gè)的線程,
而我們的進(jìn)程只是它的一個(gè)容器。PC就是指向當(dāng)前的指令,而這個(gè)指令是放在內(nèi)存中。
每個(gè)線程都有一串自己的指針,去指向自己當(dāng)前所在內(nèi)存的指針。
計(jì)算機(jī)絕大部分是存儲程序性的,說的就是我們的數(shù)據(jù)和程序是存儲在同一片內(nèi)存里的
這個(gè)內(nèi)存中既有我們的數(shù)據(jù)變量又有我們的程序。所以我們的PC指針就是指向我們的內(nèi)存的。

2.2.2.1 緩沖區(qū)溢出

例如我們經(jīng)常聽到一個(gè)漏洞:緩沖區(qū)溢出
這是什么意思呢?
例如:我們有個(gè)地方要輸入用戶名,本來是用來存數(shù)據(jù)的地方。
然后黑客把數(shù)據(jù)輸入的特別長。這個(gè)長度超出了我們給數(shù)據(jù)存儲的內(nèi)存區(qū),這時(shí)候跑到了
我們給程序分配的一部分內(nèi)存中。黑客就可以通過這種辦法將他所要運(yùn)行的代碼
寫入到用戶名框中,來植入進(jìn)來。我們的解決方法就是,用用戶名的長度來限制不要超過
用戶名的緩沖區(qū)的大小來解決。

2.3 TLS:

全稱:thread local storage
之前我們看到每個(gè)進(jìn)程都有自己獨(dú)立的內(nèi)存,這時(shí)候我們想,我們的線程有沒有一塊獨(dú)立的內(nèi)存呢?答案是有的,就是TLS。
可以用來存儲我們線程所獨(dú)有的數(shù)據(jù)。
可以看到:線程才是我們操作系統(tǒng)所真正去運(yùn)行的,而進(jìn)程呢,則是像容器一樣他把需要的一些東西放在了一起,而把不需要的東西做了一層隔離,進(jìn)行隔離開來。

3. 進(jìn)程之間的是怎么進(jìn)行交互的呢?

通過TCP/IP的端口來實(shí)現(xiàn)
在后續(xù)的文章中我們將一一詳細(xì)介紹!

4. 線程之間又是怎樣進(jìn)行交互?

線程的通信就比較簡單,有一大塊共享的內(nèi)存,只要大家的指針是同一個(gè)就可以看到各自的內(nèi)存。
在后續(xù)的文章中我們將一一詳細(xì)介紹!

5.小結(jié):

1.進(jìn)程要分配一大部分的內(nèi)存,而線程只需要分配一部分棧就可以了.
2.一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程.
3.進(jìn)程是資源分配的最小單位,線程是程序執(zhí)行的最小單位。
4.一個(gè)線程可以創(chuàng)建和撤銷另一個(gè)線程,同一個(gè)進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行.

文末
本章節(jié)介紹了進(jìn)程與線程之間的區(qū)別與聯(lián)系,以及其他方面的小知識點(diǎn),也是面試過程中會出現(xiàn)的內(nèi)容點(diǎn)。
里面涉及到了許多的小知識點(diǎn),我們并沒有擴(kuò)展開來講解,會放在今后的文章中做進(jìn)一步的闡述。
歡迎關(guān)注公眾號:Coder編程
獲取最新原創(chuàng)技術(shù)文章和相關(guān)免費(fèi)學(xué)習(xí)資料,隨時(shí)隨地學(xué)習(xí)技術(shù)知識!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73841.html

相關(guān)文章

  • 帶你了解數(shù)據(jù)庫中JOIN用法

    摘要:本次會介紹數(shù)據(jù)庫中的的用法以及它們之間的區(qū)別。所以一共有種選擇了,也就是笛卡爾積。文末本章節(jié)主要介紹了數(shù)據(jù)庫中的用法,以及其他方面的小知識點(diǎn)。 前言 歡迎關(guān)注公眾號:Coder編程獲取最新原創(chuàng)技術(shù)文章和相關(guān)免費(fèi)學(xué)習(xí)資料,隨時(shí)隨地學(xué)習(xí)技術(shù)知識! 本章主要介紹數(shù)據(jù)庫中Join的的用法,也是我們在使用數(shù)據(jù)庫時(shí)非?;A(chǔ)的一個(gè)知識點(diǎn)。本次會介紹數(shù)據(jù)庫中的inner join、left join、...

    liujs 評論0 收藏0
  • 經(jīng)過了這么多場Java面試,我明白了這些道理

    摘要:的長度為什么是的冪次方多線程并發(fā)相關(guān)問題必問創(chuàng)建線程的種方式。什么是線程安全。盡量少通過電話面試,效果不好。通過面試官可以大概判斷這家公司的情況。 最近3個(gè)月一口氣面了十幾家公司的Java開發(fā)崗,大大小小的面試筆試加起來快20場,收獲很多。本人畢業(yè)快2年了,畢業(yè)時(shí)在學(xué)校所在的2線省會城市找了家開發(fā)公司做java的開發(fā),前前后后做了1年半,感覺公司對技術(shù)沒有啥追求,做的項(xiàng)目翻來覆去就是S...

    Dean 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<