最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

操作系統(tǒng)的并發(fā)

1. 前言

本節(jié)內(nèi)容是從操作系統(tǒng)的層面談并發(fā),本節(jié)課程我們需要掌握如下內(nèi)容:

  • 掌握并發(fā)編程的定義,并發(fā)編程的定義是了解并發(fā)的前提基礎(chǔ);
  • 從 CPU 談并發(fā)誕生的意義,一切語言的基礎(chǔ)都是操作系統(tǒng),CPU 的并發(fā)與 Java 并發(fā)息息相關(guān),了解 CPU 對學(xué)習(xí)并發(fā)編程至關(guān)重要;
  • 操作系統(tǒng),進(jìn)程,線程之間的聯(lián)系。本節(jié)課程的重點(diǎn)之一,三者之間的聯(lián)系有助于對整體上有更加透徹的了解(重點(diǎn));
  • 了解什么是進(jìn)程和線程以及兩者之間的區(qū)別。起初學(xué)習(xí)并發(fā)編程的同學(xué)對兩者之間的區(qū)別區(qū)分不明確,進(jìn)程與線程的區(qū)別也是本節(jié)課程的重點(diǎn)之一(重點(diǎn));
  • 理解串行,并行,并發(fā)三種線程執(zhí)行方式的區(qū)別,不同的執(zhí)行方式會有不同的執(zhí)行效果。

2. 并發(fā)編程的定義

定義: 所謂并發(fā)編程是指在一臺處理器上 “同時” 處理多個任務(wù)。并發(fā)是在同一實體上的多個事件,多個事件在同一時間間隔發(fā)生。

意義:開發(fā)者通過使用不同的語言,實現(xiàn)并發(fā)編程,充分的利用處理器(CPU)的每一個核,以達(dá)到最高的處理性能,提升服務(wù)器的資源利用率,提升數(shù)據(jù)的處理速度。

3. 從 CPU 談并發(fā)編程

首先看下圖,圖中展示了最簡單的 CPU 核心通過緩存與主存進(jìn)行通訊的模型。
圖片描述
在緩存出現(xiàn)后不久,系統(tǒng)變得越來越復(fù)雜,緩存與主存之間的速度差異被拉大,由于 CPU 的頻率太快了,快到主存跟不上,這樣在線程處理器時鐘周期內(nèi),CPU 常常需要等待主存,這樣就會浪費(fèi)資源。從我們的感官上,計算機(jī)可以同時運(yùn)行多個任務(wù),但是從 CPU 硬件層面上來說,其實是 CPU 執(zhí)行線程的切換,由于切換頻率非??欤率刮覀儚母泄偕细杏X計算機(jī)可以同時運(yùn)行多個程序。
為了避免長時間的線程等待,我們一方面提升硬件指標(biāo)(如多級高速緩存的誕生,這里不做討論),另一方面引入了并發(fā)概念,充分的利用處理器(CPU)的每一個核,減少 CPU 資源等待的時間,以達(dá)到最高的處理性能。

4. 操作系統(tǒng),進(jìn)程,線程之間的聯(lián)系與區(qū)別

我們首先來看看,三者之間的關(guān)系,從圖中可以看到,操作系統(tǒng)是包含多個進(jìn)程的容器,而每個進(jìn)程又是容納多個線程的容器。

圖片描述

什么是進(jìn)程?
官方定義: 進(jìn)程(baiProcess)是計算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。

Tips:系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位其實就是 CPU 時間片的切換,一個 CPU 同一時間只能操作一個任務(wù),只不過 CPU 在不停的切換工作任務(wù),這里的時間片就是我們所說的系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位。

那么從定義上感覺非常的抽象,但是進(jìn)程其實就在我們?nèi)粘5挠嬎銠C(jī)使用過程中。請看下圖,進(jìn)入任務(wù)管理器看 Windows 操作系統(tǒng)下的進(jìn)程:
圖片描述
什么是線程?
官方定義: 線程是操作系統(tǒng)能夠進(jìn)行資源調(diào)度的最小單位,它被包含在進(jìn)程之中,是進(jìn)程中的實際運(yùn)作單位,每個線程執(zhí)行的都是進(jìn)程代碼的某個片段,特定的線程總是在執(zhí)行特定的任務(wù)。

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

  • 誕生起源:先有進(jìn)程,后有線程。進(jìn)程由于資源利用率、公平性和便利性誕生。處理器的速度往往比外設(shè)的速度快(鍵盤、鼠標(biāo)等),為了提高 CPU 的利用率,誕生了線程,目的就是為了提高程序的執(zhí)行效率;
  • 概念:進(jìn)程是資源分配的最小單位。 線程是程序執(zhí)行的最小單位(線程是操作系統(tǒng)能夠進(jìn)行資源調(diào)度的最小單位,同個進(jìn)程中的線程也可以被同時調(diào)度到多個 CPU 上運(yùn)行),線程也被稱為輕量級進(jìn)程;
  • 內(nèi)存共享:默認(rèn)情況下,進(jìn)程的內(nèi)存無法與其他進(jìn)程共享(進(jìn)程間通信通過 IPC 進(jìn)行)。 線程共享由操作系統(tǒng)分配給其父進(jìn)程的內(nèi)存塊。

5. 串行,并行與并發(fā)

串行:順序執(zhí)行,按步就搬。在 A 任務(wù)執(zhí)行完之前不可以執(zhí)行 B。

并行:同時執(zhí)行,多管齊下。指兩個或兩個以上事件或活動在同一時刻發(fā)生。在多道程序環(huán)境下,并行性使多個程序同一時刻可在不同 CPU 核心上同時執(zhí)行。

并發(fā):穿插執(zhí)行,減少等待。指多個線程輪流穿插著執(zhí)行,并發(fā)的實質(zhì)是一個物理 CPU 在若干道程序之間多路復(fù)用,其目的是提高有限物理資源的運(yùn)行效率。
圖片描述

6. 小結(jié)

本節(jié)課程重點(diǎn)講解了操作系統(tǒng)的并發(fā)原理,以及進(jìn)程和線程之間的區(qū)別與聯(lián)系。除此之外,理解串行,并行,并發(fā)三種線程執(zhí)行方式的區(qū)別尤為重要,對以后的課程學(xué)習(xí)有很大的幫助。