iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
Software Development

Backend Developer roadmap study系列 第 5

[day5] 程式中記憶體管理

  • 分享至 

  • xImage
  •  

Memory Management

memory management主要負責管理memory的內存,在低階語言如c和c++在宣告malloc、new時,需在結束時使用free釋放記憶體,否則當memory越來越肥時,會跑出memory leak的問題

Garbage Collection(GC)

在高階語言如python、javascript加入garbage Collection機制來回收沒在使用的內存,回收方式大致分為兩種

Mark & Sweep GC

Mark & Sweep算法主要分為兩個階段,mark和sweep,在初始化object時會給定其初始化狀態mark=false,在mark階段時會將使用到的object進行標記起來mark=true,在sweep階段中將mark=false的object進行release掉,並且設置mark=false後重複上述動作,藉由不斷掃描並釋放在heap區段中多餘的object。

缺點:

  • 在程式中memory使用越多,scan所花的時間就越多。
Reference counting GC

在此算法中基礎做法為在initial物件時給一個初始值reference count=1,使用該object則+1,如果沒有使用到則-1,當reference count=0時則release該物件

缺點:

  • 無法處理ring garbage,如A引用B然後B再引用A,但是A、B物件在程式都使用不到。

Inter Process communication

在兩個process中要互相溝通有兩種方式,分別是Shared Memory和Message passing,python針對process傳遞可參考https://docs.python.org/2/library/multiprocessing.html#exchanging-objects-between-processes

Shared Memory

在不同的process間使用同一個memory區段去共同控管,會需要考量的race condition(https://ithelp.ithome.com.tw/articles/10239243)的問題

Memory Passing

先建立起溝通的pipe,然後將其分別丟入兩個不同的process,在不同的process中透過pipe溝通


以下偏hardware以及系統底層有簡易觀念了解架構即可

I/O management 以及 POSIX介紹

I/O management主要是I/O device在電腦設備中如何去運作可以參考https://www.tutorialspoint.com/operating_system/os_io_hardware.htm簡易看過即可,以及unix中所有操作都是由POSIX API所定義而成,詳細內容可看https://unix.stackexchange.com/questions/11983/what-exactly-is-posix

基礎網路知識

https://aws.amazon.com/tw/what-is/computer-networking/

參考


上一篇
[day4] Process introduction
下一篇
[day6] Git 版本控制
系列文
Backend Developer roadmap study30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言