qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

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

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

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


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2013年10月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 安宁市| 清水河县| 左权县| 榆林市| 酉阳| 万州区| 新闻| 大丰市| 绥江县| 土默特右旗| 柳江县| 鹤庆县| 静海县| 丹阳市| 黎川县| 枝江市| 延津县| 綦江县| 揭东县| 绥宁县| 长兴县| 二连浩特市| 巫溪县| 德惠市| 东城区| 遵义县| 遂川县| 青阳县| 辽宁省| 辛集市| 娄底市| 迁西县| 阆中市| 赤峰市| 内黄县| 水富县| 蒲城县| 安远县| 襄樊市| 茂名市| 水城县|