HJW's IT Blog

OS: Dynamic Relocation 본문

OS

OS: Dynamic Relocation

kiki1875 2023. 5. 23. 10:11

Implementing 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을 할당 받는다.       

Dynamic Partitioning

 

          > Compaction 이란?

                    >> Dynamic relocation 에서 사용되는 기법중 하나로 메모리에 할당된 객체들을 한 곳으로 모으는 것

                    >> 메모리 사용 효율 향상

Compaction

 

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