1. 동적로딩( dynamic loading)

  • 메모리사용의 효율성을  높이기 위한 기법
  • 사용되는 환경 >> 여러 프로그램이 동시에 메모리에 올라가서 수행되는 다중 프로그래밍 환경
  • 목적 : 메모리에 더 많은 프로세스를 동시에 올려놓고 실행하기 위한 용도
  • 방식
    • [기존]  프로그램을 실행하기 위해 프로세스의 주소공간 전체가 메모리에 적재
    • [동적로딩]  프로세스의 해당 부분이 필요할 때만 (실행 될 때만) 메모리에 적재
      사용되지 않는 많은 코드가 메모리에 적재되는 것을 막아 메모리 효율적 사용 
  • 운영체제의 지원없이 프로그램 자체에서 구현 가능

2. 동적연결 (dynamic linking)

  • 연결(linking) 
    코드를 컴파일하여 생성된 
              목적 파일
    (프로그래머가 작성한 소스코드)
                  + 
          라이브러리 파일
         (라이브러리 코드)
                  ↓ 
       하나의 실행파일을
           생성하는 과정
  • 동적연결 (dynamic linking) 
    • 목적 파일과 라이브러리 파일 연결을 프로그램의 실행 시점까지 지연시키는 방법
    • 해당 라이브러리가 실행이 되는 시점에 연결이 되어 실행파일 생성
      사용되는 라이브러리를 한 번만 메모리에 적재
    • 운영체제의 지원 필요
  • 정적 연결 (static linking)
    • 프로그래머가 작성한 코드 와 라이브러리 코드를 모두 합쳐서 실행파일 생성
       

3. 중첩 (overlays)

  • 사용되는 환경 : 단일 프로세서만을 메모리에 올려놓는 환경
  • 목적 : 메모리 용량보다 큰 프로세스를 실행하기 위한 방법
  • 방법 : 프로세스의 주소공간을 분할해 실제 필요한 부분만 메모리에 적재

 

4. 스와핑 (swapping)

  • 메모리의 사용자공간에 올라온 프로세스의 주소 공간 전체를 디스크의 스왑영역에 일시적으로 내려놓는 것
  • 메모리에 존재하는 프로세스의 수를 조절하는 역할 
    • 프로그램이 종료되어 그 주소 공간을 디스크로 내쫓는 것이 아님
    • 특정한 이유로 프로세스를 잠시 메모리에서 디스크로 내려 놓는것 (swap in)
          -> 디스크에서 메모리로 올릴 수도 있다. (swap out)
  • 스왑영역(swap area, 휘발성 저장공간)?
        백킹스토어(backing store)라고도 불리는 이 영역은
        디스크 내에 파일 시스템(비휘발성 저장공간)과는 별도로 존재하는 일정 영역
        프로세스가 수행되는 동안에만 디스크에 일시적으로 저장이 가능한 영역
  • 일어나는 과정
  • 바인딩 방식에 따른 swap in
    • 컴파일 타임 바인딩 - 꼭 원래 존재하던 메모리 위치로 다시 복귀
    • 로드 타임 바인딩 -꼭 원래 존재하던 메모리 위치로 다시 복귀
    • 실시간 바인딩 - 빈 메모리 영역 아무 곳에나 프로세스 올리기 가능
  • 소요시간 : 디스크 섹터에서 실제 데이터를 읽고 쓰는 전송(transfer) 시간이 대부분을 차지

 

+ Recent posts