操作系統(tǒng)

1昙读、簡(jiǎn)述進(jìn)程和線程
進(jìn)程:
1)操作系統(tǒng)進(jìn)行資源分配(內(nèi)存、磁盤(pán)竭讳、顯卡)的基本單位创葡,多個(gè)進(jìn)程之間相互獨(dú)立(地址空間和數(shù)據(jù)空間),需要通信的話是在操作系統(tǒng)層面進(jìn)行通信
2)穩(wěn)定性好代咸,如果一個(gè)進(jìn)程崩潰蹈丸,不影響其他進(jìn)程,但是進(jìn)程消耗資源大呐芥,開(kāi)啟的進(jìn)程數(shù)量有限制
線程:
1)CPU進(jìn)行資源分配和調(diào)度的基本單位(CPU看到的都是線程不是進(jìn)程)逻杖,線程是進(jìn)程的一部分,是比進(jìn)程更小的能夠獨(dú)立運(yùn)行的基本單位思瘟,一個(gè)進(jìn)程下的多個(gè)線程可以共享該進(jìn)程的所有資源(地址空間和數(shù)據(jù)空間)荸百,一個(gè)線程的數(shù)據(jù)可以直接提供給其他線程使用,比較方便滨攻,但同時(shí)會(huì)造成變量值的混亂够话,所以需要通過(guò)線程鎖來(lái)限制線程的執(zhí)行
2)如果IO操作密集蓝翰,則可以多線程運(yùn)行效率高,缺點(diǎn)就是如果一個(gè)線程崩潰女嘲,就會(huì)造成進(jìn)程的崩潰
應(yīng)用場(chǎng)景:
1)IO密集的用多線程畜份,在用戶輸入,sleep的時(shí)候欣尼,可以切換到其他線程執(zhí)行爆雹,減少等待的時(shí)間
2)CPU密集的用多進(jìn)程,因?yàn)榧偃鏘O操作較少愕鼓,用多線程的話钙态,因?yàn)榫€程共享一個(gè)全局解釋器鎖,當(dāng)前運(yùn)行的線程會(huì)霸占GIL菇晃,導(dǎo)致其他線程沒(méi)有GIL册倒,就不能充分利用多核CPU的優(yōu)勢(shì)

2、CPU密集型和IO密集型
CPU密集型:
指的是大部分的狀況下是CPU Loading 100%磺送,CPU要讀寫(xiě)I/O(硬盤(pán)/內(nèi)存)驻子,I/O在很短的時(shí)間內(nèi)就可以完成,而CPU還有很多運(yùn)算要處理估灿,整個(gè)過(guò)程中系統(tǒng)的硬盤(pán)拴孤、內(nèi)存性能相對(duì)CPU要好很多
例如:算法里面的模型運(yùn)算工作,如一個(gè)計(jì)算圓周率至小數(shù)點(diǎn)一千位以下的程序甲捏,在執(zhí)行的過(guò)程當(dāng)中絕大部份時(shí)間用在三角函數(shù)和開(kāi)根號(hào)的計(jì)算演熟,屬于CPU密集型的程序,全靠CPU的運(yùn)算能力司顿。這種計(jì)算密集型任務(wù)雖然可以用多線程完成芒粹,但是線程越多,花在線程切換的時(shí)間就越多大溜,CPU執(zhí)行任務(wù)的效率就越低化漆,所以,要高效地利用CPU钦奋,CPU密集型任務(wù)同時(shí)運(yùn)行的線程數(shù)量應(yīng)當(dāng)?shù)扔贑PU的核數(shù)座云,這樣可以占滿CPU資源,進(jìn)而充分利用CPU

IO密集型:
指的是大部分的狀況下是CPU在等I/O(硬盤(pán)/內(nèi)存)的讀寫(xiě)操作付材,此時(shí)的CPU Loading并不高朦拖,整個(gè)過(guò)程中系統(tǒng)的CPU性能相對(duì)硬盤(pán)、內(nèi)存要好很多
例如:讀寫(xiě)數(shù)據(jù)庫(kù)等厌衔,CPU消耗很少璧帝,任務(wù)的大部分時(shí)間都在等待IO操作完成(因?yàn)镮O的速度遠(yuǎn)遠(yuǎn)低于CPU和內(nèi)存的速度),對(duì)于IO密集型任務(wù)富寿,線程越多睬隶,CPU效率越高锣夹,但也要有一個(gè)限度,常見(jiàn)的大部分任務(wù)都是IO密集型任務(wù)

IO密集型任務(wù)執(zhí)行期間苏潜,99%的時(shí)間都花在IO上银萍,花在CPU上的時(shí)間很少,因?yàn)樾糇螅眠\(yùn)行速度極快的C語(yǔ)言替換Python這樣運(yùn)行速度極低的腳本語(yǔ)言砖顷,完全無(wú)法提升運(yùn)行效率,對(duì)于IO密集型任務(wù)赃梧,最合適的語(yǔ)言就是開(kāi)發(fā)效率高(代碼量少)的語(yǔ)言,腳本語(yǔ)言是首選豌熄,C語(yǔ)言最差
IO密集型任務(wù)線程由于等待IO會(huì)被阻塞授嘀,如果仍然使用等于 CPU核數(shù) 個(gè)線程,CPU是跑不滿的锣险,需要使用更多線程來(lái)提高CPU利用率

總之蹄皱,CPU密集型程序適合C語(yǔ)言多線程,IO密集型的適合腳本語(yǔ)言開(kāi)發(fā)的多線程

3芯肤、多核巷折、多進(jìn)程、多線程
計(jì)算機(jī)的物理核數(shù)是同時(shí)可以并行的線程數(shù)量(CPU看到的都是線程崖咨,線程是CPU調(diào)度分配的最小單位)锻拘,由于超線程技術(shù)(一個(gè)實(shí)體CPU提供兩個(gè)邏輯線程),實(shí)際上可以并行的線程數(shù)量通常是物理核數(shù)的兩倍击蹲,這也是操作系統(tǒng)看到的核數(shù)署拟,所以我們說(shuō)的核數(shù)是操作系統(tǒng)看到的核數(shù),指的是超線程技術(shù)之后的那個(gè)核(不是物理核)
如果計(jì)算機(jī)有多個(gè)CPU核歌豺,且計(jì)算機(jī)中總的線程數(shù)量小于核數(shù)推穷,那線程可以運(yùn)行在不同的核中。
如果是單核多線程类咧,那么多線程之間就不是并行馒铃,而是并發(fā),即為了負(fù)載均衡CPU調(diào)度器會(huì)不斷在單核上切換不同的線程執(zhí)行痕惋,但是我們說(shuō)過(guò)区宇,一個(gè)核只能運(yùn)行一個(gè)線程,所以并發(fā)雖然讓我們看起來(lái)不同線程之間的任務(wù)是并行執(zhí)行的值戳,但實(shí)際上因?yàn)樵黾恿司€程切換的開(kāi)銷使得代價(jià)更大了萧锉。
如果是多核多線程,且線程數(shù)量大于核數(shù)述寡,其中有些線程就會(huì)不斷切換柿隙,并發(fā)執(zhí)行叶洞,但實(shí)際上最大的并行數(shù)量還是CPU的核的數(shù)量。

4禀崖、linux中最大進(jìn)程數(shù)衩辟、最大線程數(shù)
最大進(jìn)程數(shù)
(1)32位系統(tǒng)中最多可以起32768個(gè)進(jìn)程
(2)64位系統(tǒng)中最多可以起2的22次方(4194304)約420萬(wàn)個(gè)

[root@**** ~]$ cat /proc/sys/kernel/pid_max
32768

最大線程數(shù)
其實(shí)最大線程數(shù)量也可以配置無(wú)限大,在資源充足的情況下波附,但一般都有會(huì)默認(rèn)限制

[root@**** ~]$ cat /proc/sys/kernel/threads-max
1543275

正常情況下艺晴,系統(tǒng)默認(rèn)的配置已經(jīng)足夠我們使用,除非想進(jìn)行一些極限性能測(cè)試或者性能優(yōu)化掸屡,這時(shí)候可以根據(jù)具體的情況來(lái)調(diào)整上面提到的幾個(gè)參數(shù)

5封寞、python語(yǔ)言特殊性
CPU是多核時(shí)支持多個(gè)線程同時(shí)執(zhí)行,但在python中仅财,無(wú)論是單核還是多核狈究,一個(gè)進(jìn)程同時(shí)只能由一個(gè)線程在執(zhí)行。根源在于GIL的存在盏求,GIL全稱是Global Interpreter Lock(全局解釋鎖)抖锥,來(lái)源是python設(shè)計(jì)之初的考慮,為了數(shù)據(jù)安全所做的決定碎罚,某個(gè)線程想要執(zhí)行磅废,必須先拿到 GIL,我們可以把 GIL 看作是“通行證”荆烈,并且在一個(gè) Python 進(jìn)程中拯勉,GIL 只有一個(gè),拿不到通行證的線程憔购,就不允許進(jìn)入 CPU 執(zhí)行谜喊,所以多線程在python中很雞肋,多線程的運(yùn)行順序仍是有先后的倦始,并不是同時(shí)進(jìn)行的斗遏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鞋邑,隨后出現(xiàn)的幾起案子诵次,更是在濱河造成了極大的恐慌,老刑警劉巖枚碗,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逾一,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡肮雨,警方通過(guò)查閱死者的電腦和手機(jī)遵堵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人陌宿,你說(shuō)我怎么就攤上這事锡足。” “怎么了壳坪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵舶得,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我爽蝴,道長(zhǎng)沐批,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任蝎亚,我火速辦了婚禮九孩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘发框。我一直安慰自己躺彬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布缤底。 她就那樣靜靜地躺著,像睡著了一般番捂。 火紅的嫁衣襯著肌膚如雪个唧。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天设预,我揣著相機(jī)與錄音徙歼,去河邊找鬼。 笑死鳖枕,一個(gè)胖子當(dāng)著我的面吹牛魄梯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宾符,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼酿秸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了魏烫?” 一聲冷哼從身側(cè)響起辣苏,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哄褒,沒(méi)想到半個(gè)月后稀蟋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呐赡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年退客,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡萌狂,死狀恐怖档玻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情粥脚,我是刑警寧澤窃肠,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站刷允,受9級(jí)特大地震影響冤留,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜树灶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一纤怒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧天通,春花似錦泊窘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至诺祸,卻和暖如春携悯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背筷笨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工憔鬼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胃夏。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓轴或,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親仰禀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子照雁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 現(xiàn)代操作系統(tǒng)比如亥宿,Linux卸勺,Windows等,都是支持“多任務(wù)”的操作系統(tǒng)烫扼。所謂多任務(wù)曙求,指的就是操作系統(tǒng)可以同時(shí)...
    dy2903閱讀 3,506評(píng)論 0 5
  • 1. 操作系統(tǒng)考察點(diǎn) 大部分企業(yè)應(yīng)用跑在 Linux server 上,因此需要具備以下幾點(diǎn): 熟練在 Linux...
    焰火青春閱讀 306評(píng)論 0 0
  • 一、進(jìn)程 1.1 多道程序設(shè)計(jì) 允許多個(gè)程序同時(shí)進(jìn)入內(nèi)存并運(yùn)行悟狱,提高CPU的利用率静浴,目的是提高系統(tǒng)效率 a圖內(nèi)存中...
    JavaEdge閱讀 1,188評(píng)論 0 6
  • 技術(shù)交流QQ群:1027579432,歡迎你的加入挤渐! 歡迎關(guān)注我的微信公眾號(hào):CurryCoder的程序人生 一....
    CurryCoder閱讀 1,424評(píng)論 0 2
  • 1. 基礎(chǔ)知識(shí) 1.1苹享、 基本概念、 功能 馮諾伊曼體系結(jié)構(gòu)1浴麻、計(jì)算機(jī)處理的數(shù)據(jù)和指令一律用二進(jìn)制數(shù)表示2迂猴、順序執(zhí)...
    yunpiao閱讀 5,305評(píng)論 1 22