캐시 메모리는 속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리이다. CPU가 메인메모리에 접근하기 전에 캐시 메모리에서 원하는 데이터 존재 여부를 확인하는데,
이때 필요한 데이터가 있는 경우 Hit(적중), 없는 경우 Miss(실패)라고 한다. 요청한 데이터를 캐시 메모리에서 찾을 확률은 Hit Ratio(적중률)이라고 한다. 캐시 메모리의 성능은 적중률에 의해 결정된다.
캐시가 효율적으로 동작하려면, 캐시의 적중률을 극대화 시켜야 한다. 캐시의 적중률을 극대화 시키기 위해서는 캐시에 저장할 데이터가 지역성(Locality)을 가져야한다.
지역성이란, 데이터 접근이 시간적 혹은 공간적으로 가깝게 일어나는 것을 의미한다. 지역성의 전제조건으로 프로그램은 모든 코드나 데이터를 균등하게 Access 하지 않는다는 특성을 기본으로 한다.
즉, Locality란 기억 장치 내의 정보를 균일하게 Access 하는 것이 아닌 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성인 것이다. 이 데이터 지역성은 대표적으로 시간 지역성(Temporal Locality)과 공간 지역성(Spatial Locality)으로 나뉜다.
선점 스케줄링에서 CPU가 제한된 시간 동안 프로세스에 할당된다는 것입니다. 실행 프로세스는 실행 중간에 중단될 수 있다. 프로세스를 준비 상태에서 실행 상태, 바이스 (vise-verse)로 전환하고 준비 대기열을 유지 관리하는 오버 헤드 를 가지고 있다.
비선점 스케줄링에서 CPU는 프로세스가 종료 되거나 대기 상태로 전환 될 때까지 프로세스에 할당됩니다. 행 프로세스는 실행 도중에 중단되지 않는다. 프로세스를 실행 상태에서 준비 상태로 전환하는 오버 헤드 가 없다.
선점
비선점
가상 메모리란 물리 메모리의 위치를 가상화된 위치로 가리키는 것이다.
가상 메모리 시스템을 사용하기 위해선 가상 주소 / 물리 주소가 필요
가상 주소 : 프로세스가 참조하는 주소
물리 주소 : 실제 메모리 주소
대게 현대의 운영체제에서 사용하는 프로그램들은 고정된 메모리 위치를 가리키게 되면 의도하지 않게 메모리를 공유할 여지가 생기게 된다.
이런 점을 방지하기 위해 고안된 기법이다.
이를 통해 프로그램이 시작되는 시점에 운영체제가 프로그램마다 다른 가상 주소를 부여하여 각 프로그램이 같은 위치를 가리키더라도 실제로는 서로 다른 위치의 물리 주소를 가리키도록 한다,
이러한 특성 때문에 물리적인 메모리의 주소가 연속적일 필요가 없고, 따라서 가상 메모리가 꼭 주 메모리의 영역만을 가리키는 것이 아닌 보조 메모리(하드디스크나 SSD) 등의 위치를 가리키도록 지정할 수 있다.
통상적으로 대부분의 운영체제가 이 기능을 사용하다보니 소프트웨어 적으로 이 기능을 수행하지 않고 MMU라는 하드웨어가 상기 과정을 수행하도록 되어있다.
메모리의 낮은 주소 영역엔 커널이 상주해있고 메모리의 높은 주소 영역엔 사용자 프로그램이 올라가게 된다. 이때 사용자 프로그램을 할당하는 방식에 따라 연속할당과 불연속할당으로 나눌 수 있다.
연속할당은 다시 고정 분할 방식과 가변 분할 방식으로 나뉜다.
불연속할당은 하나의 프로세스를 여러 물리적 메모리에 나우어 적재하는 방법이며 페이징, 세그먼테이션, 페이지드 세그먼테이션 기법 등이 있다.