세그먼트(Segment)

noob3er·2022년 12월 7일
0

System Hacking

목록 보기
1/5
post-thumbnail

세그먼트(Segment)


  • 리눅스에서는 프로세스의 메모리를 크게 5가지의 세그먼트(Segment)로 구분합니다. 여기서 세그먼트란 적재되는 데이터의 용도별로 메모리의 구획을 나눈 것인데, 크게 코드 세그먼트, 데이터 세그먼트, BSS 세그먼트, 힙 세그먼트, 그리고 스택 세그먼트로 구분합니다.

코드 세그먼트(Code Segment)

  • 실행 가능한 기계코드가 위치하는 영역
    (읽기, 실행)

데이터 세그먼트(Data Segment)

  • 값이 정해진 전역 변수 및 전역 상수
    (읽기)

BSS 세그먼트(BSS Segment)

  • 값이 정해지지 않은 전역 변수
    (읽기, 쓰기)

스택 세그먼트(Stack Segment)

  • 스택이 위치하는 영역. 임시 변수들이 저장됨
    단위 - 스택 프레임(stack frame)
    기존 주소보다 낮은 주소로 확장(아래로 자란다)
    (읽기, 쓰기 권한)

힙 세그먼트(Heap Segment)

  • 힙 데이터가 위치하는 세그먼트.
    실행 중 동적으로 할당 가능, 스택세그먼트와 반대 방향으로 자란다
    (malloc(), calloc())
    (읽기, 쓰기)


profile
"Hard work beats talent when talent doesn't work hard."

0개의 댓글