기준레지스터와 상한레지스터
현재 많은 컴퓨터들은 메모리에 다수의 프로세스가 올라가 있다.
이때 각각의 프로세스가 할당된 메모리를 독립적으로 보장 받아야 한다. 만일 프로세스1의 공간을 프로세스2에게 침범 당하게 된다면 프로세스1은 정상동작하기 어려울 것이다.
CPU에는 기준레지스터(BaseRegister)와 상한레지스터(Limit Register)가 존재한다. 그리고 이 Register 값들은 오로지 OS의해서만 변경이 가능하다. 이렇게 Register의 값을 가지고 있으면 다음과 같이 흐름도를 그릴 수있다.
상한레지스터는 프로세스의 크기로도 볼 수 있다.
논리주소 vs 물리주소
논리주소(logical address)
CPU가 생성하는 주소, 가상주소(virtual address)라고도 한다.
물리주소(physical address)
실제 메모리의 주소
주소바인딩 (Address Binding)
논리주소를 물리주소로 매핑해주는 작업
우리가 프로그램을 만들때 직접 메모리주소를 지정하면서 하지 않고 변수, 메소드 명을 통해서 그곳에 있는 값을 참조해서 쓰라고 한다. 그리고 이것을 symbolic address라고 한다.
symbolic address → logical address → physical address
주소 바인딩은 총 3가지 종류가 있다.
컴파일 바인딩(compile binding)
- 물리주소가 컴파일 시에 결정 되는거다.
- 위치 변경시 재컴파일
- 절대코드 생성
- 하나의 프로세스만 사용하는 시스템에서는 사용하지만 현대의 컴퓨터 시스템에서는 활용하지 않는다.
로드타임바인딩(load time binding)
- 프로그램이 메모리에 로드 될 때 물리주소가 결정
- 컴파일러가 재배치 가능코드를 만든다.
런타임바인딩(execution time binding)
- 프로세스가 실행 중에도 메모리의 위치를 바꿀 수 있음.
- CPU가 주소를 참조 할 때 마다 binding을 점검(Address mapping table)
- 논리주소를 물리주소로 바꿔줘야 하기 때문에 hw(MMU)가 필요하다.
- 현대 프로그램들은 사용하고 있는 바인딩 방법
MMU(Memory management Unit)
프로그램이 실행 중에는 논리주소를 물리주소로 바꿔주기 위한 mapping 장치이다. MMU 안에 재배치 레지스터 (Relocation Register)가 있어 메모리로 보내질 때마다 재배치 레지스터 값이 더해진다.
위에 설명한 기준레지스터는 이제 재배치레지스터가 된다
참고자료
- Operating System concept 10th
- 웨지의 개발블로그 https://sihyung92.oopy.io/os/8
'CS > 운영체제' 카테고리의 다른 글
프로세스 동기화(Process Synchronization) #1 (0) | 2024.07.07 |
---|---|
요구페이징(Demand paging) (0) | 2024.07.04 |
메모리 할당 (0) | 2024.07.01 |
인터럽트(Interrupt) (0) | 2024.06.27 |
운영체제란 무엇인가? (0) | 2024.06.23 |