2019面試第二彈(關(guān)于線程和進(jìn)程)

2019面試第二彈(關(guān)于線程和進(jìn)程)

1.復(fù)習(xí)多線程?

同步與互斥

互斥:在多線程條件下,多個(gè)線程,獨(dú)占性的,排他性的 訪問(wèn)臨界資源

同步:是指在互斥的基礎(chǔ)上(大多數(shù)情況),通過(guò)其它機(jī)制實(shí)現(xiàn)訪問(wèn)者對(duì)資源的有序訪問(wèn)。同步已經(jīng)實(shí)現(xiàn)了互斥,特別是所有寫(xiě)入資源的情況必定是互斥的。少數(shù)情況是指可以允許多個(gè)訪問(wèn)者同時(shí)訪問(wèn)資源。

首先,線程是資源調(diào)度的基本單位。

同步與異步

同步:線程訪問(wèn)臨界資源時(shí),阻塞的訪問(wèn)臨界資源。

異步:線程在訪問(wèn)臨界資源時(shí)不會(huì)被阻塞

2.線程與進(jìn)程

線程 進(jìn)程 備注
主要區(qū)別 線程是調(diào)度的基本單位 進(jìn)程是分配資源的基本單位
分配資源 1.線程ID 2.PCB控制塊3.上下文信息 1.線程有的進(jìn)程都有 2.自己的頁(yè)表
操作系統(tǒng)看兩者 線程沒(méi)有子線程這一說(shuō),所有線程都是對(duì)等的 進(jìn)程有子進(jìn)程和父進(jìn)程,子進(jìn)程得到的是除了代碼段是與父進(jìn)程共享的意外,其他所有的都是得到父進(jìn)程的一個(gè)副本,子進(jìn)程的所有資源都繼承父進(jìn)程,得到父進(jìn)程資源的副本,既然為副本,也就是說(shuō),二者并不共享地址空間。兩個(gè)是單獨(dú)的進(jìn)程,繼承了以后二者就沒(méi)有什么關(guān)聯(lián)了,子進(jìn)程單獨(dú)運(yùn)行。(采用寫(xiě)時(shí)復(fù)制技術(shù))父進(jìn)程會(huì)回收子進(jìn)程的資源. 在Linux操作系統(tǒng)中,操作系統(tǒng)在執(zhí)行起來(lái)時(shí)其實(shí)是無(wú)法來(lái)判斷當(dāng)前

3.僵尸進(jìn)程,孤兒進(jìn)程,守護(hù)進(jìn)程

僵尸進(jìn)程:一個(gè)父進(jìn)程利用fork創(chuàng)建子進(jìn)程,如果子進(jìn)程退出,而父進(jìn)程沒(méi)有用wait()或者waitpid()來(lái)獲取子進(jìn)程的狀態(tài)信息,那么子進(jìn)程的狀態(tài)依然被操作系統(tǒng)管理

孤兒進(jìn)程:一個(gè)父進(jìn)程退出而它的子進(jìn)程仍然還在運(yùn)行,那么這些子進(jìn)程會(huì)編程孤兒進(jìn)程,孤兒進(jìn)程將被1號(hào)進(jìn)程所領(lǐng)養(yǎng)

守護(hù)進(jìn)程:(網(wǎng)上有一種說(shuō)法把守護(hù)進(jìn)程叫做“服務(wù)”,也就是windows服務(wù)列表跑的程序)守護(hù)進(jìn)程是后臺(tái)的特殊進(jìn)程在系統(tǒng)啟動(dòng)時(shí)啟動(dòng),完成任務(wù)后自動(dòng)退出。

4.關(guān)于java的進(jìn)程

在java中也可以創(chuàng)建進(jìn)程,不過(guò)很少使用,大部分在java中用線程Java.lang.Process。java程序運(yùn)行默認(rèn)開(kāi)兩個(gè)線程,主線程和jvm虛擬線程.

5.進(jìn)程間通信

管道,F(xiàn)IFO,信號(hào)量,共享內(nèi)存,socket (學(xué)java的表示真沒(méi)操作過(guò)進(jìn)程,線程倒是有各種方式操做,所以這個(gè)問(wèn)題一般我只接回答不會(huì))

6.虛擬地址空間

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容