面試題總結——第2篇

4.進程?    

進程=程序段+數據段+進程控制段

1)進程是一個運行起來的程序,程序在運行的時候需要加載到內存,進程是操作系統資源分配的基本單位

2)進程在linux下就是也可以說是一個PCB(進程控制塊),實際上是一個task_struct結構體,底層實現上是一個雙向鏈表 ps -ef(查看所有標準進程)

3)標識符(PID),狀態(殭屍"資源泄漏"、運行、停止、可中斷/不可中斷睡眠),優先級,上下文數據,內存指針、程序計數器(即將執行的下一條指令的地址)

 

fork()    exit()    wait()//進程等待 防止殭屍進程產生的主要方式    

進程程序替換(創建子進程的主要目的是分流)

進程間通信(system V環境下)pipe fifo shm msg sem

 

5.線程?   

一個程序的一個執行路線叫做線程

1)線程是一個進程內部的控制序列,任何一個進程至少有一個執行路線,將進程的資源合理的分配給每個執行流,就形成了線程執行流

2)Linux下的線程都是用進程PCB模擬的(輕量化線程),線程是CPU調度的基本單位

 

Linux下線程共用進程的虛擬地址空間優缺:

優:線程的創建/銷燬成本低,切換調度成本低,線程之間通信方便

缺:線程安全(缺乏訪問控制)【通過互斥鎖/條件變量來解決】,對臨界資源的訪問容易導致數據混亂,系統調用會對整個進程產生影響

 

線程共享:文件狀態表、信號處理方式、工作目錄

線程獨有:上下文數據、線程id,全局變量

 

6.TCP/UDP?

UDP:無連接,面向數據報,不可靠傳輸,無法保證包序,適用於對傳輸速度高而對傳輸準確性要求相對較低的場景(音視頻)

TCP(畫報頭):有連接,面向字節流,相對比較可靠的傳輸

三次握手,四次揮手

滑動窗口(優化確認應答機制),流量控制,擁塞控制(慢啓動),延遲應答,捎帶應答

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章