1. 동적로딩( dynamic loading)
- 메모리사용의 효율성을 높이기 위한 기법
- 사용되는 환경 >> 여러 프로그램이 동시에 메모리에 올라가서 수행되는 다중 프로그래밍 환경
- 목적 : 메모리에 더 많은 프로세스를 동시에 올려놓고 실행하기 위한 용도
- 방식
- [기존] 프로그램을 실행하기 위해 프로세스의 주소공간 전체가 메모리에 적재
- [동적로딩] 프로세스의 해당 부분이 필요할 때만 (실행 될 때만) 메모리에 적재
사용되지 않는 많은 코드가 메모리에 적재되는 것을 막아 메모리 효율적 사용
- 운영체제의 지원없이 프로그램 자체에서 구현 가능
2. 동적연결 (dynamic linking)
- 연결(linking)
코드를 컴파일하여 생성된
목적 파일
(프로그래머가 작성한 소스코드)
+
라이브러리 파일
(라이브러리 코드)
↓
하나의 실행파일을
생성하는 과정 - 동적연결 (dynamic linking)
- 목적 파일과 라이브러리 파일 연결을 프로그램의 실행 시점까지 지연시키는 방법
- 해당 라이브러리가 실행이 되는 시점에 연결이 되어 실행파일 생성
사용되는 라이브러리를 한 번만 메모리에 적재 - 운영체제의 지원 필요
- 정적 연결 (static linking)
- 프로그래머가 작성한 코드 와 라이브러리 코드를 모두 합쳐서 실행파일 생성
- 프로그래머가 작성한 코드 와 라이브러리 코드를 모두 합쳐서 실행파일 생성
3. 중첩 (overlays)
- 사용되는 환경 : 단일 프로세서만을 메모리에 올려놓는 환경
- 목적 : 메모리 용량보다 큰 프로세스를 실행하기 위한 방법
- 방법 : 프로세스의 주소공간을 분할해 실제 필요한 부분만 메모리에 적재
4. 스와핑 (swapping)
- 메모리의 사용자공간에 올라온 프로세스의 주소 공간 전체를 디스크의 스왑영역에 일시적으로 내려놓는 것
- 메모리에 존재하는 프로세스의 수를 조절하는 역할
- 프로그램이 종료되어 그 주소 공간을 디스크로 내쫓는 것이 아님
- 특정한 이유로 프로세스를 잠시 메모리에서 디스크로 내려 놓는것 (swap in)
-> 디스크에서 메모리로 올릴 수도 있다. (swap out)
- 스왑영역(swap area, 휘발성 저장공간)?
백킹스토어(backing store)라고도 불리는 이 영역은
디스크 내에 파일 시스템(비휘발성 저장공간)과는 별도로 존재하는 일정 영역
프로세스가 수행되는 동안에만 디스크에 일시적으로 저장이 가능한 영역 - 일어나는 과정
- 스와퍼(swapper) 라는 중기 스케줄러(midum-term scheduler)에 의해 swap out 시킬 프로세스를 선정
중기 스케줄러: 2023.12.13 - [책/운영체제와 정보기술의 원리] - 5 장 프로세스 관리- 중기 스케줄러: 프로세스의 수를 동적으로 조절하여 메모리 조절하는데 이때 swap out을 사용
- 스와퍼(swapper) 라는 중기 스케줄러(midum-term scheduler)에 의해 swap out 시킬 프로세스를 선정
- 바인딩 방식에 따른 swap in
- 컴파일 타임 바인딩 - 꼭 원래 존재하던 메모리 위치로 다시 복귀
- 로드 타임 바인딩 -꼭 원래 존재하던 메모리 위치로 다시 복귀
- 실시간 바인딩 - 빈 메모리 영역 아무 곳에나 프로세스 올리기 가능
- 소요시간 : 디스크 섹터에서 실제 데이터를 읽고 쓰는 전송(transfer) 시간이 대부분을 차지
'책 > 운영체제와 정보기술의 원리' 카테고리의 다른 글
7장 4. 페이징 기법 (0) | 2023.12.21 |
---|---|
7장 3.물리적 메모리의 할당 방식 (0) | 2023.12.21 |
7 장 메모리관리 - 1. 주소 바인딩 (0) | 2023.12.19 |
6 장 CPU 스케줄링 (0) | 2023.12.18 |
5 장 프로세스 관리 (0) | 2023.12.13 |