메모리 관리 - 2

초보개발·2022년 2월 16일
0

OS

목록 보기
28/38

메모리 관리 관련 용어


1. 동적로딩(dynamic loading)

동적 로딩은 여러 프로그램이 동시에 메모리에 적재되어 수행되는 다중 프로그래밍(multi-programming) 환경에서 메모리 사용의 효율성을 높이기 위해 사용하는 기법 중 하나이다.

동적로딩은 프로세스가 시잘될 때 그 프로세스의 주소 공간 전체를 메모리에 다 올려놓지 않고 해당 부분이 실행에 필요할 때 그 부분만 메모리에 적재하는 방식을 사용한다.

2. 동적연결(dynamic linking)

연결(linking): 작성된 소스 코드를 컴파일하여 생성된 목적 파일(object file)과 이미 컴파일된 라이브러리 파일들을 묶어 하나의 실행파일을 생성하는 과정을 말한다.

정적연결(static linking)은 작성된 코드와 라이브러리 코드가 모두 합쳐져서 실행파일이 생성되고 크기가 상대적으로 크며 동일한 라이브러리를 각 프로세스가 개별적으로 메모리에 적재해야 하므로 물리적 메모리가 낭비되는 단점이 있다.

동적연결은 컴파일을 통해 생성된 목적파일과 라이브러리 파일 사이의 연결을 프로그램 실행 시점까지 지연시키는 기법이다. 라이브러리를 메모리에 한 번만 적재하므로 메모리 사용의 효율성을 높일 수 있다.

3. 중첩(overlays)

중첩은 프로세스의 주소 공간을 분할해 실제 필요한 부분만을 메모리에 적재하는 기법을 말한다.

동적로딩과 비슷한데, 중첩은 초창기 컴퓨터 시스템에서 적은 물리적 메모리 크기때문에 하나의 프로세스조차 적재할 수 없을 때, 프로세스의 주소 공간을 분할해서 당장 필요한 일부분을 메모리에 올려 실행하고 해당 부분에 대한 실행이 끝난 후에 나머지 부분을 올려 실행하는 기법을 말한다.

4. 스와핑(Swapping)

스와핑은 메모리에 올라온 프로세스의 주소 공간 전체를 디스크의 swap area(= backing store)에 일시적으로 내려놓는 것을 말한다.

스와핑은 프로세스가 종료되어 그 주소 공간을 디스크로 내쫓는 것이 아니라 특정한 이유로 수행 중인 프로세스의 주소 공간을 일시적으로 메모리에서 디스크로 내려놓는 것을 의미한다.

  • swap in: 디스크에서 메모리로 적재하는 작업
  • swap out: 메모리에서 디스크로 내리는 작업

중기 스케줄러인 swapper에 의해 스왑 아웃시킬 프로세스를 선정 후, 메모리에 올라가 있는 주소 공간 전체를 디스크 스왑 영역으로 스왑 아웃 시킨다.
스와핑은 메모리에 존재하는 프로세스의 수를 조절하는 것인데, 즉 스와핑으로 degree of multiprogramming을 조절할 수 있다.

스와핑에서는 스왑 영역에 프로세스의 주소 공간이 순차적으로 저장되므로 스와핑에 소요되는 시간은 탐색 시간(seek time)이나 회전지연시간(rotaional latency)보다 디스크 섹터에서 실제 데이터를 읽고 쓰는 전송 시간(transfer time)이 대부분을 차지한다.

0개의 댓글