操作系統(tǒng)面試題-3
??济嬖囶}
說說你對進程的理解???
程序是指令、數(shù)據(jù)及其組織形式的描述,而進程則是程序的運行實例,包括程序計數(shù)器、寄存器和變量的當(dāng)前值。
Linux的進程結(jié)構(gòu),一般分為三部分:代碼段、數(shù)據(jù)段(.data與.bss)和堆棧段。
代碼段用于存放程序代碼,如果有多個進程運行相同的一個程序,那么它們可以使用同一個代碼段。代碼段還會存儲一部分常量,如字符串常量字面值。
數(shù)據(jù)段則存放程序的全局變量和靜態(tài)變量。
堆棧段中的棧用于函數(shù)調(diào)用,存放著函數(shù)的參數(shù)、局部變量。
進程有哪五種狀態(tài),如何轉(zhuǎn)換??????
進程有五種狀態(tài):創(chuàng)建、就緒、執(zhí)行、阻塞、終止。
答案解析
創(chuàng)建狀態(tài)
一個應(yīng)用程序從系統(tǒng)上啟動,首先就是進入創(chuàng)建狀態(tài),需要獲取系統(tǒng)資源創(chuàng)建進程管理塊(PCB:Process Control Block)完成資源分配。就緒狀態(tài)
在創(chuàng)建狀態(tài)完成之后,進程已經(jīng)準(zhǔn)備好,處于就緒狀態(tài),但是還未獲得處理器資源,無法運行。運行狀態(tài)
獲取處理器資源,被系統(tǒng)調(diào)度,當(dāng)具有時間片開始進入運行狀態(tài)。如果進程的時間片用完了就進入就緒狀態(tài)。阻塞狀態(tài)
在運行狀態(tài)期間,如果進行了阻塞的操作,如耗時的I/O操作,此時進程暫時無法操作就進入到了阻塞狀態(tài),在這些操作完成后就進入就緒狀態(tài)。等待再次獲取處理器資源,被系統(tǒng)調(diào)度,當(dāng)具有時間片就進入運行狀態(tài)。終止?fàn)顟B(tài)
進程結(jié)束或者被系統(tǒng)終止,進入終止?fàn)顟B(tài)請你說說Linux的fork的作用?????
fork函數(shù)用來創(chuàng)建一個子進程。對于父進程,fork()函數(shù)返回新創(chuàng)建的子進程的PID。對于子進程,fork()函數(shù)調(diào)用成功會返回0。如果創(chuàng)建出錯,fork()函數(shù)返回-1。
答案解析
fork()函數(shù),其原型如下:
#include <unistd.h> pid_t fork(void);
fork()函數(shù)不需要參數(shù),返回值是一個進程標(biāo)識符PID。返回值有以下三種情況:
(1) 對于父進程,fork()函數(shù)返回新創(chuàng)建的子進程的PID。
(2) 對于子進程,fork()函數(shù)調(diào)用成功會返回0。
(3) 如果創(chuàng)建出錯,fork()函數(shù)返回-1。fork()函數(shù)創(chuàng)建一個新進程后,會為這個新進程分配進程空間,將父進程的進程空間中的內(nèi)容復(fù)制到子進程的進程空間中,
剩余60%內(nèi)容,訂閱專欄后可繼續(xù)查看/也可單篇購買
<p> - 本專刊適合于C/C++已經(jīng)入門的學(xué)生或人士,有一定的編程基礎(chǔ)。 - 本??m合于互聯(lián)網(wǎng)C++軟件開發(fā)、嵌入式軟件求職的學(xué)生或人士。 - 本??依薈語言、C++、操作系統(tǒng)、計算機網(wǎng)絡(luò)、嵌入式、算法與數(shù)據(jù)結(jié)構(gòu)等一系列知識點的講解,并且最后總結(jié)出了高頻面試考點(附有答案)共近400道,知識點講解全面。不僅如此,教程還講解了簡歷制作、筆試面試準(zhǔn)備、面試技巧等內(nèi)容。 </p> <p> <br /> </p>