boostcamp Day04 학습정리

ttobe·2023년 7월 13일
0

boostcamp

목록 보기
3/15
post-thumbnail

- 오늘 피어세션을 통해

다른 사람들이 구현한 방식에 대해 설명을 들었다. 다들 너무 잘하셨더라... 구현하다가 막혀서 완성을 하지 못했는데 다들 해오셔서 자극이 많이 되었다. 포기하지 않고 완성하려고 노력해봅세! 화이팅!


- 오늘 과제하면서 공부해야겠다고 생각한 것

  1. 컴퓨터 메모리 구조
  2. 메모리 할당 방식
  3. 스택과 힙의 구조
  4. 파싱

- 오늘 공부

1) 2. 메모리 구조 학습

메모리 구조 사진

  • 스택(stack) 영역
    메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다.

  • 힙(heap) 영역
    메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있는 '그리고 해야만 하는' 메모리 영역입니다. 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됩니다.

  • 코드(code) 영역
    메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code) 영역이라고도 부릅니다.

  • 데이터(data) 영역
    메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역입니다.


- 추가 학습

1) Node.js 에서 프로세스 메모리 관리하는 방식

nodejs는 자바스크립트의 V8엔진을 사용하고 있다. 참고 문서

V8은 가비지 콜렉션을 이용해서 힙 메모리를 관리한다!

V8 엔진은 가비지 컬렉션을 사용해 힙 메모리를 관리한다. 간단하게 말하면, 가비지 컬렉션은 참조 없는 객체들이 사용하는 메모리를 비워서 새로운 객체를 생성하기 위한 공간을 만드는 역할을 한다. 참조 없는 객체(orphan object)란, 스택으로부터 (다른 객체 내부의 참조를 통해) 더 이상 직접 혹은 간접적으로 참조되지 않는 객체를 말한다.

2) 리눅스 운영체제를 기준으로 가상 메모리 관리 방식

페이징, 가상주소로 관리.

3) 힙 메모리에 빈 공간 fragmentation

fragmentation

다음과 같이 100MB의 빈 공간이 있는데도, 동적할당으로 80MB를 할당하지 못하는 경우의 해결방법 은 3가지가 있다.

1) paging
paging

2) segmentation
segmentation

페이징은 프로세스를 물리적으로 일정한 크기로 나눠서 메모리에 할당하는 것을 의미한다.

반면, 세그멘테이션은 프로세스를 논리적 내용을 기반으로 나눠서 메모리에 배치하는 것을 의미한다.

3) 메모리 풀

필요한 메모리 공간을 필요한 크기, 개수 만큼 사용자가 직접 지정하여 미리 할당받아 놓고 필요할 때마다 사용하고 반납하는 기법
미리 상대적으로 큰 메모리를 할당하여 사용하기 때문에 사용하지 않는 부분이 미사용 메모리로 남게 됩니다.

4) Process 노드 모듈

0개의 댓글