qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          操作系統常見面試題(答案僅供參考)

           操作系統常見面試題(答案僅供參考)
            1.CPU在上電后,進入操作系統的main()之前必須做什么?
            加電后,會觸發CPU的reset信號,導致CPU復位,然后CPU會跳到(arm下0x00000000,x86下0xfffffff0)執行指令.主 要是做CPU初始化,確定CPU的工作模式,mmu初始化。建立頁表段表,初始化中孤單控制器和中斷向量表,初始化輸入和輸出,初始化 nandflash,把OS的TEXT區加載到sdram,然后跳轉到sdram的main()
            2.什么是中斷?中斷時CPU做什么工作?
            中斷是指在計算機執行期間,系統內發生任何非尋常的或非預期的急需處理事件,使得CPU暫時中斷當前正在執行的程序而轉去執行相應的事件處理程序。待處理完畢后又返回原來被中斷處繼續執行或調度新的進程執行的過程。
            3.簡術ISO OSI的物理層Layer1,鏈路層Layer2,網絡層Layer3的任務。
            網絡層:資料傳送的目的地尋址,再選擇出傳送資料的最佳路線;
            鏈路層:負責網絡上資料封包如何傳送的方式;
            物理層:在設備與傳輸媒介之間建立及終止連接。參與通訊過程使得資源可以在共享的多用戶中有效分配,對信號進行調制或轉換使得用戶設備中的數字信號定義能與信道上實際傳送的數字信號相匹配
            4.makefile文件的作用是什么?
            一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要后 編譯,哪些文件需要重新編譯,甚至于進行更復雜的功能操作,因為 makefile就像一個Shell腳本一樣,其中也可以執行操作系統的命令。makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個 make命令,整個工程完全自動編譯,極大的提高了軟件開發的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大 多數的IDE都有這個命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可見,makefile都成為了一種在工程方面的編譯方法。
            5.UNIX顯示文件夾中文件名的命令是什么?能使文件內容顯示在屏幕的命令是什么?
            ls cat
            type tail
            6.Linux文件屬性有哪些?(共十位)
            -rw-r--r—1
            第一個屬性代表這個文件是【目錄、文件或連結文件】,當為[ d ]則是目錄,為[ - ]則是文件,若是[ l ]則表示為連結檔(link file);
            若是[ b ]則表示為裝置文件里面的可供儲存的接口設備;
            若是[ c ]則表示為裝置文件里面的串行端口設備,例如鍵盤、鼠標。
            接下來的屬性中,三個為一組,且均為【rwx】三個參數的組合,其中[r]代可讀、
            [w]代表可寫、[x]代表可執行:
            第一組為【擁有人的權限】,
            第二組為【同群組的權限】;
            第三組為【其它非本群組的權限】。
            7.Linux中常用到的命令
            顯示文件目錄命令ls
            改變當前目錄命令cd  如cd / /home
            建立子目錄mkdir  mkdir xiong
            刪除子目錄命令rmdir  如 rmdir /mnt/cdrom
            刪除文件命令RM  如 rm /ucdos.bat
            文件復制命令cp   如 cp /ucdos/* /fox
            獲取幫助信息命令man 如 man ls
            顯示文件的內容less 如 less mwm.lx
            重定向與管道type 如type  readme>>direct,將文件readme的內容追加到文direct中
            8.進程通信有哪些方式?
            管道通信、消息通信、內存共享
            9.說說分段和分頁。
            頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由于系統管理的需要,而不是用戶的需要。
            段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好的滿足用戶的需要。頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內 地址兩部分,是由機器硬件實現的,因而一個系統只能有一種大小的頁面。 段的長度卻不固定,決定于用戶所編寫的程序,通常由編輯程序在對源程序進行編輯時,根據信息的性質來劃分。
            分頁的作業地址空間是維一的,即單一的線性空間,程序員只須利用一個記憶符,即可表示一地址。分段的作業地址空間是二維的,程序員在標識一個地址時,既需給出段名,又需給出段內地址
          10.什么是進程和線程?有何區別?
            線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.
            線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源.一個線程可以創建和撤銷另一個線程;同一個進程中的多個線程之間可以并發執行.
            11.Windows下的內存是如何管理的?
            Window操縱內存可以分兩個層面:物理內存和虛擬內存。
            其中物理內存由系統管理,不允許應用程序直接訪問,應用程序可見的只有一    個2G地址空間,而內存分配是通過堆進行的,對于每個進程都有自己的默認堆,當一個堆創建后,就通過虛擬內存操作保留了相應大小的地址塊(不占有實際的內 存,系統消耗很小),當在堆上分配一塊內存時,系統在堆的地址表里找到一個空閑塊(如果找不到,且堆創建屬性是可擴充的,則擴充堆大小)為這個空閑塊所包 含的所有內存頁提交物理對象(物理內存上或硬盤上的交換文件上)。這時可以就訪問這部分地址了。提交時,系統將對所有進程的內存統一調配,如果物理內存不 夠,系統試圖把一部分進程暫時不訪問的頁放入交換文件,以騰出部分物理內存。釋放內存時,只在堆中將所在的頁解除提交(相應的物理對象被解除),繼續保留 地址空間。
            如果要知道某個地址是否被占用/可不可以訪問,只要查詢此地址的虛擬內存狀VirtualQuery),如果是提交,則可以訪問。如果僅僅保留,或沒保留,則產生一 個  軟件異常。此外有些內存頁可以設置各種屬性。如果是只讀,向內寫也會產生軟件異常
            12.操作系統的內容分為幾塊?什么叫做虛擬內存?優點管理屬于操作系統的內容嗎?
            13.進程是一個比較重要的概念,那么進程有哪幾種狀態?
            基本狀態有3種,即ready(就緒),running(運行),wait(等待).
            14.說出你所知道的保持進程同步的方法?
            進程間同步的主要方法有內存屏障,互斥鎖,信號量和鎖,管程,消息,管道
            15.OS中如何實現物理地址到邏輯志址的轉換?
            16.解釋一下分頁式管理。
            用戶程序的地址空間被劃分成若干固定大小的區域,稱為“頁”,相應地,內存空間分成若干個物理塊,頁和塊的大小相等。可將用戶程序的任一頁放在內存的任一塊中,實現了離散分配.
            17.什么是死鎖,其條件是什么?怎么避免死鎖?
            死鎖是指,在兩個或多個并發進程中,如果每個進程持有某種資源而又都等待別的進程釋放它們現在保持著的資源,否則就不能向前推進.此時,每個進程都占用了 一定的資源但是又不能向前推進,稱這一組進程產生了死鎖. 通俗的講,就是兩個或多個進程無止境的等候著永遠不會成立的條件的一種系統狀態. 其條件是為
            1.互斥:存在這樣一種資源,它在某個時刻只能被分配給一個執行緒使用;
            2.持有:當請求的資源已被占用從而導致執行緒阻塞時,資源占用者不但無需釋放該資源,而且還可以繼續請求更多資源;
            3.不可剝奪:執行緒獲得到的互斥資源不可被強行剝奪,換句話說,只有資源占用者自己才能釋放資源;
            4.環形等待:若干執行緒以不同的次序獲取互斥資源,從而在由多個執行緒組成的環形鏈中,每個執行緒都在等待下一個執行緒釋放它持有的資源。
            避免死鎖:按順序訪問,事務最小化
            18.什么是緩沖區溢出?有什么危害?其原因是什么?
            緩沖區溢出是指當計算機向緩沖區內填充數據位數時超過了緩沖區本身的容量溢出的數據覆蓋在合法數據上,
            危害:在當前網絡與分布式系統安全中,被廣泛利用的50%以上都是緩沖區溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕蟲。而緩沖區溢出 中,最為危險的是堆棧溢出,因為入侵者可以利用堆棧溢出,在函數返回時改變返回程序的地址,讓其跳轉到任意地址,帶來的危害一種是程序崩潰導致拒絕服務, 另外一種就是跳轉并且執行一段惡意代碼,比如得到shell,然后為所欲為。
            通過往程序的緩沖區寫超出其長度的內容,造成緩沖區的溢出,從而破壞程序的堆棧,使程序轉而執行其它指令,以達到攻擊的目的。造成緩沖區溢出的原因是程序中沒有仔細檢查用戶輸入的參數
            19.什么是臨界區?如何解決沖突?
            每個進程中訪問臨界資源的那段程序稱為臨界區,每次只準許一個進程進入臨界區,進入后不允許其他進程進入。
            ① 如果有若干進程要求進入空閑的臨界區,一次僅允許一個進程進入。
            ② 任何時候,處于臨界區內的進程不可多于一個。如已有進程進入自己的臨界區,則其它所有試圖進入臨界區的進程必須等待。
            ③ 進入臨界區的進程要在有限時間內退出,以便其它進程能及時進入自己的臨界區。
            ④ 如果進程不能進入自己的臨界區,則應讓出CPU,避免進程出現“忙等”現象。
            20.解釋一下P操作與V操作
            P就是請求資源,V就是釋放資源
            21.中斷和輪詢的特點。

          posted on 2013-10-17 11:10 順其自然EVO 閱讀(535) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2013年10月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 贡山| 淮北市| 麻栗坡县| 临洮县| 日喀则市| 垦利县| 霍州市| 宜都市| 巴马| 九台市| 云霄县| 霍邱县| 沾益县| 彩票| 财经| 天祝| 阿克陶县| 阿图什市| 宝鸡市| 自治县| 安阳市| 德安县| 延寿县| 阿拉尔市| 临夏县| 永新县| 泊头市| 双流县| 怀远县| 绥德县| 调兵山市| 富顺县| 延庆县| 灵山县| 正定县| 鄂伦春自治旗| 闵行区| 韶山市| 咸宁市| 理塘县| 钦州市|