main.c 파일 실행 과정

Binary 파일은 어떤 과정으로 실행될까?

2023-11-04
linkerloader

main.c 파일 실행 과정

소스코드 형태의 main.c가 있다. 이 프로그램이 실행되는 과정을 알아보자.

linker와 loader
  1. 컴파일러는 main.c를 컴파일해서 object file인 main.o로 만든다.

    • Relocatable object file이라고도 한다.
  2. 링커가 main.o와 다른 object 파일을 합쳐 하나의 binary 실행 파일로 만든다.

    • 이때 정적 라이브러리가 링크된다.
  3. 로더가 실행 파일을 메모리에 로드된다.

    • 실행을 위해서 shell은 fork()를 호출해 새로운 프로세스를 생성한다.
    • 그 다음 shell은 exec() system call과 함께 로더를 invoke한다.
    • 실행할 파일의 이름을 인자로 넘겨주면 로더는 새롭게 생성된 프로세스의 주소 공간에 실행 파일을 로드한다.
    • linking과 loading을 통해 프로그램에 최종 주소를 할당해 라이브러리의 함수 혹은 변수를 호출, 참조할 수 있게 된다.
  4. 프로그램이 실행된다.

    • 이때 동적으로 연결된 라이브러리가 링크된다.
    • 실행 후 조건에 의해 동적으로 연결되는 라이브러리를 DLL이라고 한다.
    • 여러 프로세스가 DLL을 공유하여 메모리를 절약할 수 있다.

Object file과 executable file 포맷


Related Posts

os
Virtual Memory
2023/12/25

Virtual Memory

os
Main Memory
2023/12/17

Main Memory

os
Deadlock
2023/12/16

Deadlock

os

병렬, 병행 실행에도 데이터 무결성 보장하기

동기화
2023/12/15

동기화