본문 바로가기
컴퓨터구조

[컴퓨터구조] 컴퓨터에서 프로그램 실행 과정

by 개발LOG 2024. 8. 24.

소스 코드 작성 및 컴파일

  • 개발자는 C, Java, Python 등의 고급 프로그래밍 언어로 소스 코드를 작성합니다. 이 코드는 사람이 이해할 수 있는 형태로 작성되어 있습니다.
  • 소스 코드는 컴파일러에 의해 기계어(또는 중간 언어)로 번역됩니다. 컴파일 과정에서는 코드 최적화, 오류 검사 등이 수행되며, 실행 가능한 프로그램(실행 파일)을 생성합니다. 일부 언어(예: Java)에서는 바이트코드와 같은 중간 형태로 컴파일되어, 가상 머신에서 실행될 수 있습니다.

링킹

  • 컴파일된 코드는 필요한 라이브러리나 다른 모듈과 함께 링킹됩니다. 정적 링킹은 컴파일 시간에 외부 코드나 라이브러리를 실행 파일에 포함시키며, 동적 링킹은 프로그램이 실행될 때 필요한 코드를 불러오는 방식입니다.
  • 최종적으로, 링킹 과정을 거쳐 완전한 실행 파일이 생성됩니다.

실행 파일 로딩

  • 사용자가 프로그램을 실행시키면, 운영 시스템은 실행 파일을 메모리로 로드합니다. 이 과정에서 운영 시스템은 파일 시스템에서 실행 파일을 찾아 메모리에 적재합니다.

프로세스 생성

  • 메모리에 로드된 실행 파일은 프로세스로 생성됩니다. 프로세스는 실행 중인 프로그램의 인스턴스로, 고유한 메모리 공간(코드, 데이터, 스택 등)과 운영 시스템 자원(파일 핸들, 스레드 등)을 할당받습니다.
  • 운영 시스템은 프로세스를 관리하며, CPU 스케줄링을 통해 프로세스가 실행될 수 있도록 합니다.

실행

  • 프로세스가 CPU 시간을 할당받으면, 프로세스의 코드가 실행됩니다. 이때 명령어 실행 사이클(Fetch, Decode, Execute 등)이 반복되며, 프로그램의 로직에 따라 처리가 수행됩니다.
  • 프로그램 실행 도중에는 메모리 접근, 입출력 작업, 네트워크 통신 등 다양한 시스템 호출이 이루어질 수 있습니다.

종료

  • 프로그램이 완료되면, 운영 시스템은 프로세스를 종료시키고, 사용했던 자원을 회수합니다. 프로세스 종료는 정상 종료, 사용자에 의한 강제 종료, 오류로 인한 비정상 종료 등 여러 방식으로 이루어질 수 있습니다.

이 과정을 통해 고급 언어로 작성된 소스 코드는 컴퓨터에서 실행될 수 있는 프로세스로 변환되어, 실제 작업을 수행하게 됩니다.

 

C언어 컴파일 과정 예시

 

 

'컴퓨터구조' 카테고리의 다른 글

[컴퓨터구조] 하드웨어 종류 및 CPU 구성  (1) 2024.07.30