1. 程式人生 > >內存管理

內存管理

周期 用戶 一個數 function 主存 nbsp article https 轉換

技術分享

內存管理,是指軟件運行時對計算機內存資源的分配和使用的技術。其最主要的目的是如何高效,快速的分配,並且在適當的時候釋放和回收內存資源。

一個運行中的程序,譬如網頁瀏覽器在個人電腦或是圖靈機(Turing machine)裏面,為一個進程將數據轉換於真實世界及電腦內存之間,然後將數據存於電腦內存內部(在計算機科學,一個程序是一群指令的集合,一個進程是電腦在運行中的程序)。內存能被實際組織在許多方法裏頭,例如磁帶或是磁盤,或是小數組容量的微芯片。 從1950年代開始,計算機變的更復雜,它被連接於許多種類的內存。內存管理的任務也變得復雜,甚至必須要在同一臺機器上相同的時間運行多個進程。

在內存內,一個程序(操作系統)在每一個數據區塊持續地追蹤實體位置,及移動實體上的數據去改善其性能及保證可靠性,對於每個用戶層(user-level)的程序,操作系統分配一段虛擬內存空間,當進程起始時,不需要移動數據到實體設備間,數據存於磁盤內的虛擬內存空間,也不需要去配置主存空間給該進程,當用戶有需要用到時,他們才會很自由地加載到主存內。

可以想像一個很大的程序,當他運行時變成進程,而大部分的內存空間都被存到磁盤內虛擬內存地址,需要用到的部分才被加載到內存內部提供服務。

主存使用

一個程序結構由以下兩部分而成:

  • “本文區塊”,也就是指令存放,提供CPU使用及運行
  • “數據區塊”,存儲程序內部本身設置的數據,例如常數字符串,像是GUI接口內部一些文字消息,或是程序設計時所放入的消息數據,數據可借由程序運行時由輸入(input)的方式加入,或者經由程序運行的流程中被移除。

當一個程序運行,操作系統將程序的數據區塊及本文區塊映射到虛擬內存空間內部,然後在內存運行程序的指令,無論如何,當程序運行時就必須去存儲暫時性的數據,或更重要的,它會調用一些函數(function)或是例程(subroutine),並且存儲當前函數的狀態,最好的數據結構方法,數據由堆棧(stack)的方式存儲,當我們完成這個函數,數據會由堆棧的pop方式取出,堆棧將會在函數的生命周期內動態的成長,操作系統提供區分本文區塊及數據區塊,而堆棧區塊則在一個進程的最頂端,這種方式稱為段式結構(segments)或“分段”。

我們的公共號

技術分享

內存管理