프로세스, 메모리 구조

2024. 11. 5. 15:33·CS지식/운영체제
728x90
반응형

프로세스 vs 프로그램

프로세스(process)는 컴퓨터에서 실행 중인 하나의 프로그램을 의미합니다.

프로그램(program)은 특정 작업을 수행하기 위한 명령어의 집합입니다.


메모리 구조

OS는 프로그램을 실행하면서 디스크에 저장된 데이터를 메모리로 로드합니다. (메모리에 로드된 프로그램을 프로세스라고 합니다.) 프로세스는 OS로부터 독립된 메모리 영역(코드, 데이터, 스택, 힙)을 할당받으며 다른 프로세스의 메모리 영역에는 접근할 수 없습니다.

 

프로세스의 메모리 영역 구조를 간단히 표현하면 다음과 같습니다.

참고로, Text(코드) 영역이 가장 낮은 주소 값을 가지며, Stack(스택) 영역이 가장 높은 주소 값을 가지고 있습니다.

https://wikidocs.net/165974

Code 영역 (Text)

  • 실행할 코드가 기계어로 컴파일되어 저장되어 있는 영역으로 텍스트 영역이라고도 합니다.

Data 영역 (Data)

  • 전역 변수, 정적 변수 등이 저장되는 영역입니다.
  • 데이터 영역은 세부적으로 BSS(Block Stated Symbol) 영역과 데이터 영역으로 다시 나눌 수 있습니다.
    • BSS : 초기화하지 않은 변수
    • 데이터 : 초기화된 변수

Heap 영역 (Heap)

  • 사용자에 의해 동적 메모리 할당이 일어나는 영역입니다.
  • c언어에서는 malloc(), c++에서는 new()로 할당되는 영역입니다.
  • 낮은 주소 값에서 높은 주소 값으로 메모리가 할당되며 영역 크기는 런타임 때 결정됩니다.

Stack 영역 (Stack)

  • 지역 변수, 함수의 매개변수, 반환되는 주소 값 등이 저장되는 영역입니다.
  • 높은 주소 값에서 낮은 주소 값으로 메모리가 할당되며, 영역 크기는 컴파일 때 결정됩니다.

여기서 스택 영역과 힙 영역은 동적으로 메모리 할당이 가능해 두 영역 사이의 빈 메모리 공간이 존재합니다.

스택 영역은 LIFO방식으로 높은 주소 값에서 낮은 주소 값 순서로 사용하며, 힙 영역은 FIFO방식으로 낮은 주소 값에서 높은 주소 값 순서로 사용합니다.

 

위와 같이 메모리 영역을 공유하기에 스택 영역과 힙 영역이 서로의 영역을 침범하는 문제가 생길 수 있습니다.

스택 영역이 힙 영역을 침범하는 경우를 스택 오버플로우(Stack Overflow)라고 하며, 힙 영역이 스택 영역을 침범하는 경우를 힙 오버플로우(Heap Overflow)라고 합니다.


해당 글은 다음 도서의 내용을 정리하고 참고한 글임을 밝힙니다.


이수진, ⌜기술면접대비 CS전공 핵심요약집⌟, (주)도서출판 길벗

728x90
반응형
저작자표시 비영리 변경금지

'CS지식 > 운영체제' 카테고리의 다른 글

교착 상태(Deadlock)와 스레드 안전(Thread Safe)  (0) 2025.02.03
프로세스 동기화  (0) 2025.02.01
동시성과 병렬성, 멀티 프로세스와 멀티 스레드  (0) 2025.01.31
PCB(Process Control Block), 프로세스의 생성, 프로세스 상태도  (0) 2025.01.30
운영체제, 커널, 시스템 콜  (0) 2024.11.05
'CS지식/운영체제' 카테고리의 다른 글
  • 프로세스 동기화
  • 동시성과 병렬성, 멀티 프로세스와 멀티 스레드
  • PCB(Process Control Block), 프로세스의 생성, 프로세스 상태도
  • 운영체제, 커널, 시스템 콜
리태s
리태s
게임 클라이언트 프로그래머 직무를 준비하며 공부한 내용을 정리한 블로그입니다.
    반응형
    250x250
  • 리태s
    LeeTaes 공부노트
    리태s
  • 전체
    오늘
    어제
    • Home (165)
      • 프로젝트 (20)
        • Isaac 3D (5)
        • TimelessAdventure (13)
        • FruitsPuzzle (2)
      • Game Programming (25)
        • C# (8)
        • Unity Engine (6)
        • Unreal Engine (8)
        • UE_Multiplayer (3)
      • 코딩테스트 (111)
        • 프로그래머스 (Lv. 0) (27)
        • 프로그래머스 (Lv. 1) (31)
        • 프로그래머스 (Lv. 2) (21)
        • 백준 (Study) (29)
        • 알고리즘 (3)
      • CS지식 (7)
        • 운영체제 (7)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    청년취업사관학교
    c#
    issac3d
    2022 kakao
    Algorithm
    C++
    후기
    프로그래머스
    fruitspuzzle
    프로젝트
    sesac
    백준
    Unreal Engine
    dataasset
    구현
    delegate
    fsoftobjectpath
    pcce 기출문제
    tsoftobjectptr
    project t.a develop
    ai controller
    timelessadventure
    unity
    unrealengine
    2019 kakao
    2018 kakao
    프로세스
    코딩테스트
    Summer/Winter Coding
    CS지식
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
리태s
프로세스, 메모리 구조
상단으로

티스토리툴바