操作系统之常考面试题
操作系統之常考面試題
目錄:
注:在牛客上復習java摘錄的,便于自己復習。
地址連接:https://www.nowcoder.com/tutorial/94/a9220944ad014f55be4015c19247af91
1. 操作系統概述
談談,64位和32位的區別?
參考回答:
操作系統只是硬件和應用軟件中間的一個平臺。32位操作系統針對的32位的CPU設計。64位操作系統針對的64位的CPU設計。
談談,CentOS 和 Linux的關系?
參考答案:
CentOS是Linux眾多得發行版本之一,linux有三大發行版本(:Slackware、debian、redhat),而Redhat有收費的商業版和免費的開源版,商業版的業內稱之為RHEL系列,CentOS是來自于依照開放源代碼規定而公布的源代碼重新編譯而成。可以用CentOS替代商業版的RHEL使用。兩者的不同,CentOS不包含封閉源代碼軟件,是免費的。
2. 進程的描述與控制
請解釋一下,LINUX下的線程,GDI類
參考回答:
LINUX實現的就是基于核心輕量級進程的”一對一”線程模型,一個線程實體對應一個核心輕量級進程,而線程之間的管理在核外函數庫中實現。
GDI類為圖像設備編程接口類庫。
2. 進程和線程的區別是什么?(重點)
3. 談一談,系統線程數量上限是多少?
參考回答:
Linux 系統中單個進程的最大線程數有其最大的限制 PTHREAD_THREADS_MAX。
這個限制可以在/usr/include/bits/local_lim.h中查看 ,對 linuxthreads 這個值一般是 1024,對于 nptl 則沒有硬性的限制,僅僅受限于系統的資源。
這個系統的資源主要就是線程的 stack 所占用的內存,用 ulimit -s 可以查看默認的線程棧大小,一般情況下,這個值是8M=8192KB。
(普通用戶最大線程數為1024,root用戶沒有限制)
請問,如何殺死一個進程?
參考回答:
Kill pid
3. 存儲器管理
你怎么理解操作系統里的內存碎片,有什么解決辦法?
參考回答:
內存碎片分為:內部碎片和外部碎片。
內部碎片就是已經被分配出去(能明確指出屬于哪個進程)卻不能被利用的內存空間;
內部碎片是處于區域內部或頁面內部的存儲塊。占有這些區域或頁面的進程并不使用這個存儲塊。而在進程占有這塊存儲塊時,系統無法利用它。直到進程釋放它,或進程結束時,系統才有可能利用這個存儲塊。
單道連續分配只有內部碎片。多道固定連續分配既有內部碎片,又有外部碎片。
外部碎片指的是還沒有被分配出去(不屬于任何進程),但由于太小了無法分配給申請內存空間的新進程的內存空閑區域。
外部碎片是出于任何已分配區域或頁面外部的空閑存儲塊。這些存儲塊的總和可以滿足當前申請的長度要求,但是由于它們的地址不連續或其他原因,使得系統無法滿足當前申請。
使用伙伴系統算法。
介紹一下,什么是頁式存儲?
參考回答:
主存被等分成大小相等的片,稱為主存塊,又稱為實頁。
當一個用戶程序裝入內存時,以頁面為單位進行分配。頁面的大小是為2n ,通常為1KB、2KB、2n KB等
4. 處理調度與死鎖
請談一談,系統如何提高并發性?
考察:操作系統綜合性
參考回答:
1、提高CPU并發計算能力
(1)多進程&多線程
(2)減少進程切換,使用線程,考慮進程綁定CPU
(3)減少使用不必要的鎖,考慮無鎖編程
(4)考慮進程優先級
(5)關注系統負載
2、改進I/O模型
(1)DMA技術
(2)異步I/O
(3)改進多路I/O就緒通知策略,epoll
(4)Sendfile
(5)內存映射
(6)直接I/O
2. 請談一談,什么情況下會發生死鎖?解決死鎖的策略有哪些?(重點)
什么是死鎖?
死鎖是指兩個或兩個以上的進程在執行過程中,由于競爭資源或者由于彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處于死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。
死鎖的四個必要條件
互斥條件(Mutual exclusion):資源不能被共享,只能由一個進程使用。
請求與保持條件(Hold and wait):已經得到資源的進程可以再次申請新的資源。
不剝奪條件(No pre-emption):已經分配的資源不能從相應的進程中被強制地剝奪。
循環等待條件(Circular wait):系統中若干進程組成環路,該環路中每個進程都在等待相鄰進程正占用的資源。
處理死鎖的策略
1.死鎖預防。如進程需要的所有資源,在一開始就全部申請好得到之后再開始執行。
2.死鎖避免。如進程每次申請申請資源的時候,根據一定的算法(銀行家算法),去看該請求可不可能造成死鎖,如果可能,就不給它分配該資源。
3.死鎖處理。破壞四個必要條件的其中一個,比如kill掉一個進程。
4.死鎖忽略。
總結
以上是生活随笔為你收集整理的操作系统之常考面试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GC之G1垃圾收集器
- 下一篇: java信息管理系统总结_java实现科