0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

32位4GB系統(tǒng)訪問2GB數(shù)據(jù),虛擬內(nèi)存會發(fā)生什么?

小林coding ? 來源:小林coding ? 2024-01-22 17:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

操作系統(tǒng)

單核可以多線程嗎?

可以的。

單核創(chuàng)建了多線程,CPU 會從一個進程快速切換至另一個進程,其間每個進程各運行幾十或幾百個毫秒,雖然單核的 CPU 在某一個瞬間,只能運行一個進程。但在 1 秒鐘期間,它可能會運行多個進程,這樣就產(chǎn)生并行的錯覺,實際上這是并發(fā)。

43eefa2c-b907-11ee-8b88-92fbcf53809c.png

并發(fā)與并行

虛擬地址怎么找到對應(yīng)的內(nèi)容的?

操作系統(tǒng)內(nèi)存管理方式主要兩種,不同的管理方式,尋址的實現(xiàn)是不同的:

內(nèi)存分段:將進程的虛擬地址空間劃分為多個不同大小的段,每個段對應(yīng)一個邏輯單位,如代碼段、數(shù)據(jù)段、堆段和棧段。每個段的大小可以根據(jù)需要進行調(diào)整,使得不同段可以按需分配和釋放內(nèi)存。虛擬內(nèi)存分段的優(yōu)點是可以更好地管理不同類型的數(shù)據(jù),但是由于段的大小不一致,容易產(chǎn)生外部碎片。

內(nèi)存分頁:將進程的虛擬地址空間劃分為固定大小的頁,同時將物理內(nèi)存也劃分為相同大小的頁框。通過頁表將虛擬地址映射到物理地址,并且可以按需加載和釋放頁。虛擬內(nèi)存分頁的優(yōu)點是可以更好地利用物理內(nèi)存空間,但是可能會產(chǎn)生內(nèi)部碎片。

分段的尋址方式

分段機制下的虛擬地址由兩部分組成,段選擇因子段內(nèi)偏移量。

43f65920-b907-11ee-8b88-92fbcf53809c.png

段選擇因子和段內(nèi)偏移量:

段選擇子就保存在段寄存器里面。段選擇子里面最重要的是段號,用作段表的索引。段表里面保存的是這個段的基地址、段的界限和特權(quán)等級等。

虛擬地址中的段內(nèi)偏移量應(yīng)該位于 0 和段界限之間,如果段內(nèi)偏移量是合法的,就將段基地址加上段內(nèi)偏移量得到物理內(nèi)存地址。

在上面,知道了虛擬地址是通過段表與物理地址進行映射的,分段機制會把程序的虛擬地址分成 4 個段,每個段在段表中有一個項,在這一項找到段的基地址,再加上偏移量,于是就能找到物理內(nèi)存中的地址,如下圖:

43fa0f52-b907-11ee-8b88-92fbcf53809c.png

如果要訪問段 3 中偏移量 500 的虛擬地址,我們可以計算出物理地址為,段 3 基地址 7000 + 偏移量 500 = 7500。

分段的辦法很好,解決了程序本身不需要關(guān)心具體的物理內(nèi)存地址的問題,但它也有一些不足之處:

第一個就是內(nèi)存碎片的問題。

第二個就是內(nèi)存交換的效率低的問題。

分頁的尋址方式

虛擬地址與物理地址之間通過頁表來映射,如下圖:

44051bae-b907-11ee-8b88-92fbcf53809c.png

頁表是存儲在內(nèi)存里的,內(nèi)存管理單元 (MMU)就做將虛擬內(nèi)存地址轉(zhuǎn)換成物理地址的工作。

而當(dāng)進程訪問的虛擬地址在頁表中查不到時,系統(tǒng)會產(chǎn)生一個缺頁異常,進入系統(tǒng)內(nèi)核空間分配物理內(nèi)存、更新進程頁表,最后再返回用戶空間,恢復(fù)進程的運行。

在分頁機制下,虛擬地址分為兩部分,頁號頁內(nèi)偏移。頁號作為頁表的索引,頁表包含物理頁每頁所在物理內(nèi)存的基地址,這個基地址與頁內(nèi)偏移的組合就形成了物理內(nèi)存地址,見下圖。

441856c4-b907-11ee-8b88-92fbcf53809c.png

總結(jié)一下,對于一個內(nèi)存地址轉(zhuǎn)換,其實就是這樣三個步驟:

把虛擬內(nèi)存地址,切分成頁號和偏移量;

根據(jù)頁號,從頁表里面,查詢對應(yīng)的物理頁號;

直接拿物理頁號,加上前面的偏移量,就得到了物理內(nèi)存地址。

下面舉個例子,虛擬內(nèi)存中的頁通過頁表映射為了物理內(nèi)存中的頁,如下圖:

441dbeb6-b907-11ee-8b88-92fbcf53809c.png

32位 4G 執(zhí)行2G的東西,虛擬內(nèi)存會有什么變化呢?

應(yīng)用程序通過 malloc 函數(shù)申請內(nèi)存的時候,實際上申請的是虛擬內(nèi)存,此時并不會分配物理內(nèi)存。

當(dāng)應(yīng)用程序讀寫了這塊虛擬內(nèi)存,CPU 就會去訪問這個虛擬內(nèi)存, 這時會發(fā)現(xiàn)這個虛擬內(nèi)存沒有映射到物理內(nèi)存, CPU 就會產(chǎn)生缺頁中斷,進程會從用戶態(tài)切換到內(nèi)核態(tài),并將缺頁中斷交給內(nèi)核的 Page Fault Handler (缺頁中斷函數(shù))處理。

缺頁中斷處理函數(shù)會看是否有空閑的物理內(nèi)存:

如果有,就直接分配物理內(nèi)存,并建立虛擬內(nèi)存與物理內(nèi)存之間的映射關(guān)系。

如果沒有空閑的物理內(nèi)存,那么內(nèi)核就會開始進行回收內(nèi)存的工作,比如會進行 swap 機制。

什么是 Swap 機制?

當(dāng)系統(tǒng)的物理內(nèi)存不夠用的時候,就需要將物理內(nèi)存中的一部分空間釋放出來,以供當(dāng)前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么操作的程序,這些被釋放的空間會被臨時保存到磁盤,等到那些程序要運行時,再從磁盤中恢復(fù)保存的數(shù)據(jù)到內(nèi)存中。

另外,當(dāng)內(nèi)存使用存在壓力的時候,會開始觸發(fā)內(nèi)存回收行為,會把這些不常訪問的內(nèi)存先寫到磁盤中,然后釋放這些內(nèi)存,給其他更需要的進程使用。再次訪問這些內(nèi)存時,重新從磁盤讀入內(nèi)存就可以了。

這種,將內(nèi)存數(shù)據(jù)換出磁盤,又從磁盤中恢復(fù)數(shù)據(jù)到內(nèi)存的過程,就是 Swap 機制負(fù)責(zé)的。

Swap 就是把一塊磁盤空間或者本地文件,當(dāng)成內(nèi)存來使用,它包含換出和換入兩個過程:

換出(Swap Out) ,是把進程暫時不用的內(nèi)存數(shù)據(jù)存儲到磁盤中,并釋放這些數(shù)據(jù)占用的內(nèi)存;

換入(Swap In),是在進程再次訪問這些內(nèi)存的時候,把它們從磁盤讀到內(nèi)存中來;

Swap 換入換出的過程如下圖:

44283a6c-b907-11ee-8b88-92fbcf53809c.png

使用 Swap 機制優(yōu)點是,應(yīng)用程序?qū)嶋H可以使用的內(nèi)存空間將遠遠超過系統(tǒng)的物理內(nèi)存。由于硬盤空間的價格遠比內(nèi)存要低,因此這種方式無疑是經(jīng)濟實惠的。當(dāng)然,頻繁地讀寫硬盤,會顯著降低操作系統(tǒng)的運行速率,這也是 Swap 的弊端。

內(nèi)核態(tài)和用戶態(tài)的區(qū)別是什么?

內(nèi)核態(tài)和用戶態(tài)是操作系統(tǒng)中的兩種不同的執(zhí)行模式。

內(nèi)核態(tài)是操作系統(tǒng)運行在特權(quán)級別最高的模式下的狀態(tài),它具有對系統(tǒng)資源的完全控制權(quán)。在內(nèi)核態(tài)下,操作系統(tǒng)可以執(zhí)行特權(quán)指令,訪問所有的內(nèi)存和設(shè)備,以及執(zhí)行關(guān)鍵的系統(tǒng)操作。內(nèi)核態(tài)下運行的代碼通常是操作系統(tǒng)內(nèi)核或驅(qū)動程序。

用戶態(tài)是應(yīng)用程序運行的一種模式,它運行在較低的特權(quán)級別下。在用戶態(tài)下,應(yīng)用程序只能訪問有限的系統(tǒng)資源,不能直接執(zhí)行特權(quán)指令或訪問內(nèi)核級別的數(shù)據(jù)。用戶態(tài)下運行的代碼通常是應(yīng)用程序或用戶進程。

內(nèi)核態(tài)和用戶態(tài)的區(qū)別在于權(quán)限和資源訪問的限制。內(nèi)核態(tài)具有更高的權(quán)限和更廣泛的資源訪問能力,而用戶態(tài)受到限制,只能訪問有限的資源。操作系統(tǒng)通過將關(guān)鍵的操作和資源保護在內(nèi)核態(tài)下來確保系統(tǒng)的安全性和穩(wěn)定性。用戶程序通過系統(tǒng)調(diào)用的方式向操作系統(tǒng)請求服務(wù)或資源,并在用戶態(tài)下執(zhí)行,以提供更高的隔離性和安全性。

網(wǎng)絡(luò)協(xié)議

http常見響應(yīng)碼有哪些?

HTTP 狀態(tài)碼分為 5 大類:1XX:表示消息狀態(tài)碼;2XX:表示成功狀態(tài)碼;3XX:表示重定向狀態(tài)碼;4XX:表示客戶端錯誤狀態(tài)碼;5XX:表示服務(wù)端錯誤狀態(tài)碼。

44344096-b907-11ee-8b88-92fbcf53809c.png

五大類 HTTP 狀態(tài)碼

其中常見的具體狀態(tài)碼有:200:請求成功;301:永久重定向;302:臨時重定向;404:無法找到此頁面;405:請求的方法類型不支持;500:服務(wù)器內(nèi)部出錯。

http各個版本的特性?

HTTP/1.1 相比 HTTP/1.0 性能上的改進:

使用長連接的方式改善了 HTTP/1.0 短連接造成的性能開銷。

支持管道(pipeline)網(wǎng)絡(luò)傳輸,只要第一個請求發(fā)出去了,不必等其回來,就可以發(fā)第二個請求出去,可以減少整體的響應(yīng)時間。

但 HTTP/1.1 還是有性能瓶頸:

請求 / 響應(yīng)頭部(Header)未經(jīng)壓縮就發(fā)送,首部信息越多延遲越大。只能壓縮 Body 的部分;

發(fā)送冗長的首部。每次互相發(fā)送相同的首部造成的浪費較多;

服務(wù)器是按請求的順序響應(yīng)的,如果服務(wù)器響應(yīng)慢,會招致客戶端一直請求不到數(shù)據(jù),也就是隊頭阻塞;

沒有請求優(yōu)先級控制;

請求只能從客戶端開始,服務(wù)器只能被動響應(yīng)。

443be224-b907-11ee-8b88-92fbcf53809c.jpg

HTT/1 ~ HTTP/2

HTTP/2 相比 HTTP/1.1 性能上的改進:

頭部壓縮

二進制格式

并發(fā)傳輸

服務(wù)器主動推送資源

1. 頭部壓縮

HTTP/2 會壓縮頭(Header)如果你同時發(fā)出多個請求,他們的頭是一樣的或是相似的,那么,協(xié)議會幫你消除重復(fù)的部分。

這就是所謂的 HPACK 算法:在客戶端和服務(wù)器同時維護一張頭信息表,所有字段都會存入這個表,生成一個索引號,以后就不發(fā)送同樣字段了,只發(fā)送索引號,這樣就提高速度了。

2. 二進制格式

HTTP/2 不再像 HTTP/1.1 里的純文本形式的報文,而是全面采用了二進制格式,頭信息和數(shù)據(jù)體都是二進制,并且統(tǒng)稱為幀(frame):頭信息幀(Headers Frame)和數(shù)據(jù)幀(Data Frame)

4448d592-b907-11ee-8b88-92fbcf53809c.png

HTTP/1 與 HTTP/2

這樣雖然對人不友好,但是對計算機非常友好,因為計算機只懂二進制,那么收到報文后,無需再將明文的報文轉(zhuǎn)成二進制,而是直接解析二進制報文,這增加了數(shù)據(jù)傳輸?shù)男?/strong>。

3. 并發(fā)傳輸

我們都知道 HTTP/1.1 的實現(xiàn)是基于請求-響應(yīng)模型的。同一個連接中,HTTP 完成一個事務(wù)(請求與響應(yīng)),才能處理下一個事務(wù),也就是說在發(fā)出請求等待響應(yīng)的過程中,是沒辦法做其他事情的,如果響應(yīng)遲遲不來,那么后續(xù)的請求是無法發(fā)送的,也造成了隊頭阻塞的問題。

而 HTTP/2 就很牛逼了,引出了 Stream 概念,多個 Stream 復(fù)用在一條 TCP 連接。

445341d0-b907-11ee-8b88-92fbcf53809c.png

從上圖可以看到,1 個 TCP 連接包含多個 Stream,Stream 里可以包含 1 個或多個 Message,Message 對應(yīng) HTTP/1 中的請求或響應(yīng),由 HTTP 頭部和包體構(gòu)成。Message 里包含一條或者多個 Frame,F(xiàn)rame 是 HTTP/2 最小單位,以二進制壓縮格式存放 HTTP/1 中的內(nèi)容(頭部和包體)。

針對不同的 HTTP 請求用獨一無二的 Stream ID 來區(qū)分,接收端可以通過 Stream ID 有序組裝成 HTTP 消息,不同 Stream 的幀是可以亂序發(fā)送的,因此可以并發(fā)不同的 Stream ,也就是 HTTP/2 可以并行交錯地發(fā)送請求和響應(yīng)。

比如下圖,服務(wù)端并行交錯地發(fā)送了兩個響應(yīng):Stream 1 和 Stream 3,這兩個 Stream 都是跑在一個 TCP 連接上,客戶端收到后,會根據(jù)相同的 Stream ID 有序組裝成 HTTP 消息。

445e796a-b907-11ee-8b88-92fbcf53809c.jpg

4、服務(wù)器推送

HTTP/2 還在一定程度上改善了傳統(tǒng)的「請求 - 應(yīng)答」工作模式,服務(wù)端不再是被動地響應(yīng),可以主動向客戶端發(fā)送消息。

客戶端和服務(wù)器雙方都可以建立 Stream, Stream ID 也是有區(qū)別的,客戶端建立的 Stream 必須是奇數(shù)號,而服務(wù)器建立的 Stream 必須是偶數(shù)號。

比如下圖,Stream 1 是客戶端向服務(wù)端請求的資源,屬于客戶端建立的 Stream,所以該 Stream 的 ID 是奇數(shù)(數(shù)字 1);Stream 2 和 4 都是服務(wù)端主動向客戶端推送的資源,屬于服務(wù)端建立的 Stream,所以這兩個 Stream 的 ID 是偶數(shù)(數(shù)字 2 和 4)。

446902e0-b907-11ee-8b88-92fbcf53809c.png

再比如,客戶端通過 HTTP/1.1 請求從服務(wù)器那獲取到了 HTML 文件,而 HTML 可能還需要依賴 CSS 來渲染頁面,這時客戶端還要再發(fā)起獲取 CSS 文件的請求,需要兩次消息往返,如下圖左邊部分:

4473bfaa-b907-11ee-8b88-92fbcf53809c.png

如上圖右邊部分,在 HTTP/2 中,客戶端在訪問 HTML 時,服務(wù)器可以直接主動推送 CSS 文件,減少了消息傳遞的次數(shù)。

tcp擁塞控制介紹一下

在網(wǎng)絡(luò)出現(xiàn)擁堵時,如果繼續(xù)發(fā)送大量數(shù)據(jù)包,可能會導(dǎo)致數(shù)據(jù)包時延、丟失等,這時 TCP 就會重傳數(shù)據(jù),但是一重傳就會導(dǎo)致網(wǎng)絡(luò)的負(fù)擔(dān)更重,于是會導(dǎo)致更大的延遲以及更多的丟包,這個情況就會進入惡性循環(huán)被不斷地放大....

所以,TCP 不能忽略網(wǎng)絡(luò)上發(fā)生的事,它被設(shè)計成一個無私的協(xié)議,當(dāng)網(wǎng)絡(luò)發(fā)送擁塞時,TCP 會自我犧牲,降低發(fā)送的數(shù)據(jù)量。

于是,就有了擁塞控制,控制的目的就是避免「發(fā)送方」的數(shù)據(jù)填滿整個網(wǎng)絡(luò)。

為了在「發(fā)送方」調(diào)節(jié)所要發(fā)送數(shù)據(jù)的量,定義了一個叫做「擁塞窗口」的概念。

擁塞控制主要是四個算法:

慢啟動

擁塞避免

擁塞發(fā)生

快速恢復(fù)

慢啟動

TCP 在剛建立連接完成后,首先是有個慢啟動的過程,這個慢啟動的意思就是一點一點的提高發(fā)送數(shù)據(jù)包的數(shù)量,如果一上來就發(fā)大量的數(shù)據(jù),這不是給網(wǎng)絡(luò)添堵嗎?

慢啟動的算法記住一個規(guī)則就行:當(dāng)發(fā)送方每收到一個 ACK,擁塞窗口 cwnd 的大小就會加 1。

這里假定擁塞窗口 cwnd 和發(fā)送窗口 swnd 相等,下面舉個栗子:

連接建立完成后,一開始初始化 cwnd = 1,表示可以傳一個 MSS 大小的數(shù)據(jù)。

當(dāng)收到一個 ACK 確認(rèn)應(yīng)答后,cwnd 增加 1,于是一次能夠發(fā)送 2 個

當(dāng)收到 2 個的 ACK 確認(rèn)應(yīng)答后, cwnd 增加 2,于是就可以比之前多發(fā)2 個,所以這一次能夠發(fā)送 4 個

當(dāng)這 4 個的 ACK 確認(rèn)到來的時候,每個確認(rèn) cwnd 增加 1, 4 個確認(rèn) cwnd 增加 4,于是就可以比之前多發(fā) 4 個,所以這一次能夠發(fā)送 8 個。

慢啟動算法的變化過程如下圖:

4484e604-b907-11ee-8b88-92fbcf53809c.png

慢啟動算法

可以看出慢啟動算法,發(fā)包的個數(shù)是指數(shù)性的增長。

那慢啟動漲到什么時候是個頭呢?

有一個叫慢啟動門限 ssthresh (slow start threshold)狀態(tài)變量。

當(dāng) cwnd < ssthresh 時,使用慢啟動算法。

當(dāng) cwnd >= ssthresh 時,就會使用「擁塞避免算法」。

擁塞避免

當(dāng)擁塞窗口 cwnd 「超過」慢啟動門限 ssthresh 就會進入擁塞避免算法。

一般來說 ssthresh 的大小是 65535 字節(jié)。

那么進入擁塞避免算法后,它的規(guī)則是:每當(dāng)收到一個 ACK 時,cwnd 增加 1/cwnd。

接上前面的慢啟動的栗子,現(xiàn)假定 ssthresh 為 8:

當(dāng) 8 個 ACK 應(yīng)答確認(rèn)到來時,每個確認(rèn)增加 1/8,8 個 ACK 確認(rèn) cwnd 一共增加 1,于是這一次能夠發(fā)送 9 個 MSS 大小的數(shù)據(jù),變成了線性增長。

擁塞避免算法的變化過程如下圖:

44890b12-b907-11ee-8b88-92fbcf53809c.png

擁塞避免

所以,我們可以發(fā)現(xiàn),擁塞避免算法就是將原本慢啟動算法的指數(shù)增長變成了線性增長,還是增長階段,但是增長速度緩慢了一些。

就這么一直增長著后,網(wǎng)絡(luò)就會慢慢進入了擁塞的狀況了,于是就會出現(xiàn)丟包現(xiàn)象,這時就需要對丟失的數(shù)據(jù)包進行重傳。

當(dāng)觸發(fā)了重傳機制,也就進入了「擁塞發(fā)生算法」。

擁塞發(fā)生

當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞,也就是會發(fā)生數(shù)據(jù)包重傳,重傳機制主要有兩種:

超時重傳

快速重傳

當(dāng)發(fā)生了「超時重傳」,則就會使用擁塞發(fā)生算法。

這個時候,ssthresh 和 cwnd 的值會發(fā)生變化:

ssthresh 設(shè)為 cwnd/2,

cwnd 重置為 1 (是恢復(fù)為 cwnd 初始化值,我這里假定 cwnd 初始化值 1)

擁塞發(fā)生算法的變化如下圖:

44960934-b907-11ee-8b88-92fbcf53809c.png

擁塞發(fā)送 —— 超時重傳

接著,就重新開始慢啟動,慢啟動是會突然減少數(shù)據(jù)流的。這真是一旦「超時重傳」,馬上回到解放前。但是這種方式太激進了,反應(yīng)也很強烈,會造成網(wǎng)絡(luò)卡頓。

還有更好的方式,前面我們講過「快速重傳算法」。當(dāng)接收方發(fā)現(xiàn)丟了一個中間包的時候,發(fā)送三次前一個包的 ACK,于是發(fā)送端就會快速地重傳,不必等待超時再重傳。

TCP 認(rèn)為這種情況不嚴(yán)重,因為大部分沒丟,只丟了一小部分,則 ssthresh 和 cwnd 變化如下:

cwnd = cwnd/2 ,也就是設(shè)置為原來的一半;

ssthresh = cwnd;

進入快速恢復(fù)算法

快速恢復(fù)

快速重傳和快速恢復(fù)算法一般同時使用,快速恢復(fù)算法是認(rèn)為,你還能收到 3 個重復(fù) ACK 說明網(wǎng)絡(luò)也不那么糟糕,所以沒有必要像 RTO 超時那么強烈。

正如前面所說,進入快速恢復(fù)之前,cwnd 和 ssthresh 已被更新了:

cwnd = cwnd/2 ,也就是設(shè)置為原來的一半;

ssthresh = cwnd;

然后,進入快速恢復(fù)算法如下:

擁塞窗口 cwnd = ssthresh + 3 ( 3 的意思是確認(rèn)有 3 個數(shù)據(jù)包被收到了);

重傳丟失的數(shù)據(jù)包;

如果再收到重復(fù)的 ACK,那么 cwnd 增加 1;

如果收到新數(shù)據(jù)的 ACK 后,把 cwnd 設(shè)置為第一步中的 ssthresh 的值,原因是該 ACK 確認(rèn)了新的數(shù)據(jù),說明從 duplicated ACK 時的數(shù)據(jù)都已收到,該恢復(fù)過程已經(jīng)結(jié)束,可以回到恢復(fù)之前的狀態(tài)了,也即再次進入擁塞避免狀態(tài);

快速恢復(fù)算法的變化過程如下圖:

44a1433a-b907-11ee-8b88-92fbcf53809c.png

快速重傳和快速恢復(fù)

也就是沒有像「超時重傳」一夜回到解放前,而是還在比較高的值,后續(xù)呈線性增長。

哪些會影響窗口大?。?/p>

TCP窗口大小受到多個因素的影響,包括以下幾個方面:

接收方窗口大?。航邮辗降拇翱诖笮Q定了發(fā)送方可以發(fā)送的數(shù)據(jù)量。如果接收方窗口較小,發(fā)送方需要等待確認(rèn)后才能繼續(xù)發(fā)送數(shù)據(jù),從而限制了發(fā)送速率。

帶寬和延遲:網(wǎng)絡(luò)的帶寬和延遲會對TCP窗口大小產(chǎn)生影響。較高的帶寬和較低的延遲通常可以支持較大的窗口大小,從而實現(xiàn)更高的數(shù)據(jù)傳輸速率。

擁塞控制:TCP的擁塞控制機制會根據(jù)網(wǎng)絡(luò)擁塞程度調(diào)整窗口大小。當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時,TCP會減小窗口大小以降低發(fā)送速率,從而避免擁塞的進一步惡化。

路由器和網(wǎng)絡(luò)設(shè)備:路由器和其他網(wǎng)絡(luò)設(shè)備的緩沖區(qū)大小也會對TCP窗口大小產(chǎn)生影響。如果緩沖區(qū)較小,可能導(dǎo)致數(shù)據(jù)包丟失或延遲增加,從而限制了窗口大小。

操作系統(tǒng)和應(yīng)用程序:操作系統(tǒng)和應(yīng)用程序也可以對TCP窗口大小進行配置和調(diào)整。通過調(diào)整操作系統(tǒng)的參數(shù)或應(yīng)用程序的設(shè)置,可以影響TCP窗口大小的默認(rèn)值和動態(tài)調(diào)整的行為。

因此,TCP窗口大小受到接收方窗口大小、帶寬和延遲、擁塞控制、網(wǎng)絡(luò)設(shè)備、操作系統(tǒng)和應(yīng)用程序等多個因素的綜合影響。








審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1400

    瀏覽量

    80634
  • 多線程
    +關(guān)注

    關(guān)注

    0

    文章

    279

    瀏覽量

    20366
  • MMU
    MMU
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    18687
  • 中斷函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    5461
  • 虛擬內(nèi)存
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    8227

原文標(biāo)題:騰訊一面:32 位 4GB 系統(tǒng),訪問 2GB 數(shù)據(jù),虛擬內(nèi)存會發(fā)生什么?

文章出處:【微信號:小林coding,微信公眾號:小林coding】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Micron推出2GB4GB的DDR3-2133內(nèi)存芯片

    Micron近日宣布將推出2GB4GB的DDR3-2133內(nèi)存芯片,采用30nm制造工藝,這種芯片能夠進一步融入到SoC芯片和顯卡芯片中提供“超性能”的強悍表現(xiàn)
    發(fā)表于 06-13 10:11 ?1646次閱讀

    淺談4G內(nèi)存對筆記本的影響 2G內(nèi)存剛剛好

    必要使用到4G內(nèi)存么?與2GB內(nèi)存相比,4GB內(nèi)存對于提高筆記本綜合性能是否有幫助?會在接下來的
    發(fā)表于 09-23 18:02

    余承東:2GB內(nèi)存版榮耀3C一月正式開賣

    在第二輪12萬臺又在1分鐘內(nèi)售罄之后,華為副總裁余承東在微博上表示,2GB內(nèi)存版的榮耀3C以及5.5寸的榮耀3X會在1月份正式開賣。此外,將進一步提升產(chǎn)量,供貨會達到百萬臺以上?! ∽蛉眨A為榮耀在
    發(fā)表于 01-01 10:55

    如何定義虛擬內(nèi)存?

    中定位一個稱為頁幀的項,通常大小為4kb。頁面框架包含頁面框架編號和實際數(shù)據(jù),簡稱為頁面。頁面偏移量用于訪問4kb 頁面中的單個單詞。如果虛擬
    發(fā)表于 04-11 10:20

    Linux虛擬內(nèi)存和物理內(nèi)存的深刻分析

    內(nèi)存,用戶進程總是先獲得一個虛擬內(nèi)存區(qū)的使用權(quán),最終通過缺頁異常獲得一塊真正的物理內(nèi)存。物理內(nèi)存的內(nèi)核映射IA32架構(gòu)中內(nèi)核虛擬地址空間只有
    發(fā)表于 05-31 08:00

    STM32F446xC/E內(nèi)存映射4GB還是4.096GB?

    ?,F(xiàn)在我的問題是:它總共有多少,4.096GB 還是 4.000GB?或者這是否意味著 0.096GB 不可尋址?2)某些地址僅指 4
    發(fā)表于 01-10 07:48

    索尼新旗艦曝光!證實升為4GB內(nèi)存 或?qū)WC大會發(fā)

    索尼將于MWC2017大會上推出多款手機,其中一款旗艦機型將搭載4GB內(nèi)存,這也意味著索尼手機終于不再是祖?zhèn)?GB內(nèi)存了。@科技美學(xué)昨晚曝光了號稱是索尼新旗艦的圖片,圖片證實了該機搭載
    發(fā)表于 02-10 10:37 ?1309次閱讀

    性能升級!小米6官方確認(rèn):4GB升級6GB內(nèi)存

    如此前預(yù)告,小米官方今日放出了小米6第三段預(yù)熱視頻,確認(rèn)一項重磅升級:4GB內(nèi)存升級到6GB內(nèi)存。國內(nèi)首發(fā)驍龍835+6GB的配置,讓小米6
    發(fā)表于 04-16 09:40 ?1614次閱讀

    紫光DDR3 4GB*2 1600內(nèi)存詳細(xì)評測

    國產(chǎn)紫光內(nèi)存DDR3顆粒的性能如何呢?值得入手嗎?為了解決大家的疑問,我們?yōu)榇蠹規(guī)砹俗瞎釪DR3 4GB*2 1600內(nèi)存的評測,幫助大家了解紫光
    發(fā)表于 03-12 13:56 ?1.1w次閱讀
    紫光DDR3 <b class='flag-5'>4GB</b>*<b class='flag-5'>2</b> 1600<b class='flag-5'>內(nèi)存</b>詳細(xì)評測

    為什么2GB運行內(nèi)存的iPhone比4G內(nèi)存的安卓機運行還流暢

    安卓手機起步都是2GB內(nèi)存,高端或頂配機型會配備3GB甚至4GB內(nèi)存,不過大多都是LPDDR3,而非最新的LPDDR
    發(fā)表于 07-19 09:00 ?8696次閱讀

    2GB內(nèi)存臺式機用什么系統(tǒng)

    在這個智能手機16GB內(nèi)存超過大部分PC的時代,2GB內(nèi)存的電腦還能干什么?
    的頭像 發(fā)表于 03-10 09:47 ?7337次閱讀

    MXIC 19nm SLC NAND 1Gb/2Gb/4Gb/8Gb 可滿足工控市場小容量FLASH短缺需求

    MXIC 19nm SLC NAND 1Gb/2Gb/4Gb/8Gb 可滿足工控市場小容量FLASH短缺需求 一、MXIC 19nm SLC NAND 介紹: MX30LF/MX60L
    發(fā)表于 03-23 11:06 ?2271次閱讀

    虛擬內(nèi)存的作用和原理 如何調(diào)整虛擬內(nèi)存設(shè)置

    性能,允許更多的程序同時運行,以及防止內(nèi)存溢出。 虛擬內(nèi)存的作用 擴展物理內(nèi)存 :當(dāng)物理內(nèi)存不足以容納當(dāng)前運行的所有程序時,虛擬內(nèi)存允許
    的頭像 發(fā)表于 12-04 09:13 ?2265次閱讀

    虛擬內(nèi)存不足如何解決 虛擬內(nèi)存和物理內(nèi)存的區(qū)別

    物理內(nèi)存,可以減少系統(tǒng)虛擬內(nèi)存的依賴。 調(diào)整虛擬內(nèi)存設(shè)置 : 進入系統(tǒng)設(shè)置,調(diào)整虛擬內(nèi)存的大小
    的頭像 發(fā)表于 12-04 09:14 ?1393次閱讀

    什么是虛擬內(nèi)存分頁 Windows系統(tǒng)虛擬內(nèi)存優(yōu)化方法

    虛擬內(nèi)存分頁概述 在Windows操作系統(tǒng)中,虛擬內(nèi)存是通過分頁機制實現(xiàn)的。分頁允許系統(tǒng)內(nèi)存中的數(shù)據(jù)
    的頭像 發(fā)表于 12-04 09:16 ?1371次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品