| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- java
- Google OAuth
- Volatile
- 일급 컬렉션
- synchronized
- Dependency Injection
- spring security
- builder
- Spring
- factory
- 일급 객체
- lombok
- OAuth 2.0
- Today
- Total
HJW's IT Blog
OS: Dynamic Relocation 본문

> MMU는 주소공간을 보호하고, 가상 주소로 변환한다(Translation)
>> Base register는 프로세스의 최하위 가상 주소를 가지고 있다 (loader가 정함)
>> Limit register는 프로세스의 최상위 가상 주소를 가지고 있다 (compiler가 정함)
>> Translation 이란?
>>> Physical addr = Virtual addr + base reg
>> Protection 이란?
>>> if (virtual addr > limit) ~>address exception으로 OS에 가두어 둔다
Dynamic Relocation - OS vs. User Programs
> User program(aka. process) 는 각자의 가상 메모리를 가진다
>> Relocation 모드에서 실행된다: PSW(program status word) 에 있는 비트로 표시된다
>> User Program 은 relocation mode 를 변경할 수 없다
> OS 는 물리 주소를 직접 접근한다
>> Relocation 모드가 꺼진 상태, kernel mode 에서 실행된다
> User Program이 syscall 을 호출하면...
>> CPU는 즉시 kernel mode로 돌입, relocation 을 끄고 trap handler로 trap 된다
>> OS trap handler는 물리 메모리에 접근하고 syscall 을 수행하기 위한 작업을 한다
>> CPU는 relocation을 키고 user mode로 돌입, user program으로 돌아간다
Dynamic Relocation and Partitioning
> 물리적 메모리 공간은 partition으로 나누어 진다
>> 프로세스는 free partition에 로드 된다(hole 에)
> Fixed-size partitions
>> 메모리는 미리 정해진 수의 고정 크기 partition으로 나누어 진다
<Partition의 크기는 같을 수도 다를수도 있다>
>> First-fit, Best-fit 등 을 사용하여 할당
>> Partition의 수가 multiprogramming의 수준을 결정 ( 동시에 돌아가는 프로세스의 수)
> Dynamic partitions
>> 프로세스가 메모리에 올라가면 그 크기에 딱 맞는 partition을 할당 받는다.

> Compaction 이란?
>> Dynamic relocation 에서 사용되는 기법중 하나로 메모리에 할당된 객체들을 한 곳으로 모으는 것
>> 메모리 사용 효율 향상

Swapping
> 모든 프로세스가 메모리에 로드되기에 공간이 부족하면, 몇 몇 프로세스는 공간을 만들기 위해 'swapped out' 된다
>> swap 될 때, OS 는 해당 프로세스의 모든 상태를 디스크에 저장한다
>> OS 는 ready / blocked process가 사용한 공간을 가져올 수 있다
> Process 가 다시 active(running) 상태가 될 때, OS는 해당 프로세스를 'swap in' 시켜야 한다
>> Static Relocation의 경우, 이전과 같은 메모리 공간에 되어야 한다
>> Dynamic Relocation 의 경우, free 한 공간 어느곳이든 들어갈 수 있다
Evaluation of Dynamic Relocation
> Adventages
>> OS가 프로세스를 쉽게 옯길 수 있다
>> OS가 프로세스가 커지게 할 수 있다
>> HW의 변경은 최소화 되지만 충분히 효율적이며 빠르다
>> Transparency, safety, efficiency: 모두 충족(but small overhead)
> Disadventages
>> Static relocation에 비해 memory addressing 이 느리다(translation이 있기 때문)
>> Memory 할당이 복잡하다 ( partition, holes, fragmentation)
>> 프로세스가 커지면 OS가 옮겨야 한다
>> 물리적 메모리 크기에 한정되어 있다
>> 프로세스 사이에 코드나 데이터를 공유할 수 없다.
'OS' 카테고리의 다른 글
| OS: Paging (0) | 2023.05.23 |
|---|---|
| OS: Segmentation (0) | 2023.05.23 |
| OS: Memory Management (0) | 2023.05.16 |
| OS: Deadlock Avoidance (0) | 2023.05.16 |
| OS: Synchronization (0) | 2023.04.11 |