메인 메모리, RAM을 뜻한다. 프로그램 실행 시 필요한 주소, 정보들을 저장하고 가져다 사용할 수 있게 만드는 공간. 즉, 작업을 위해 사용되는 공간.
각각의 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 프로세스의 메모리 공간에 접근할 수 없는 제한이 있다. 단지, 운영체제만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않기 때문에 운영체제에서 메모리를 관리한다. 또한, 멀티프로그래밍 환경으로 변화하며 한정된 메모리를 효율적으로 사용해야했고, 운영체제가 이를 어떻게 관리하는지에 대한 관리방법이 중요해졌다.
실행파일이 로더에 의해 메모리에 올라오고 운영체제는 이 실행파일을 메모리의 어느 부분에 올릴 지 결정한다.
메모리 관리를 위해 사용되는 기법 중 하나입니다. 프로세스를 불러들이기 위한 공간이 메모리에 부족하다면 현재 메모리에 적재된 프로세스들을 내보내고(swap out) 원하는 프로세스를 불러들이는 (swap in) 방식.
표준 방식으로는 round-robin 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 backing store(보조기억장치)로 내보내고 다른 프로세스의 메모리를 불러 들일 수 있다. -> swap 과정
상당한 Context-Switching time이 발생한다. 또한 swapping을 위해서는 현재 메모리의 프로세스가 완전히 휴지상태(idle)임을 확인해야 한다.
모든 작업이 각 작업의 락(공유자원을 잡고 있는 상황)이 풀리길 기다리는 상황
4가지 조건 모두 만족시에 Deadlock 발생
상호배제: 공유자원의 사용은 한번에 한 프로세스만 사용가능. 여러 프로세스가 접근 할 수 없음.
점유대기: 공유자원에 접근중인 한 프로세스가 접근해제를 하지 않고 다른 자원에 접근하려고 기다림.
비선점: 한 프로세스가 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없음.
순환대기: 각 프로세스는 순환적으로 다음 프로세스가 요규하는 자원을 가지고 있음
병행 프로세스에서 프로세스가 실행되는데 필수적인 자원을 끊임없이 사용하지 못하는 상황
우선순위가 높은 프로세스가 우선순위가 낮은 프로세스가 실행되는 것을 계속 막는 상태
스케줄러나 상호배제 알고리즘의 에러로부터 발생
자원 누수에 의해 발생
서비스 거부 공격에 의해 발생
Segmentation
요약: 메모리를 서로 크기가 다른 논리적인 블록 단위인 세그먼트로 분할하여 메모리를 할당하는 기법
사용자가 두 개의 주소로 지정(세그먼트 번호 + 변위)
세그먼트 테이블에는 각 세그먼트의 기준(세그먼트 시작 물리주소)와 한계(세그먼트 길이)를 저장
메모리 할당 종류: 비연속
단점: 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나눠져 못 쓰게 될 수 있다(외부 단편화)
Paging
요약: 프로세스를 일정 크기인 페이지로 잘라서 메모리에 적재하는 방식
메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리법
물리 메모리는 Frame이라는 고정 크기로 분리돼 있고, 논리 메모리(프로세스가 점유하는)는 페이지라 불리는 고정 블록으로 분리된다.
메모리 할당 종류: 비연속
단점: 내부 단편화 문제의 비중이 늘어나게 된다.