💡 운영체제
란?
운영체제(OS, Operating System)는 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스
펌웨어
: 운영체제와 유사하지만, 소프트웨어를 추가로 설치할 수 없음
⭐️ 메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성됨
👉 계층 위로 올라갈수록 가격⬆️ / 용량 ⬇️ / 속도 ⬆️
💡 캐시 (cache)
란?
데이터를 미리 복사해 놓은 임시 저장소로, 장치간의 속도 차이에 따른 병목 현상을 줄이기 위한 메모리
👉 캐시를 직접 설정할 때는 지역성의 원리
를 기반
⭐️ 캐시히트와 캐시미스
❗️ 캐시 매핑 : 캐시가 히트되기 위해 매핑하는 방법
🔗 캐시 매핑 분류
(directed mapping)
(associative mapping)
(set associative mapping)
🔗 웹 브라우저의 캐시
쿠키
: 만료기한이 있는 키-값 저장소로컬 스토리지
: 만료기한이 없는 키-값 저장소 / 도메인 단위로 저장세션 스토리지
: 만료기한이 없는 키-값 저장소 / 탭 단위로 저장참고 : 데이터베이스 시스템에도 메인 DB 위에
레디스(redis)
데이터베이스 계층을 캐싱 계층으로 두기도 함
💡 컴퓨터 내의 한정된 메모리를 극한으로 활용해야 함!
💡 가상 메모리 (virtual memory)
란?
컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여, 사용자들에게 매우 큰 메모리로 보이게 만드는 메모리 관리 기법
가상 주소 (logical address)
: 가상적으로 주어지는 주소실제/물리 주소 (physical address)
: 실제 메모리상에 있는 주소메모리관리장치 (MMU)
에 의해 실제 주소로 변환❗️ 가상 메모리에는 존재하지만 실제 메모리인 RAM에는 현재 없는 주소에 접근할 경우 페이지 폴트 발생
👉👉 스와핑
페이지 (page)
: 가상 메모리를 사용하는 최소 크기 단위
프레임 (frame)
: 실제 메모리를 사용하는 최소 크기 단위
💡 스레싱 (thrashing)
이란?
메모리에 너무 많은 프로세스가 동시에 올라가면 메모리의 페이지 폴트율이 높아져 스와핑이 많이 일어나서 발생하는 심각한 성능 저하 초래 현상
👉 메모리를 늘리거나, HDD를 SSD로 교체
🔗 운영체제에서 해결 방법
💡 메모리에 프로그램을 할달할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당
🔗 연속 할당 : 메모리에 연속적으로 공간을 할당하는 것
고정 분할 방식 (fixed partition allocation)
: 메모리를 미리 나누어 관리가변 분할 방식 (variable partition allocation)
: 프로그램의 크기에 맞게 동적으로 메모리를 나눠서 사용최초적합(first fit) : 위쪽이나 아래쪽부터 시작해서 홀을 찾으면 바로 할당
최적적합(best fit) : 프로세스의 크기 이상인 공간 중 가장 작은 홀부터 할당
최악적합(worst fit) : 프로세스의 크기와 가장 많이 차이가 나는 홀에 할당
❗️내부 단편화 (internal fragmentation) : 메모리를 나눈 크기보다 프로그램이 작아서 공간이 남는 현상
❗️외부 단편화 (external fragmentation) : 메모리보다 프로그램이 커서 들어가지 못하는 공간이 발생하는 혆상
🔗 불연속 할당 : 메모리에 연속적으로 할당하지 않음 (현대 운영체제가 사용)
페이징 (paging)
: 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스 할당세그멘테이션 (segmentation)
: 페이지 단위가 아닌 의미 단위인 세그먼트로 나누는 방식페이지드 세그멘테이션 (paged segmentation)
: 두 장점을 결합💡 스와핑이 많이 일어나지 않도록 설계해야 함!
🔗 페이지 교체 알고리즘 종류
오프라인(offline) 알고리즘
: 가장 먼 미래에 참조되는 페이지를 선택FIFO
: 가장 먼저 온 페이지 교체LRU (Least Recently Used)
: 참조가 가장 오래된 페이지 교체NUR (Not Used Recently)
: LRU에서 발전한 clock 알고리즘LFU (Least Frequently Used)
: 가장 참조 횟수가 적은 페이지 교체