둠치킨
코딩하는 둠치킨
둠치킨

블로그 메뉴

  • 홈
  • 분류 전체보기 (218) N
    • BOJ (171) N
      • 스택 (14)
      • 큐 (5)
      • 덱 (4)
      • 그래프 (30)
      • 배열 (8)
      • 재귀 (12)
      • 브루트 포스 (2)
      • 그리디 알고리즘 (7)
      • 다이내믹 프로그래밍 (13)
      • 백트래킹 (24)
      • 기하학 (4)
      • 트리 (4)
      • 구현 (14)
      • 수학 (3)
      • 맵 (1)
      • 다익스트라 (2)
      • 누적합 (5) N
    • 자료구조 (14)
      • 스택 (3)
      • 큐 (5)
      • 덱 (2)
      • 그래프 (1)
      • 트리 (1)
      • 힙 (1)
      • 정렬 (1)
    • C++ (11)
      • 모두의코드 (2)
      • Effective C++ (3)
      • C++ STL (6)
    • 컴파일러 (1)
    • OS (17)
    • 컴퓨터 구조 (2)
    • Unreal Engine 5 (2)

공지사항

전체 방문자
오늘
어제

인기 글

최근 글

태그

  • BFS
  • boj
  • Bruteforce
  • C
  • C++
  • C++ STL
  • Cache Memory
  • deadlock
  • DFS
  • Effective C++
  • java
  • Mutex
  • next_permutation
  • os
  • Process
  • rotate
  • semaphore
  • spin lock
  • STL
  • STL C++
hELLO · Designed By 정상우.
둠치킨

코딩하는 둠치킨

OS

프로그램은 어떻게 실행되는가

2025. 6. 24. 22:45

프로그램은 어떻게 실행되는가

프로그램은 단순히 코드를 작성한다고 바로 실행되는 것이 아니다. 사람이 읽기 쉬운 고급 언어로 작성된 코드가 컴퓨터에서 실제로 실행되기까지는 여러 단계를 거친다. 이 과정은 크게 작성 → 빌드 → 실행 → 종료의 흐름으로 정리할 수 있다.

1. 소스 코드 작성

개발자는 C, C++, Java 등 고급 언어로 프로그램의 동작을 기술한다. 이 코드는 사람이 읽고 이해할 수 있도록 만들어졌지만, 컴퓨터는 직접 실행할 수 없다.

2. 빌드: 실행 파일 생성

작성된 소스 코드는 컴파일러와 링커를 거쳐 기계가 이해할 수 있는 실행 파일로 변환된다. 대표적인 단계는 다음과 같다.

"프로그램의 빌드 과정" 페이지 참고.

3. 로딩: 실행 파일을 메모리에 적재

사용자가 실행 파일을 실행하면, 운영체제 커널이 해당 파일을 메모리에 적재한다. 이때 코드 영역, 데이터 영역, 힙, 스택 등 프로세스에 필요한 메모리 구조가 준비된다.

"메모리 영역" 페이지 참고

4. 실행: 프로세스 시작

메모리에 적재된 후, 운영체제는 해당 프로세스를 스케줄링하여 CPU에 할당한다. 그리고 프로그램의 진입점인 main() 함수부터 코드 실행이 시작된다. 이때 내부적으로는 여러 스레드가 생성되거나, 시스템 콜을 통해 입출력, 메모리 할당, 프로세스 간 통신 등이 수행된다.

운영체제는 프로세스가 CPU를 너무 오래 점유하지 않도록 시분할 방식으로 관리하며, 여러 프로세스를 빠르게 전환하면서 동시에 실행되는 것처럼 보이게 한다.

5. 종료: 자원 해제 및 프로세스 소멸

프로그램이 return이나 exit() 등을 통해 종료되거나, 예외가 발생해 강제로 종료되면 운영체제는 해당 프로세스가 사용하던 메모리, 파일 디스크립터, 스레드 등 모든 자원을 해제하고 프로세스를 시스템에서 제거한다.

저작자표시 (새창열림)

'OS' 카테고리의 다른 글

동기 vs 비동기 & 블로킹 vs 논블로킹  (0) 2025.06.25
캐시 메모리란?  (0) 2025.06.25
스핀락(Spin Lock)  (3) 2025.06.24
세마포어(Semaphore)  (0) 2025.06.24
뮤텍스(Mutex)  (0) 2025.06.24
    'OS' 카테고리의 다른 글
    • 동기 vs 비동기 & 블로킹 vs 논블로킹
    • 캐시 메모리란?
    • 스핀락(Spin Lock)
    • 세마포어(Semaphore)
    둠치킨
    둠치킨
    코딩 공부를 위한 코딩 블로그 기록 일기

    티스토리툴바