日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

进程的切换过程

發布時間:2024/1/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进程的切换过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

切換方式

進程的切換,實質上就是被中斷運行進程與待運行進程的上下文切換。從主觀上來理解。只分為兩步:
1.切換新的頁表,然后使用新的虛擬地址空間
2.切換內核棧,加入新的內容(PCB控制塊,資源相關),硬件上下文切換

現在從這兩句話理解,來看看這些東西到底是什么。

1,虛擬地址空間

虛擬地址空間,顧名思義:就是虛擬的,不是真的地址空間
在早期的計算機中,我們的計算機內存都非常的小。如果計算機內存是100M.已經運行了兩個40M的任務。如果還想運行一個40M的。那么空間肯定就不夠了。

所以后來 它在磁盤上劃分出一塊空間由操作系統管理,當物理內存耗盡是充當物理內存來使用。它將多個物理內存碎片和部分磁盤空間重定義為連續的地址空間,以此讓程序認為自己擁有連續可用的內存
但是具體要講清楚這個,我們還要看頁表

2,頁表

剛剛講到了虛擬地址空間,說了他只是虛擬的一段空間,但是。程序可不管你那么多。人家只要在物理內存上運行。你給人家畫空餅可沒意思。
所以出現了頁表。把虛擬地址空間對應的部分,映射到物理地址上
現在計算機一般是采用分頁管理居多,這里分段管理我個人也理解了就不多敘述。
我們來看下分頁管理:

很多初學者在這里會有一個疑問,既然給程序造成連續的空間假象,那要是內存中確實沒內存可用了,會怎么辦呢?那么對于*新的頁數,他就會發生缺頁中斷,然后會覆蓋起其他的頁
缺頁中斷大概有三種算法:
1.(OPT)最晚不使用的算法:表示新的頁如果進來沒內存框可放了,會替換之后 幾乎或者根本不會用到的頁。但這種算法只是一種理想算法,因為沒人能預估之后的事,包括計算機
2.(FIFO)先進先出算法:表示沒來一個新的頁,他都會替換最早進來的那個頁。這種辦法有個缺點:如果最早進來的那個頁是經常被訪問的,那么一定情況下效率會比較低。所以FIFO算法在按 線性順序訪問地址空間時使用
3.(LRU)最近最久未使用:這種辦法,會找出當前內存中,最近被使用最少的頁。然后替換他。這種辦法是前兩個算法的折中選擇,基本現在都用這種。還有一種是LFU 最常不使用算法,這種是找系統內使用頻率最少的頁(LRU是最近一段時間),然后替換他。但是,這種算法實現要長期的為每個頁維護一個計數代價較大不常使用。

具體三個的算法的圖解:https://blog.csdn.net/qq_34777600/article/details/79508613

第二步的切換內核棧,就是使用新的棧來存放進程運行時資源了。然后新進程有新的PCB控制塊。第二步也是線程切換的步驟,因為線程共享進程的虛擬地址空間,所以切換的時候沒有第一步的過程

進程一共有五個狀態:
像剛剛的切換:
1.會把原來的進程保存狀態,然后進入阻塞狀態。這種情況一般是IO請求或者內存申請失敗了。
2.可能是原來的進程正常終止了,或者CPU的時間片沒了,終止是進入終止態,CPU時間片沒了是進入就緒態,加入就緒隊列等待下一次獲得CPU

總結

以上是生活随笔為你收集整理的进程的切换过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。