1.介紹一下虛擬地址,虛擬地址是怎么映射到物理地址的?
虛擬地址是指在采用虛擬存儲管理的操作系統中,進程訪問內存時所使用的地址。每個進程都有獨立的虛擬地址空間,虛擬地址通過操作系統和硬件(如MMU,內存管理單元)映射到實際的物理內存地址。這樣可以實現內存保護、空間隔離和更高效的內存管理,同時也方便了進程的內存擴展和遷移。
?2.Linux用的是頁式還是段式還是段頁式?
Linux主要采用的是頁式管理,即通過分頁機制進行內存管理。雖然在硬件層面(如x86架構)支持段頁式管理,但Linux實際中只使用最基本的段機制來劃分用戶空間和內核空間,內存的分配和管理主要依賴于分頁(頁表)實現。
?3.TCP第一次握手后發送方的狀態是什么?
TCP三次握手過程中,第一次握手后(即發送方發送SYN報文并等待對方確認時),發送方的狀態是SYN_SENT(同步已發送)狀態。
?4.網絡連接下,把網線斷開,會變成什么狀態?
在網絡連接過程中,如果把網線斷開,操作系統通常會檢測到鏈路斷開,網絡接口會變為斷開(down)狀態,TCP連接則可能進入超時重傳,最終會因為無法收到對方響應而進入CLOSED(關閉)狀態。
5.TCP的Keepalive?
TCP的Keepalive(保活)是一種機制,用于檢測長時間空閑的TCP連接是否仍然可用。它通過在連接空閑一段時間后,周期性地發送探測報文,如果對方沒有響應,經過多次重試后會認為連接已斷開,從而釋放資源。Keepalive常用于防止死連接和及時發現網絡異常。
?6.什么時候會內存泄漏
內存泄漏通常發生在程序動態分配了內存(如使用
malloc
、new
等)后,未能及時釋放(如未調用free
、delete
),導致這部分內存無法被再次使用和回收。當指向這塊內存的指針丟失或被覆蓋,但內存還未釋放時,就會產生內存泄漏。常見于長時間運行的程序或服務中,可能導致系統內存耗盡。