一、描述一下進程和線程有啥區別?
1、進程是操作系統資源分配的基本單位,線程是任務調度和執行的基本單位
2、進程有自己的獨立地址空間,每啟動一個進程,系統就會為器分配地址空間,建立數據表來維護代碼段、堆棧段和數據段;但是線程沒有獨立的地址空間,它使用相同的地址空間共享數據
3、cpu切換一個線程比切換進程花費??;創建一個線程比進程開銷??;線程占用的資源要進程少很多
4、線程之間通信更加方便;線程共享全局變量、靜態變量等數據,進程之間需要ipc來通信(管道、socked、 信號量、 信號、 共享內存)
5、多進程的程序更加安全,生命力更強,一個進程死掉不會對另一個進程造成影響(源于它有獨立的地址空間);多線程程序更不容易維護,一個線程死掉了,整個進程就死掉了(因為共享地址空間)
二、解釋一下虛擬內存里面的分段與分頁機制?
1、分段機制:
(1)什么是分段機制?
分段機制就是把虛擬地址空間(也叫邏輯地址空間)中的虛擬內存組織成一些長度可變的稱為段的內存塊單元。
(2)什么是段?
每個段由三個參數定義:段基地址、段限長、段屬性。段的基地址、段限長以及段的保護屬性存儲在一個稱為段描述符的結構項中
(3)段的作用?
段可以用來存放程序的代碼、數據、堆棧、或者用來存放系統數據結構
(4)段的存儲地址?
系統中所有使用的段包括在處理器線性地址空間中。
(5)段選擇符?
邏輯地址包含一個段選擇符和一個偏移量,段選擇符是一個段的唯一標識,它提供了段描述符表,段描述符表指明段的大小和類型、訪問權限和段的特權級、以及段的第一個字節在線性地址空間中的位置(稱為段的基地址);邏輯地址的偏移量部分到段的基地址上就可以定位段中某個字節的位置。因此基地址加上偏移量就形成了處理器線性地址空間中的地址
2、分頁機制:
(1)什么是分頁機制?
分頁機制在分段機制之后進行的,它是進一步把線性地址轉換成物理地址。
(2)分頁機制的存儲?
分頁機制支持虛擬存儲技術,在使用虛擬存儲的環境中,大容量的線性地址空間需要使用小塊的物理內存(RAM或者ROM)以及某些外部存儲空間來模擬;當使用分頁時,每個段被劃分成頁面(通常每頁為4K大?。?,頁面為被存儲于物理內存中或者硬盤中。操作系統通過維護一個頁目錄和一些頁表來留意這些頁面;當程序試圖訪問線性地址空間中的一個地址位置時,處理器就會使用頁目錄和頁表把線性地址轉換成一個物理地址,然后在該內存位置上執行所要的操作。
(3)分段機制與分頁機制的區別?
--分頁機制會使用固定的內存塊大小,而分段機制使用大小可變的塊內存大小.
--分頁使用固定大小的塊更適合管理物理內存,而分段機制使用大小可變的塊更適合處理復雜系統的邏輯分區
--段表存儲存儲在線性地址空間,而頁表則保存在物理地址空間
注:具體過程實現可以看<深入理解計算機操作系統>和
三、手寫memcpy、strcpy函數功能實現
1、手寫strcpy:
(1):
voidstrcpy(char*strDest,char*strSrc)
{
while((*strDest++=*strSrc++)!='');
}
(2):
voidstrcpy(char*strDest,constchar*strSrc)
{
while((*strDest++=*strSrc++)!='');
}
(3):
char*strcpy(char*strDest,constchar*strSrc)
{
assert((strDest!=NULL)&&(strSrc!=NULL));
char*address=strDest;
while((*strDest=*strSrc++)!='')
returnaddress
}
2、手寫memcpy:
1)不考慮拷貝覆蓋問題
void*sky_memecpy(void*dst,constvoid*str,intn)
{
if(NULL==dst||NULL==str||n<=0){
returnNULL;
}
char*pdst=(char*)dst;
char*pstr=(char*)str;
while(n--){
*pdst++=*pstr++;
}
returndst;
}
2)考慮拷貝覆蓋問題
void*sky_memecpy(void*dst,constvoid*str,intn)
{
if(NULL==dst||NULL==str||n<=0){
returnNULL;
}
char*pdst=(char*)dst;
char*pstr=(char*)str;
if(pdst>pstr&&pdst
pstr=pstr+n-1;
while(n--){
*pdst--=*pstr--;
}
}else{
while(n--){
*pdst++=*pstr++;
}
}
returndst;
}
四、小結:
以上答案僅供參考,都是一些面試官高頻喜歡問的題目!文中的提到的兩本書,可以在后臺領??!
好了,今天的分享就到這里,如果文章中有錯誤或者不理解的地方,可以交流互動,一起進步。我是txp,下期見!
Copyright C 2015-2020 All Rights Reserved 版權所有 德清人才網
浙ICP備07508265號-27
網安備案號:33011002012955
地址:浙江省杭州市余杭區博園西路7號8樓 EMAIL:service@hzdqrc.com
ICP經營許可證:浙B2-20200349 人力資源證: 330110202105080088號
Powered by 德清人才網.