페이지 폴트 (page fault) 어떤 페이지가 실제 물리 메모리에 없을 때 일어나는 인터럽트 운영 체제가 page fault가 일어나면 해당 페이지를 물리 메모리에 올림 생각해보기 페이지 폴트가 자주 일어나면? 실행되기 전에 해당 페이지를 물리 메모리에 올려야 함 - 시간이 오래 거림 페이지 폴트가 안 일어나게 하려면? 향후 실행/참조될 코드/데이터를 미리 물리 메모리에 올리면 됨 - 앞으로 있을 일을 예측해야한다 -> 신의 영역이다 페이지 교체 정책 (page replacement policy) 운영체제가 특정 페이지를 물리 메모리에 올리려 하는데 물리 메모리가 다 차있다면? 기존 페이지 중 하나를 물리 메모리에서 저장 매체로 내리고 (저장) 새로운 페이지를 해당 물리 메모리 공간에 올린다 페이지 ..
페이징 시스템 (paging system) 크기가 동일한 페이지로 가상 주소 공간과 이에 매칭하는 물리 주소 공간을 관리 하드웨어 지원이 필요 리눅스에서는 4KB로 paging 페이지 번호를 기반으로 가상 주소/물리 주소 매핑 정보를 기록/사용 페이징 시스템 구조 page 또는 page frame : 고정된 크기의 block (4KB) paging system : 가상 주소 v = (p, d) p : 가상 메모리 페이지 d : p안에서 참조하는 위치 페이지 크기가 4KB 예 가상 주소의 0비트에서 11비트가 변위 (d)를 나타내고 12비트 이상이 페이지 번호가 될 수 있음 페이지 테이블 (page table) * page table 물리 주소에 있는 페이지 번호와 해당 페이지의 첫 물리 주소 정보를 매핑..
가상 메모리 (Virtual Memory System) * 실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기가 한계가 있음 폰노이만 구조 기반이므로 코드는 메모리에 반드시 있어야 함 가상 메모리가 왜 필요한가? * 하나의 프로세스만 실행 가능한 시스템 (배치 처리 시스템 등) 1. 프로그램을 메모리로 로드(load) 2. 프로세스 실행 3. 프로세스 종료 (메모리 해제) * 여러 프로세스 동시 실행 시스템 1. 메모리 용량 부족 이슈 2. 프로세스 메모리 영역간에 침범 이슈 * 가상 메모리 : 메모리가 실제 메모리보다 많아 보이게 하는 기술 - 실제 사용하는 메모리는 작다는 점에 착안해서 고안된 기술 - 프로세스간 공간 분리로 프로세스 이슈가 전체 시스템에 영향을 주지 않을 수 있음 가상 메..
Mutex 와 세마포어 (Semaphore) * Critical Section (임계 구역)에 대한 접근을 막기 위해 LOCKING 매커니즘이 필요 - Mutex (binary semaphore) : 임계구역에 하나의 스레드만 들어갈 수 있음 - Semaphore : 임계구역에 여러 스레드가 들어갈 수 있음 : counter를 두어서 동시에 리소스에 접근할 수 있는 허용 가능한 스레드 수를 제어 세마포어 (Semaphore) * P : 검사 (임계영역에 들어갈 때) - S값이 1 이상이면 임계 영역 진입 후 S값 1 차감 (S값이 0이면 대기) * V : 증가 (임계영역에서 나올 때) - S값을 1 더하고 임계 영역을 나옴 * S : 세마포어 값 (초기 값만큼 여러 프로세스가 동시 임계 영역 접근 가능)..