进程丶线程丶CPU关系简述
本文簡(jiǎn)單闡述了進(jìn)程與線程的關(guān)系,為了便于理解,本文也將簡(jiǎn)述CPU的工作原理。
進(jìn)程是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。或者說進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。
線程則是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位,它是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位。
?
進(jìn)程和線程的關(guān)系:
(1)一個(gè)線程只能屬于一個(gè)進(jìn)程,而一個(gè)進(jìn)程可以有多個(gè)線程,但至少有一個(gè)線程。
(2)資源分配給進(jìn)程,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源。
(3)處理機(jī)分給線程,即真正在處理機(jī)上運(yùn)行的是線程。?
(4)線程在執(zhí)行過程中,需要協(xié)作同步。不同進(jìn)程的線程間要利用消息通信的辦法實(shí)現(xiàn)同步。
?
打開你的任務(wù)管理器就能看到進(jìn)程一欄。如下圖:
?
程序、線程、進(jìn)程的樹形關(guān)系圖如下:
?
?
操作系統(tǒng)的設(shè)計(jì),因此可以歸結(jié)為三點(diǎn):
(1)以多進(jìn)程形式,允許多個(gè)任務(wù)同時(shí)運(yùn)行;
(2)以多線程形式,允許單個(gè)任務(wù)分成不同的部分運(yùn)行;
(3)提供協(xié)調(diào)機(jī)制,一方面防止進(jìn)程之間和線程之間產(chǎn)生沖突,另一方面允許進(jìn)程之間和線程之間共享資源。
?
例如我們?cè)谕娓穸酚螒虺绦虻臅r(shí)候,玩家1出拳時(shí),玩家2格擋,這兩個(gè)動(dòng)作是同時(shí)發(fā)生的,所以此時(shí)涉及到了多線程,所以游戲進(jìn)程要至少有兩個(gè)線程,分別為出招和格擋。比如我們用QQ聊天,同時(shí)開著QQ音樂,此時(shí)大家感覺QQ聊天和QQ音樂是同時(shí)進(jìn)行的,但是CPU在同一時(shí)間只能處理一件事情。
? ??我想大家小的時(shí)候都應(yīng)該看過或者很喜歡看一種漫畫書,當(dāng)你快速的翻閱那本書的時(shí)候,書上的人物好像動(dòng)起來了一樣,就是所謂的逐幀動(dòng)畫,CPU的處理事件的原理與其類似。
? ??當(dāng)你運(yùn)行QQ聊天和QQ音樂的時(shí)候,CPU的工作就是不斷的切換進(jìn)程,如果每秒切換6次,你一定會(huì)覺得卡,如果切換的足夠快,你將會(huì)感覺是同時(shí)在運(yùn)行QQ音樂和QQ聊天。
?
結(jié)論:
(1)線程是進(jìn)程的一部分
(2)CPU調(diào)度的是線程
(3)系統(tǒng)為進(jìn)程分配資源,不對(duì)線程分配資源
?
原文地址:http://blog.csdn.net/u013322876/article/details/50595886
?
轉(zhuǎn)載于:https://www.cnblogs.com/copperhaze/p/6003357.html
總結(jié)
以上是生活随笔為你收集整理的进程丶线程丶CPU关系简述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx基础知识之————日志管理
- 下一篇: 廖雪峰js教程笔记9 json