Chomu's Blog.

>

Posts

GitHub

프로세스와 메모리 구조

목차

프로세스

출처: 프로세스(Process)란 무엇일까?

메모리 구조

  1. TEXT 섹션
    • 프로그램에 있는 함수 코드, 제어문, 상수 등 포함
    • 일반적으로 한 번 로딩 후엔 변치 않음
    • JVM에서는 사용 않음
    • node, 브라우저 등은 TEXT 영역 대신 코드 영역 별도 존재
  2. GVAR/BSS 섹션
    • 범위(Scope)가 정해지지 않은 전역(global, static) 변수 포함
    • GVAR은 초기 값이 0이 아닌 특정 값으로 지정한 경우 사용
  3. HEAP 섹션
    • 동적으로 할당되는 메모리 공간
    • 보통 힙 영역 할당 메모리 공간에 대한 주소를 참조
  4. STACK 섹션
    • 함수 호출 시 지역 변수, 매개변수, 리턴 값등이 쌓임
def 함수1():
    print("Hello, World!") # 1
    return # 4
 
def 함수2():
    함수1() # 2
    return # 5
 
def 함수3():
    함수2() # 1
    함수1() # 6
    return # 7
 
함수3() # 0
0. []
< # 0 call 함수3 in global >
1. [함수3]
< # 1 call 함수2 in 함수3 >
2. [함수3, 함수2]
< # 2 call 함수1 in 함수2 >
3. [함수3, 함수2, 함수1]
< # 3 call print in 함수1 >
4. [함수3, 함수2, 함수1, print]
< # 3 return print in 함수1 >
5. [함수3, 함수2, 함수1]
< # 4 return 함수1 in 함수2 >
6. [함수3, 함수2]
< # 5 return 함수2 in 함수3 >
7. [함수3]
< # 6 call 함수1 in 함수3 >
8. [함수3, 함수1]
< # 1 call print in 함수1 >
9. [함수3, 함수1, print]
< # 1 return print in 함수1 >
10. [함수3, 함수1]
< # 4 return 함수1 in 함수3 >
11. [함수3]
< # 5 return 함수3 in global >
12. []