Memory Protection
메모리에서 각 각의 프로세스가 서로 간섭해서는 안되기 때문에 memory protection이 필요함
process가 시작하는 메모리 주소를 base, 끝나는 주소를 base+limit로 정하고 이 정보는 각각 레지스터에 담겨있다.
Address Binding
CPU는 프로세스를 실행시킬 때 프로세스의 논리적 주소(logical address)를 참고한다. 이때 logical address만으로는 실제 메모리의 주소를 없으므로 logical memory와 실제 메모리의 주소인 physical memory를 연결시키는 작업이 필요하고 이를 address binding이라 한다.
- source program을 컴파일하면 machine instruction을 가지고 있는 object file이 된다.
- linker가 기존 object file에서 추가로 필요한 라이브러리 같은 다른 object file들을 묶어 executable file을 만들어준다.
- 프로그램이 실제로 실행되야 할때 loader가 프로그램을 메모리에 올려준다.
각 각의 단계에서 memory binding이 일어날 수 있다.
- compile time에서 binding: 컴파일 시점에 프로그램이 실제 어느 물리적 메모리 주소에 위치할지 정한다. 즉 물리적 주소와 논리적 주소가 같다.
- load time에서 binding: 디스크에 있던 프로그램이 load가 되서 메모리에 들어가는 경우에 address가 정해진다. 즉 프로그램이 실행될 때 물리적 메모리의 주소값이 정해지고 프로그램이 끝날 때까지 변경되지 않는다. 이때도 논리적 주소와 물리적 주소가 같다.
- execution time에서 binding: 프로그램의 물리적 주소가 고정된 것이 아니라 실행 중에도 변경할 수 있는 바인딩 방식이다. 계속 옮겨다녀야 하므로 논리적 주소와 물리적 주소가 다르다. 이때 바뀌는 것은 실제 물리적 주소이고 논리적 주소는 변하지 않는다.
MMU
MMU(Memory Management Unit)라는 하드웨어에 의해 논리적 주소에서 물리적 주소로 바뀐다.
base값을 가지고 있는 레지스터인 base register를 relocation register라 부른다. logical address와 physical address가 연속적이라면 logical address에서 relocation register을 더해주어 physical address를 얻는다.
유저 프로그램은 logical address만 보고 physical address는 보지 못한다.
메인메모리는 크게 두 부분으로 나뉘는데 아래쪽은 커널이 사용하고 위쪽은 유저 프로세스가 사용한다.
'학교공부 > 운영체제' 카테고리의 다른 글
[운영체제] File system implementation (0) | 2023.06.06 |
---|---|
[운영체제] File system interface (0) | 2023.06.04 |
Exercise 3. Process Synchronization (0) | 2023.04.24 |
[운영체제] Deadlock (0) | 2023.04.24 |
[운영체제] Synchronization Examples (0) | 2023.04.24 |