時間 + 資源 + 處理能力操作系統
時間就是時間。線程
資源就是資源。進程
處理能力就是可以利用時間和資源完成任務的主體。內存
處理能力就是cpu。資源
資源就是存儲。虛擬機
時間就是cpu的時間。入門
cpu的處理能力:很快很快。多進程
cpu須要獲取存儲資源:這個過程咱們稱之爲IO,IO很快,可是和cpu相比,它很慢,很慢。程序
因此,cpu
就像一個思想快於嘴巴的人,想要表達的時候,一般都會加上肢體語言,好比手勢,身體。
它能夠同時處理這許多方面的動做。
任務在操做系統的世界裏,一般對應一個進程,這是cpu處理能力的基本單位。
進程執行期間,須要IO,咱們說過IO相對於cpu的處理能力來講,很慢,因此,若是隻有一個進程,那麼它IO的時候,cpu只能閒着。
閒着就是浪費。
這不符合咱們的指望。
因此。
咱們有了多進程,多任務同時執行。
這樣,一個進程IO的時候,就可讓渡cpu時間給其它的進程,等待IO完成,而後從新等待cpu時間繼續執行。
固然,咱們也須要知悉,這個同時並非所謂的同時。
時間是進程執行的時間。
時間也是cpu輸出計算能力的時間。
多進程之間須要讓渡時間,那麼就須要有個最基本的時間單位。
咱們稱之爲時間碎片。
不一樣進程之間相互獨立。
各自加載各自的資源。
各自利用分配給本身的cpu時間碎片來執行任務。
咱們知道,
一個任務可大可小,有複雜有簡單。
按照咱們一般思惟。
此時,一般會有分治。
是的,進程會對任務進行分解,一個大任務分解成不少的小任務。
而執行這些小任務的基本單位,就是線程。
線程是計算機世界裏最基本的執行單元。
咱們說過,進程之間會有時間碎片的調度。
一樣,在一個進程內部,一樣有不一樣線程之間的調度。
線程對於進程來講,內部資源共享。
因此線程之間,需求的是協做。
線程,也是系統的線程。
Java是一個跨平臺的語言。
因此能跨平臺,是由於它有一個統一的運行空間。
本身創造的統一的運行空間,Java虛擬機-JVM。
虛擬機構造了本身的內存模型,
也有線程。
固然,這個線程不一樣於系統中的線程。
Java程序的任務調度,皆是基於Java的線程調度。
JVM內存模型中最近本的連個單元,堆和棧。
堆是共享堆,棧是線程棧。
線程棧也是線程私有棧。
好了,到此爲止,入門完畢。