進程fork應用解析

【1】什麼是進程?編程

  進程是一個正在運行的程序。安全

【2】pcb是什麼?有什麼做用?數據結構

  pcb是進程控制塊,他包含了進程各類信息,是一個數據結構類型。系統能夠根據PCB來實現對進程的控制和管理,PCB是進程惟一的標誌。併發

【3】內存的分頁管理,頁表是什麼?在程序中咱們使用的是邏輯地址仍是物理地址?引入虛擬內存後對程序的執行有什麼影響?函數

  頁表是爲了實現地址映射而實現的,能在內存中找到每一個頁面所對應的物理塊。邏輯地址。更安全,能夠加快電腦的運行速度測試

【4】在程序中malloc申請1G內存能不能成功?判斷依據是什麼?spa

  能,由於內存中malloc申請的空間在堆上,對向上開闢,用戶空間最大爲3G,除去棧等等還有2G空間,徹底夠malloc1G內存大小。操作系統

在Linux上測試了一下,malloc1.9G==》成功  malloc2.0G==》失敗           malloc1.5G   +malloc1.0G ==成功。當連續申請兩G時失敗,分兩次申請能夠成功。進程

【5】分時系統的特色,知道什麼是時間片?併發和並行的區別在哪?內存

  分時系統具備多路性,交互性,獨佔性和及時性的特色。

多路性:宏觀上是多我的同時使用一個CPU,微觀上是多我的輪流在不一樣的時刻使用CPU

交互性:用戶根據系統響應結果進一步提出新的要求(用戶直接干預每一步)

獨佔性:用戶感受不到計算機爲其餘人服務,只能感受本身在是用整個系統

及時性:系統對用戶提出的請求及時響應

併發:每一個程序輪流佔用cpu去運行。並行:同時

【6】程序的狀態:就緒,運行,阻塞

【7】什麼是僵死進程?僵死進程產生的條件?如何避免僵死進程?

  子進程結束,父進程沒有結束,父進程沒法獲得子進程的退出碼,子進程的文件描述符將一直存在,並且kill -9 沒法殺死該進程,因此子進程就成爲了僵死進程

1.父進程忽略SIGCLD信號;2.父進程捕捉SIGCLD信號,在信號處理函數中獲取子進程退出狀態。

【8】描述fork的複製流程,並描述寫時拷貝技術及如何實現?

  fork-->  1.複製pcb。2.複製實體。(集體流程往後再說)

寫時拷貝技術:

  在fork以後exec以前兩個進程用的是相同的物理空間(內存區),子進程的代碼段、數據段、堆棧都是指向父進程的物理空間,也就是說,二者的虛擬空間不一樣,但其對應的物理空間是同一個。當父子進程中有更改相應段的行爲發生時,再爲子進程相應的段分配物理空間,若是不是由於exec,內核會給子進程的數據段、堆棧段分配相應的物理空間(至此二者有各自的進程空間,互不影響),而代碼段繼續共享父進程的物理空間(二者的代碼徹底相同)。而若是是由於exec,因爲二者執行的代碼不一樣,子進程的代碼段也會分配單獨的物理空間。   

【9】什麼是系統調用,他和庫函數的區別是什麼?執行系統調用後如何從用戶空間切換到內核空間?

  在用戶態的時候將系統調用號存到寄存器中,經過中斷,切換到內核狀態,操做系統先將寄存器中的系統調用號讀取出來,而後經過系統調用表(sys_call_table)中去尋找相應的函數實現,而後將結果寫入寄存器中返回給用戶。

  系統調用要經過中斷去執行內核中的相關函數,而庫函數則是直接給用戶去使用,不須要通過內核處理。

  用戶態與內核態的切換經過中斷實現(80號中斷)。

【10】信號是什麼?信號在內核如何表示及實現?

  信號的響應方式:signal()  (改變信號的相應方式)                                             信號的發送方式:kill ( )

          1.SIG_DFL    默認                                                               SIGCHLD      子進程結束髮送給父進程

          2.SIG_IGN    忽略                                                                 SIGINT  2        Ctrl + c                                                              

          3.fun            自定義                                                                15   :默認kill          kill    -9       不容許改變響應方式

          信號的實現方式:一個long類型的長整型            32位

                            00100000  00000000  00000000  00000000

結構體:用來指向具體信號

32個元素

      0               SIG_DFL  
      15             
     16            SIG_IGN
   
      32           SIG_DFL

 

  

 

 

 

【13】守護進程的編程流程?

相關文章
相關標籤/搜索