-
6. 메모리 주소와 바인딩Computer Science/Operating System 2022. 3. 29. 00:58728x90
메모리 주소
- 논리 주소와 물리 주소논리 주소는 프로세스마다 독립적으로 가지는 가상 메모리의 주소로 각 프로세스마다 0번지부터 시작된다. 물리 주소는 메모리에 실제 프로세스가 적재되는 절대적 위치를 말한다.
참고로, CPU는 물리적 주소가 아닌 논리적 주소를 확인한다. CPU가 기계어를 실행하면서 코드의 주소들은 논리적 주소이므로 메모리에 접근을 할때마다 MMU를 통해 주소 변환을 하여 메모리 접근을 해야한다.MMU(Memory Management Unit) : 논리적 주소를 물리적 주소로 매핑 해주는 하드웨어
사용자 프로세스가 CPU에서 수행되며 생성해내는 모든 논리 주소값에 대해 relocation register(재할당 레지스터) 값을 더한다. 이때, 논리적 주소가 limit register 값보다 작아야 변환이 가능하며 더 클 경우 트랩(주소 에러)가 발생한다.
운영체제 및 사용자 프로세스 간 메모리 보호를 위해 사용하는 레지스터는 아래와 같다.
relocation register : 접근할 수 있는 물리적 메모리 주소의 최소값
limit register : 논리적 주소의 범위
주소 바인딩주소를 결정하는 작업으로 물리적 주소로의 변환 방식은 다음과 같다.
심볼릭 주소(소스코드에서의 주소)-> 논리적 주소(컴파일 후 실행파일에서의 주소)
-> 물리적 주소(3가지 방식의 바인딩)
[Compile time binding] : 물리적 메모리 주소가 컴파일 시점에 결정되어 알려진다.
[Load time binding] : loader의 책임하에 물리적 메모리 주소를 부여한다. loading은 메모리로 적재하는 것을 말한다.
[Runtime binding] : 실행을 한 이후로도 프로세스의 메모리 상 위치를 변경할 수 있다. CPU가 주소를 참조할 때마다 바인딩 점검이 필요하다. 단, MMU와 같은 하드웨어적인 자원이 필요하다.프로세스가 메모리의 크기를 고려해 원활한 적재를 수행하거나 효율성을 높이기 위해 아래와 같은 작업들을 할 수 있다.
dynamic loading
프로세스 전체를 메모리에 미리 다 올리는 것이 아닌 해당 루틴이 불려질 때 메모리에 load하는 것이다. 메모리 이용률이 향상되고 사용되는 코드가 많은 경우 유용하다.
overlay프로세스의 일부분 중 실제 필요한 정보만 물리 메모리에 올리는 것. 프로세스의 크기가 메모리보다 클 때 유용하다. 사용자에 의해 구현할 수 있고 작은 공간의 메모리를 사용하던 시스템에서 프로그래머가 직접 구현해서 많이 사용되었다.
swapping프로세스를 일시적으로 메모리에서 스왑 영역으로 쫓아내는 것
Swap in : 우선순위가 높은 프로세스를 메모리에 올려놓는 것
Swap out : 우선순위가 낮은 프로세스를 스왑 영역으로 내쫓는 것
일반적으로는 Swapper에 의해 Swap out시킬 프로세스를 선정한다. 스왑 시간은 대부분 전송 시간(스왑되는 양에 비례)을 차지한다.728x90'Computer Science > Operating System' 카테고리의 다른 글
5. 교착상태(Deadlock) (0) 2022.03.21 4. 프로세스 병행 제어와 동기화 (0) 2022.03.13 3. CPU 스케줄링 (0) 2022.03.07 2. 프로세스 관리 (0) 2022.02.28 1. 운영체제와 컴퓨터 시스템의 구조 (0) 2022.02.21