로더(소프트웨어)
보이기
컴퓨터 운영체제에서 로더(Loader)란, 프로그램과 라이브러리를 RAM 등의 주 기억 장치에 적재하는 기능을 하는 코드 또는 프로그램이다.
로더는 크게 Relocation Loader와 Dynamic Linking Loader로 구분된다. 전자의 Relocation Loader는 Relocation Table을 이용해 디스크에 기록된 단일 프로그램을 읽은 후 적절하게 RAM에서 심볼과 오프셋으로 나타나는 코드와 데이터의 위치를 결정하고 배치하는 로더다. 후자의 Dynamic Linking Loader는 공유 라이브러리(Shared Library) 코드 파일을 읽은 후 다른 프로그램에 이를 연결하여 코드와 데이터를 적절히 합쳐 RAM에 배치한다.
프로그램 개발 및 실행 시에 수행하는 링커와 헷갈리면 안 된다. 보통 Dynamic Linking Loader가 Dynamic Linking을 수행하기 때문에 혼동이 올 수 있다. 소프트웨어 개발자의 관점으로 링커를, 소프트웨어 사용자의 관점으로 로더를 생각하면 어느 정도 구분이 가능하다.
로더의 주 기억 장치 관리 전략
한편 보조 기억 장치에서 주 기억 장치로 프로그램을 가져올 때 프로그램 코드/데이터를 배치할지 결정하는 전략은 3가지가 있다.
- Fetch 전략: 프로그램을 언제 가져올지 결정하는 전략이다. 요구 반입과 예상 반입이 있다.
- Placement 전략: 프로그램을 어디에 가져올지 결정하는 전략이다. 최초 적합(가장 먼저 만난 빈 영역)/최적 적합(가장 딱 맞는 영역)/최악 적합(가장 덜 맞는 영역, 프로그램의 총 메모리 할당량의 변동성이 크면 이것도 쓸 수 있다)
- Replacement 전략: 새 프로그램을 실행한다면 페이지 교체/메모리 스왑이 필요한 상황에서 어떻게 메모리로 새 프로그램을 끌고 올지 결정하는 전략이다.
- FIFO(선입선출 선택), OPT(가장 오랫동안 사용하지 않을 페이지를 교체하는 건데 현실적으로 불가능하다), LRU(가장 적게 쓴 페이지 선택), LFU(가장 자주 쓴 페이지 선택), NUR(참조 여부와 변형 여부를 보고 가장 덜 쓸 것 같은 페이지를 선택), FIFO를 보완한 SCR 등이 있다.