티스토리 뷰
메모리란?
- 주소로 접근 가능한 워드 혹은 바이트의 배열
- 메모리의 역할
o CPU가 직접 접근하는 유일한 저장장치
o 메모리 시스템은 데이터가 아닌 주소(메모리의 위치)로만 관리
- 메모리는 프로세스에게 주소공간을 할당함 : 주소 바인딩(Address binding)
o 일반적으로 프로세스에게 할당될 실제 메모리 영역은 실행 전에는 고정되지 않음.
o 주소 바인딩은 주소 공간들 사이의 변환/매핑 개념
o 주소 바인딩 시점
1. 컴파일 시간 (Compile time)
소스를 컴파일 하는 중에 적제될 메모리 주소를 생성
위치가 변경되면 다시 컴파일 해야하기 때문에 이 시점에 주소 바인딩을 하는 경우는 아주 간단한 프로그램 뿐
2. 적재 시간 (Load time)
컴파일러는 재배치 가능(relocatable) 코드를 생성
3. 실행 시간 (Execution time)
프로세스가 실행 중에 메모리내에서 위치 변경 가능
가상 메모리 기법에서 활용됨
>> 실행 시간에 주소 바인딩을 하기 위해 논리 주소 공간이라는 개념이 생겨남
o 논리 주소 공간 (Logical address space)
물리주소 |
논리주소 |
메모리 하드웨어의 실제 주소 |
CPU/프로세스가 생성되는 실제 주소 각 프로세스에게 주어지는 전용의 메모리 공간 가상 주소 (Virtual address) |
>> 가상 주소를 물리주소로 변환하는 하드웨어인 메모리 관리 장치(Memory Menagement Unit, MMU)가 필요
메모리 관리 기법
- 메모리 관리의 목적
o 제한된 물리 메모리의 효율적인 할당
o 효율적인 메모리 참조
- 메모리 관리 기법
o 스와핑 (Swapping)
> CPU에서 실행 중이지 않은 프로세스의 메모리 이미지를 저장장치(하드디스크)로 이동
o 페이징 (Paging)
o 연속 메모리 할당 (Continuous memory allocation)
o 세그멘테이션 (Segementation)
'개발 > 운영체제' 카테고리의 다른 글
페이징(Paging) (0) | 2018.01.08 |
---|---|
교착상태(Deadlock) (0) | 2018.01.05 |
락(Lock)과 세마포어(Semaphore) (0) | 2018.01.04 |
스레드(Thread) (0) | 2018.01.04 |