Allocation
Static Allocation
- Program 실행 전, Compile Time에 결정되는 것
- Static, Global 변수들
Dynamic Allocation
- Run-Time에 결정되는 것
- Program이 실행되면서 필요에 따라 Dynamic하게 Memory 할당
필요성
앞으로 얼마나 많은 Memory가 사용될 지 모르기 때문
Memory Management
Main Memory Part
Operating System
세분화 작업은 OS에 의해서 동적으로 수행됨 => Memory Management
User Part
OS 영역 외 User Program이 적재되는 공간
Requirements
Relocation
프로그램이 어디에 배치될 지 미리 알 수가 없음
프로그램이 Memory 공간에 따라 swap되서 들어올 수도, 밖으로 나갈 수도 있음
그래서 메모리에 적재할 때 relocate함
Protection
프로세스가 다른 프로세스에게 방해 받으면 안됨
=> 그 Process에 할당된 Memory Space에만 접근 가능하도록 보장해야 함
RunTime에 Memory References를 Check하고 비정상적일 경우 실행 시점에 abort를 시켜야 함
Sharing
Protection에도 Flexibility를 갖추어야 함
만약 다수의 Process가 동일한 Program을 실행할 때, 각각의 Process마다 별도의 Program Copy 본을 가지고 있는 것이 아니라, 코드를 공유해서 Access할 수 있도록 함
Kernel Code와 Data 또한 Share 되는 것
Logical Organization
램과 프로그램의 구성이 다름
램은 그냥 Byte 단위로 공간을 인식, Program은 논리적으로 특성별로 모듈로 구분해서 관리함
Sharing과 Protection이 모듈 Level에서 제공된다면 효과적으로 관리할 수 있음
Physical Organization
Memory는 Main Memory와 Secondary Memory로 나뉘어지고,
Main Memory에는 필요한 만큼만 부분 적재하고 나머지는 Disk에 두어서 효율적으로 공간을 Saving함
Types of Addresses
Symbolic address
변수, 상수, 코드의 주소 등
Logical address (상대 주소, 가상 주소)
프로세스 내에서의 위치
프로세스 시작 위치를 0이라고 봄
Physical address (절대 주소)
Main Memory에서의 실제 주소
Address Space
Memory에서 Process 시점의 주소
프로세스 관점(Logical)의 주소로 Compile됨 (Physical Address X)
실행될 때 물리 주소로 Translation 되는데, Address Translation 하는 걸 사용자한테 보여줄 필요 없으므로 Process에게 Transparent(숨김)처리 함