W2AS2L
2023. 8. 10. 17:34
2023. 8. 10. 17:34
CPU는 메모리에 올라와 있는 프로그램의 명령어들을 실행할 뿐이다.
메모리 계층
- 레지스터
- CPU 안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 용량 가장 적음
- 캐시
- L1,L2 캐시를 지칭 휘발성, 속도 빠름, 용량적음
- 주기억장치
- RAM을 뜻한다. 휘발성, 속도 보통, 용량 보통
- 램은 하드디스크로 부터 일정량의 데이터를 복사 → 임시저장 → 필요시 cpu에 전달
- 저장장치(HDD, SSD)/보조기억장치
캐시
- 데이터를 미리 복사해 놓는 임시 저장소
- 빠른 장치와 느린 장치에서 속도 차이에 따른 병목현상을 줄이기 위한 메모리
시간 지역성
공간 지역성
- 최근 접근한 데이터를 이루고 있는 공간이나 가까운 공간에 접근하는 특성
캐시 히트
- 캐시에서 원하는 데이터를 찾는 행위
- 해당 데이터를 제어장치를 거쳐 가져오게 된다.
- cpu 내부 버스 기반으로 작동하기 때문에 빠르다
캐시 미스
- 데이터가 캐시에 없다면 주 메모리로 가서 데이터를 찾아오는 것
- 시스템 버스 기반으로 작동하기 때문에 느리다.
캐시 매핑
- 캐시가 히트되기 위해 매핑하는 방법
- CPU의 레지스터와 주 메모리 간에 데이터를 주고받을 때를 기반으로 설명
- 메모리 용량 차이가 나기 때문
- 직접매핑
- 연관매핑
- 순서를 일치시키지 않고 관련 있는 캐시와 메모리를 매핑
- 충돌은 적지만 모든 블럭을 탐색해서 속도가 느리다.
- 집합 연관 매핑
- 위 두개를 합침 순서를 일치시키지만 집합을 둬서 저장하며 블록화되어 있기 때문에 검색은 좀 더 효율적이다.
웹 브라우저의 캐시
- 웹 브라우저의 작은 저장소 쿠키
- 로컬 스토리지
- 세션 스토리지
- 만료기한이 없는 키-값 저장소
- 탭 단위로 스토리지를 생성하며 탭을 닫을 때 데이터가 삭제된다.
데이터 베이스의 캐싱 계층
메모리 관리
- 운영체제의 역할 중 하나, 한정된 메모리를 극한으로 활용해야 한다.
가상 메모리
- 메모리 관리 기법의 하나로 실제로 이용 가능한 메모리 자원을 추상화하여 큰 메모리로 보이게 만드는 것을 말한다.
- 가상주소
- 가상으로 주어진 주소
- 메모리 관리 장치(MMU)에 의해 실제주소로 변환
- 실제주소
- 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가 들어있는 페이지 테이블로 관리
스와핑
- 가상 메모리에는 존재하지만 실제 메모리인 RAM에는 현재 없는 데이터나 코드에 접근할 경우 페이지 폴트가 발생
- 메모리에서 사용하지 않는 영역을 하드디스크로 옮기고 하드디스크의 일부분을 마치 메모리처럼 불러와서 사용하는것 → 페이지 폴트가 일어나지 않은 것처럼 만든다.
- 페이지 폴트
- 프로세스의 주소 공간에는 존재하지만 ram에 없는 데이터에 접근했을 경우 발생
- 페이지
- 프레임
스레싱
- 메모리의 페이지 폴트율이 높은 것을 의미한다.
- 심각한 성능 저하 초래
- 메모리에 너무 많은 프로세스가 동시에 올라가게 되면 스와핑이 많이 일어나서 발생
- cpu이용률이 낮아진다. 낮아지면 os는 가용성을 높이기 위해 더 많은 프로세스를 메모리에 올린다.
- 메모리를 늘리거나 HDD를 사용한다면 SSD로 바꾸는 방법이 있다.
- 운영체제에서 이를 해결할 수 있는 방법
- 작업 세트
- 프로세스의 과거 사용 이력인 지역성을 통해 결정된 페이지 집합을 만들어서 미리 메모리에 로드하는것.
- 미리 메모리에 로드하면 탐색에 드는 비용을 줄이고 스와핑 또한 줄일 수 있다.
- PFF
- 페이지 폴트 빈도를 조절하는 방법 상한선과, 하한선을 만드는 방법
- 상한선에 도달한다면 프레임을 즐리고 하한선에 도달한다면 프레임을 줄인다.
메모리 할당
- 메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당하는데, 연속 할당과 불연속 할당으로 나뉜다.
- 연속할당
- 메모리에 연속적으로 공간을 할당하는 것을 말한다.
- 고정 분할 방식
- 메모리를 미리 나누어 관리하는 방식
- 내부 단편화 발생
- 메모리를 나눈 크기보다 프로그램이 작아서 들어가지 못하는 공간이 발생하는 현상
- 가변 분할 방식
- 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용
- 외부 단편화 발생
- 메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생하는 현상
- 최초 적합
- 최적 적합
- 프로세스의 크기 이상인 공간 중 가장 작은 홀부터
- 최악 적합
- 프로세스의 크기와 가장 차이가 많이는 홀에 할당
- 불연속 할당
- 현대 운영체제가 쓰는 방법
- 페이징
- 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스를 할당한다.
- 주소 변환이 복잡해진다.
- 세그멘테이션
- 프로세스는 코드, 데이터, 스택, 힙 등으로 이뤄지는데, 코드와 데이터 등 이를 기반으로 나눌 수 있으며 함수 단위로 나눌 수 있음을 의미한다.
- 공유, 보안 측면에서 좋고, 홀 크기가 균일하지 않은 문제가 발생
- 페이지드 세그멘테이션
- 공유나 보안을 의미 단위의 세그먼트로 나누고, 물리적 메모리는 페이지로 나누는 것
페이지 교체 알고리즘
- 메모리는 한정되어 있기 때문에 스와핑이 많이 일어난다. 스와핑은 많이 일어나지 않도록 설계되어야 하며 이는 페이지 교체 알고리즘을 기반으로 스와핑이 일어난다.
- FIFO
- 가장 먼저 온 페이지를 교체 영역에 가장 먼저 놓는 방법을 의미한다.
- LRU(least Recentle Used)
- NUR(Not Used Recently)
- 시계방향으로 탐색하며 최근 참조되지 않은 프로세스를 교체하고 체크하는 방법?
- LFU(Least Frequently Used)