*Address Binding Time
compile time binding : 만일 process가 memory내에 들어갈 위치를 컴파일 시간에 미리 알수 있다면 컴파일러는 절대코드를 생성가능
load time binding : 이진코드를 재배치 가능 코드로 만듬
execution time binding : process가 실행하는 중간에 memory 내의 한 segment에서 다른 segment로 옮겨질수 있다면 바인딩이 실행시간까지 허용되었다고 함
*Logical vs Physical Address
logical address : cpu가 생성하는 주소
physical address: 메모리가 취급하는 주소
compile-time binding과 load-time binding에서는 logical addr = physical addr
execution-time binding은 logical addr != physical addr
*MMU(Memory Management Unit)
*Dynamic Loading
각 routine이 재배치 가능 상태로 디스크에 대기하다가, 필요할때 적재. 사용되지 않는 routine은 적재 되지 않는다.
*Dynamic Llinking
linking이 실행시간 까지 미루어짐. 라이브러리를 부르는 곳마다 stub이 생겨서 메모리를 찾는방법과 없을경우 라이브러리 적재방법을 알려준다.
*Swapping
일시적으로 process를 main memory에서 disk로 이동시켰다가 다시 memory로 이동시키는것.
목적 : process들을 실행하는데 필요한 공간이 physical memory공간을 초과할때 사용
roll in, roll out : 더 높은 우선순위의 process가 swap-in 되고 더 낮은 우선순위의 procss가 swap-out 되는것
* Contiguous Memory Allocation : 연속적으로 memory 할당
1) First Fit : 충분히 큰 첫번째 구멍에 할당
2) Best Fit : 충분히 큰 가장작은 구멍에 할당
3) Worst Fit : 가장 큰 구멍에 할당
일반적으로 first fit, best fit이 worst fit보다 성능이 좋다.
* Fragmentation
1) External Fragmentation : 충분한 전체 memory 공간이 있지만, 연속적이지 않음
줄이는 법 : Compaction(메모리의 모든 내용들을 한군데로 몰고 모든 자유공간을 한군데로 몰아서 큰블록을 만드는 것) -> 비용이 많이 듬, 프로세스들의 재배치가 실행시간에 동적으로 이루어지는 경우만 가능
2) Internal Fragmentation : 할당된 공간이 요구된 공간보다 약간 큰 경우, 두 크기의 차이가 internal fragmentation
댓글
댓글 쓰기