[置頂] 進(jìn)程和線程的區(qū)別
來源:程序員人生 發(fā)布時(shí)間:2016-09-12 15:43:43 閱讀次數(shù):2645次
1、進(jìn)程和線程的區(qū)分?
解析:(1)進(jìn)程是資源的分配和調(diào)度的1個(gè)獨(dú)立單元,而線程是CPU調(diào)度的基本單元
(2)同1個(gè)進(jìn)程中可以包括多個(gè)線程,并且線程同享全部進(jìn)程的資源(寄存器、堆棧、上下文),1個(gè)進(jìn)行最少包括1個(gè)線程。
(3)進(jìn)程的創(chuàng)建調(diào)用fork或vfork,而線程的創(chuàng)建調(diào)用pthread_create,進(jìn)程結(jié)束后它具有的所有線程都將燒毀,而線程的結(jié)束不會(huì)影響同個(gè)進(jìn)程中的其他線程的結(jié)束
(4)線程是輕兩級的進(jìn)程,它的創(chuàng)建和燒毀所需要的時(shí)間比進(jìn)程小很多,所有操作系統(tǒng)中的履行功能都是創(chuàng)建線程去完成的
(5)線程中履行時(shí)1般都要進(jìn)行同步和互斥,由于他們同享同1進(jìn)程的所有資源
(6)線程有自己的私有屬性TCB,線程id,寄存器、硬件上下文,而進(jìn)程也有自己的私有屬性進(jìn)程控制塊PCB,這些私有屬性是不被同享的,用來標(biāo)示1個(gè)進(jìn)程或1個(gè)線程的標(biāo)志
2、死鎖?死鎖產(chǎn)生的緣由?死鎖的必要條件?怎樣處理死鎖?
解析:(--)相互等待資源而產(chǎn)生的1種僵持狀態(tài),如果沒有外力的干預(yù)將1直延續(xù)這個(gè)狀態(tài)
(--)系統(tǒng)資源不足、相互競爭資源、要求資源順序不當(dāng)
(2)互斥、不可搶占、循環(huán)等待、要求與保持
(3)由于互斥是不可改變的,所以只能破壞其他3個(gè)條件中的1個(gè)來消除死鎖,方法:剝奪資源、殺死其中1個(gè)線程
3、Windows內(nèi)存管理方式:段存儲、頁存儲、段頁存儲
解析:
4、進(jìn)程的幾種狀態(tài)?
解析:(1)run(運(yùn)行狀態(tài)):正在運(yùn)行的進(jìn)程或在等待隊(duì)列中對待的進(jìn)程,等待的進(jìn)程只要以得到cpu就能夠運(yùn)行
(2)Sleep(可中斷休眠狀態(tài)):相當(dāng)于阻塞或在等待的狀態(tài)
(3)D(不可中斷休眠狀態(tài)):在磁盤上的進(jìn)程
(4)T(停止?fàn)顟B(tài)):這中狀態(tài)沒法直觀的看見,由于是進(jìn)程停止后就釋放了資源,所以不會(huì)留在linux中
(5)Z(僵尸狀態(tài)):子進(jìn)程先與父進(jìn)程結(jié)束,但父進(jìn)程沒有調(diào)用wait或waitpid來回收子進(jìn)程的資源,所以子進(jìn)程就成了僵尸進(jìn)程,如果父進(jìn)程結(jié)束后任然沒有回收子進(jìn)程的資源,那末1號進(jìn)程將回收
5、IPC通訊方式?
解析:(1)管道(匿名管道(pipe親緣關(guān)系的進(jìn)程通訊)、命名管道(mkfifo/mknod))
(2)消息隊(duì)列:是基于消息的、用無親緣關(guān)系的進(jìn)程間通訊,主要函數(shù):msgget、msgsend、msgrecv、msgctl
(3)信號量:相當(dāng)于1把互斥鎖,通過p、v操作,主要函數(shù):semget、semop、semctl
(4)同享內(nèi)存:是進(jìn)程間通訊速度最快的,所以用常常是集合信號量或互斥鎖來實(shí)現(xiàn)同步,shmget、shmat、shmdt、shmctl
6、甚么是虛擬內(nèi)存?
解析:是將進(jìn)程部份裝入內(nèi)存中,從而能實(shí)現(xiàn)1個(gè)很大的程序能在1個(gè)比它小的內(nèi)存中運(yùn)行,它的主要實(shí)現(xiàn)是靠程序的換進(jìn)換出來實(shí)現(xiàn)的,由于內(nèi)存中0~3G是用戶使用,3~4G才是內(nèi)存使用,通過映照來實(shí)現(xiàn)來進(jìn)行邏輯地址到物理地址的映照
7、虛擬地址、邏輯地址、線性地址、物理地址的區(qū)分?
解析: 分段機(jī)制把1個(gè)邏輯地址轉(zhuǎn)換為線性地址;接著,分頁機(jī)制把1個(gè)線性地址轉(zhuǎn)換為物理地址。
(1)虛擬地址:虛擬內(nèi)存映照出來的地址
(2)邏輯地址:程序的段加偏移量構(gòu)成的,C/C++程序中取地址求出來的地址就是邏輯地址
(3)線性地址:是邏輯地址到物理地址的中間層,只有啟動(dòng)分頁機(jī)制的時(shí)候才有線性地址,如果沒有分頁機(jī)制,那末線性地址就是物理地址
(4)物理地址:是內(nèi)存中實(shí)實(shí)在在存在的硬件地址,
邏輯地址(啟動(dòng)分段)--》線性地址(啟動(dòng)分頁)--》物理地址
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)