ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 링커, 로더, 번역기(Translator), 프로그램 실행과정
    전공/시스템프로그래밍 2020. 6. 6. 20:19

    링커

    원래의 프로그램이 너무 크면 여러 개의 모듈로 잘라서 어셈블러에 의해 기계어로 변환된다.

    이때 모듈별로 서로 다른 object 모듈이 생성되고, 얘들이 보조기억장치에 저장된다.

    목적 모듈들을 실행시킬 때는 개별이 아닌 한 묶음으로 실행되어야 하는데, 이 때 링커를 통해 목적모듈들을 연결한다.

    로더

    링커를 통해 합쳐진 하나의 프로그램은 로더를 통해 메모리에 적재되고 실행할 준비를 마치게 된다.

    어셈블러가 로더의 역할을 대신할 수도 있지만 그러려면 어셈블러가 기억장소의 공간을 사용해야 된다.

    어셈블러의 크기가 로더보다 훨씬 더 크기 때문에 비효율적이다. 그래서 로더라는 새로운 프로그램을 쓰는 것이다.

    로더는 이전에도 언급했듯이 링킹이 없으면 모듈로더, 있으면 상대로더라고 했다.

    즉, 링크의 유무에 따라서 갈렸다.

    이외에도 할당(allocation)을 누가 해주냐에 따라 절대로더와 상대로더로 나뉜다.

    프로그램 실행과정

    원시프로그램을 일정한 크기로 나누어 원시 모듈로 만든다.

    나누는 이유는 유지보수 및 프로그래밍이 쉽기 때문이다.

    함수 단위로 코딩을 하는 것과 비슷하다.

    나눠진 각 모듈을 각각의 어셈블러를 통해 목적 모듈을 만든다.

    프로그램을 실행시키기 위해서는 하나로 합쳐야 하는데, 이 역할을 링커가 한다.

    링커를 통해 합쳐진 모듈을 로더가 적재하고, 프로그램이 실행할 수 있게 된다.

    번역기(Translator)

    번역기는 컴파일러와 인터프리터, 어셈블러를 포괄하는 개념이다.

    어셈블러

    어셈블리어를 기계어(0과 1)로 변환하는 프로그램이다.​

    댓글

Designed by Tistory.