進程的一原理思考

* 發明進程的動機是什麼?

解答:沒有進程之前是單道批處理處理系統,cpu佔用的效率太低了。因而提出進程。實現了多道編程!

#進程與程序之間的關係

解答:進程是程序的一次執行

進程帶來的最大的好處:提高系統響應時間,給用戶更好的體驗。

*進程空間的意思:

類比一個劇院的舞臺,表演的是各個演員。但卻共用着一個舞臺。進程空間即地址空間,進程要用的所有資源,讓多個進程來共享這個資源。

填坑:具體用到了那些資源呢?

*進程的狀態:阻塞,就緒,運行。

阻塞:進程在運行中被中斷了從而進入阻塞隊列(磁盤的讀寫)

就緒:其他資源已準備好,進程只等待cpu的調用執行。(或者執行時間過長,保證資源分配)

運行:處理器正在運行該進程的狀態。


*談談三種狀態中不能轉換的狀態

1.阻塞態不能轉換成運行態:

因爲自身原因導致程序進入阻塞狀態,因此就算有cpu也沒用。

2.就緒態不能轉化成阻塞態:還沒運行,因此無法轉化。


*商用操作系統進程的狀態會多於三個,原因:(我說不清楚)

便於操作系統管理進程

*os管理進程的根本手段是什麼?

通過程序關鍵字PWD來實現管理進程的根本手段。

*進程管理除了考慮公平和效率,還要:

執行的簡潔和易維護,易辨識。

*闡述進程的產生和消亡:

通過原語或fork函數來創建一個進程,並且創建pcb.建立管理制度。類似一個人的出生和上戶口。

進入進程的各種工作狀態 類似人的生活

進程需要結束的時候,正常終止和異常終止

正常:

  1. 從main函數返回。
  2. 調用exit函數。
  3. 調用_exit或_Exit。
  4. 最後一個線程從其啓動例程返回。
  5. 最後一個線程調用pthread_exit。
異常終止有3種,各自是:
  1. 調用abort函數。
  2. 接收到信號並終止。
  3. 最後一個線程對取消請求做出響應。 

釋放空間。調用do_exit()函數

內核會向其父進程發送SIGCHLD信號(何時發?)。父進程在SIGCHLD的信號處理函數中調用wait()函數,獲得已終結的子進程信息後,調用release_task()函數,釋放其佔用的剩餘資源。

類似人死之後家裏人給他辦喪事

*多道編程能否一直提高系統利用率:

不對,超過一個極限之後,從各個進程之間轉換所浪費的資源反而會影響整體效率。

*內核態下的進程的特點:(通常情況下,內核中的進程共享一個地址空間,爲啥?)





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章