반응형
메모리 관리
컴퓨터 내의 한정 된 메모리를 극한으로 활용해야 하며 가상메모리, 메모리 할당 기법 등이 발달함.
가상 메모리
가상 메모리는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매이 큰 메모리로 보이게 만드는 것.
이때 가상적으로 주어진 주소를 가상 주소라고 하며, 실제 메모리상에 있는 주소를 실제 주소(physical address)라고 함. 가상 주소는 메모리관리 장치(MMU)에 의해 실제 주소로 변환되며, 이덕 분에 사용자는 실제 주소를 의식할 필요 없이 프로그램 구축이 가능해짐.
MMU
- 프로세스는 독립적인 메모리 공간을 가져야 되고, 자신의 공간만 접근해야함
- 따라서 한 프로세스에게 합법적인 주소 영역을 설정하고, 잘못된 접근이 오면 trap을 발생시켜 보호함
- 이때 base와 limit 레지스터를 활용하여 메모리를 보호함
- base 레지스터 : 메모리 상의 프로세스 시작주소를 물리 주소로 저장
- limit 레지스터 : 프로세스의 사이즈를 저장함
- 따라서 프로세스의 접근 가능한 메모리 영역은 base <=x < base +limit이 됨.
가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가 들어 있는 '페이지 테이블'로 관리됨. 이때 속도 향상을 위해 TLB를 사용함
TLB
- 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시, 페이지 테이블에 있는 리스트를 보관하며 CPU가 페이지 테이블까지 가지 않도록 하여 속도를 향상 시킬 수 있는 캐시 계층임
스와핑과 페이지 폴트
스와핑
- 가상 메모리에는 존재하지만 실제 메모리인 RAM에는 현재 없는 데이터나 코드에 접근할 경우 페이지 폴트가 발생함.
- 이때 메모리에서 당장 사용하지 않는 영역을 하드디스크로 옮기고 하드디스크의 일부분을 마치 메모리처럼 불러와 쓰는 기법을 스와핑이라 함
페이지 폴트
- 프로세스의 주소 공간에는 존재하지만, 지금 이 컴퓨터의 RAM에는 없는 데이터에 접근할 경우 발생
페이지 폴트가 일어나 스와핑이 일어나는 과정
- 어떤 명령어가 유효한 가상 주소에 접근했으나 해당 페이지가 만약 없다면 트랩이 발생되어 운영체제에 알리게 됨
- 운영체제는 실제 디스크로부터 사용하지 않은 프레임을 찾음
- 해당 프레임을 실제 메모리에 가져와서 페이지 교체 알고리즘을 기반으로 특정 페이지와 교체함(이때 스와핑 발생)
- 페이지 테이블을 갱신시킨 후 해당 명령어를 다시 시작
페이지 : 가상 메모리를 사용하는 최소 크기 단위
프레임 : 실제 메모리를 사용하는 최소 크기 단위
스레싱
메모리의 페이지 폴트율이 높은 것을 의미하며, 이는 컴퓨터의 성능 저하를 초래함
발생하는 원리
- 스레싱은 메모리에 너무 많은 프로세스가 동시에 올라가면 스와핑이 많이 일어나서 발생하는 것
- 페이지 폴트가 일어나면 CPU이용률이 낮아짐
- CPU이용률이 낮아지게 되어 운영체제는 가용성을 높이기 위해, 더 많은 프로세스를 메모리에 올림
- 이때 악순환이 반복되며 스레싱이 일어남
해결 방법
- 메모리를 증가시킴
- HDD를 SDD로 바꿈
- 운영체제 측면에서 해결하는 방법
- 작업세트
- 프로세스의 과거 사용 이력인 지역성을 통해 결정된 페이지 집합을 만들어서 미리 메모리에 로드함
- PFF(Page Fault Frequency)
- 페이지 폴트 빈도를 조절하여 상한선과 하한선을 만듬
- 작업세트
'CS 전공지식 > Operating System' 카테고리의 다른 글
[운영체제] 메모리와 캐시 (0) | 2024.06.03 |
---|---|
[운영체제] CPU 스케줄링과 알고리즘 (1) | 2024.06.03 |
[운영체제] Mutex(뮤텍스), Semaphore(세마포어), Deadlock(데드락) (0) | 2024.06.02 |
[운영체제] 멀티 스레드와 임계영역(Critical Section) (0) | 2024.06.02 |
[운영체제] 멀티 프로세스와 PCB (1) | 2024.06.02 |