聊一聊內存管理(1)

 

「最近的電腦打開程序很是慢,並且運行的時候很卡,有沒有什麼解決辦法呢?」算法

「去京東買個4G 的內存條加到電腦裏面吧!」學習

在咱們的生活中,常常會遇到這樣的對話。當咱們的電腦運行程序變得很慢很卡的時候,就會聽到身邊的朋友建議咱們去增長電腦的內存。這是爲何呢?內存在計算機體系結構中起了什麼樣的做用?當咱們有了4G 的內存,操做系統又是如何管理這些內存的呢?操作系統

本系列博客將和你們一塊兒深刻的探討這些問題,主要介紹操做系統原理中的內存管理部分,從而讓您更好的理解計算機。力求用最簡單易懂的語言介紹相關原理及算法,即便您沒有任何的專業基礎,也能和咱們一塊兒來感覺操做系統的魅力。圖片

問題定義內存

介紹任何技術及理論以前,咱們首先都須要搞明白鬚要解決的問題是什麼,也就是問題的定義,這是極其關鍵的一步。不少學生在學習的時候,每每不知道我爲何要學習這個知識點,這個知識點和先後章節以及其餘課程的關係是什麼,這個知識點解決了什麼問題,只是簡單的去學某個知識點,而忽視了問題的定義以及先後關聯。博客

每個程序的運行都須要佔用內存,每個程序運行結束了之後,都會釋放其佔有的內存。這是你們首先須要瞭解的一個前提。內存管理

首先咱們來給你們介紹下什麼叫內存管理。所謂內存管理簡單來講就是你要運行一個程序,就須要給這個程序分配相應的內存,那麼該如何分配這些內存呢?基礎

 

可能有些同窗說,這不是很簡單的事情嗎?好比我有4G 的內存條,來了一個程序,我就給它多少的內存,這個程序運行結束了,我就回收這些內存,以下所示:原理

圖1- 1  A1 A2 A3程序內存分佈程序

 

t1時刻執行A1程序,須要512MB 內存,t2時刻執行 A2程序須要256MB內存,t3時刻執行 A3程序須要1GB 內存。按照上述圖示,爲每一個程序分配相應的內存。

圖1- 2 A1程序運行結束後內存分佈

過了一段時間後,A1程序運行結束,釋放以前佔用的內存。

不是很簡單嗎?這有什麼好討論的呢?

 

事實真的如此簡單嗎?接下來便提出幾個問題,看你該如何解決?

1)    以下圖這是某時刻內存的分佈狀況,內存有 A1 A2 A3 A4共四個程序在運行。此時來了一個程序 A5,它須要的內存爲512MB,而此時系統可用內存僅有256MB,那麼 A5是否可以被執行呢?

圖1- 3 某時刻內存分佈狀況

 

2)    以下圖是某時刻的內存分佈,系統可用內存有下面綠色部分總共256 + 256= 512MB 的可用內存,可是這兩塊內存不是連在一塊兒的。此時來了一個程序 A5,須要512MB 的內存,請問 A5程序可以被執行嗎?

圖1- 4 某時刻內存分佈狀況

3)    內存大小總共爲4GB,假設某程序須要佔用6GB 的內存,請問是否能夠運行該程序。

 

從上述提出的這些問題,你們能夠看到,內存管理其實沒有你們想象的那麼簡單,它須要解決的問題是很是多的。

後面的博客將帶領你們一塊兒來探索操做系統是如何解決內存管理的這些問題的,大師提出的解決方案和咱們本身的有什麼不一樣的地方。本節但願你們掌握什麼是內存管理,在總體上有個認識。

 

舒適提示:

因爲手機屏幕大小的限制,請你們在閱讀圖片時,點擊圖片放大查看。

本文圖例中全部的綠色部分表示系統可用內存,其餘顏色表示某程序佔用的內存。

相關文章
相關標籤/搜索