기억을 위한 장치
메모리
메모리는 데이터, 상태 등을 기록하는 저장 장치를 말합니다. 일반적으로 공장에 비유해서 설명을 많이 하는데, CPU는 공장에서 일하는 작업자, 메모리는 작업 현장, 보조저장장치(HDD, SDD)는 자재 창고로 생각해볼 수 있습니다. 자재 창고(보조기억장치)에서 원자재를 가져다가 작업현장(메모리, 주기억장치)에 놓으면 작업자(CPU)가 실제로 작업을 진행하는 것입니다.
메모리 계층
레지스터 |
캐시 |
메모리 |
저장장치 |
메모리도 여러 계층이 있습니다. 먼저 레지스터, 캐시, 메모리를 주 기억장치, 저장 장치(SDD, HD)를 보조기억장치라고 합니다. 상위 계층일수록 속도가 빠르지만, 용량이 작아지고 가격이 비쌉니다. CPU와 메모리의 속도 차이가 커서 병목현상이 발생하기 때문에 이런 속도 차이를 극복하기 위해서 캐시 메모리를 사용합니다. 레지스터는 CPU 안에 있는 가장 빠른 메모리입니다. 그다음으로 빠른 메모리인 캐시는 CPU 칩 안에 들어가는데, CPU와의 거리에 따라서 계층이 나뉩니다.(L1, L2, L3, 숫자가 작을수록 CPU와 가까움). 그리고 프로그램 구성에 직접적인 역할을 하는 메모리가 있으며, 프로그램 구동에는 영향을 미치지 않고 데이터 저장소의 역할만 하는 저장 장치(보조기억장치)가 있습니다.
메모리 관리
한정된 자원인 메모리를 효율적으로 사용하는 방법입니다.
가상 메모리는 프로그램이 실행하기 위해 필요한 최소 부분만 메모리에 올려두는 기술입니다. 이 기술을 통해 메모리 부족 문제를 해결하게 되었습니다. 이때 메모리에 실제 주소가 아닌 가상의 논리 주소를 사용하는데, 메모리 관리 장치인 MMU를 통해서 논리 주소를 실제 주소로 변환합니다. 이런 변환작업에서의 부하를 개선하기 위해서 TLB라는 주소변환 캐시 계층을 둬서 가장 최근에 사용한 주소를 변환 테이블 위에 올려두는 방식을 사용합니다. 가상 메모리에는 존재하지만, RAM의 실제 주소가 없는 경우에는 페이지 폴트가 발생하게 됩니다. 페이지 폴트가 발생하면 운영체제에서 해결한 뒤에 동일한 작업을 다시 수행합니다.
스레싱은 페이지 폴트가 많이 발생하는 것을 말합니다. 스레싱이 발생하면 CPU 이용률이 확 떨어지게 되는데, 운영체제가 이것을 보고 CPU가 여유 있다고 판단하여 메모리에 더 많은 프로세스를 올리게 되고, 결국 컴퓨터가 느려지는 악순환이 반복되게 됩니다. 메모리의 성능을 올리거나, HDD에서 SDD로 변경하여 해결할 수 있습니다. 또한 과거 프로세스 이력을 바탕으로 미리 메모리에 올리는 작업 세트, 상한선과 하한선을 정해서 페이지 폴트 빈도를 조절하는 PFF를 통해 해결할 수 있습니다.
메모리에 프로세스를 할당할 땐, 순서대로 공간에 할당하는 연속 할당, 메모리를 동일한 크기로 쪼갠 뒤 프로세스별로 할당하는 불연속 할당이 있습니다.
댓글