CPU는 메모리에 올라와 있는 프로그램의 명령어들을 실행할 뿐이다.

메모리 계층

  • 레지스터
    • CPU 안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 용량 가장 적음
  • 캐시
    • L1,L2 캐시를 지칭 휘발성, 속도 빠름, 용량적음
  • 주기억장치
    • RAM을 뜻한다. 휘발성, 속도 보통, 용량 보통
    • 램은 하드디스크로 부터 일정량의 데이터를 복사 → 임시저장 → 필요시 cpu에 전달
  • 저장장치(HDD, SSD)/보조기억장치
    • 비휘발성, 속도 낮음, 용량 높음

캐시

  • 데이터를 미리 복사해 놓는 임시 저장소
  • 빠른 장치와 느린 장치에서 속도 차이에 따른 병목현상을 줄이기 위한 메모리

시간 지역성

  • 최근 사용한 데이터에 다시 접근하려는 특성

공간 지역성

  • 최근 접근한 데이터를 이루고 있는 공간이나 가까운 공간에 접근하는 특성

캐시 히트

  • 캐시에서 원하는 데이터를 찾는 행위
  • 해당 데이터를 제어장치를 거쳐 가져오게 된다.
  • cpu 내부 버스 기반으로 작동하기 때문에 빠르다

캐시 미스

  • 데이터가 캐시에 없다면 주 메모리로 가서 데이터를 찾아오는 것
  • 시스템 버스 기반으로 작동하기 때문에 느리다.

캐시 매핑

  • 캐시가 히트되기 위해 매핑하는 방법
  • CPU의 레지스터와 주 메모리 간에 데이터를 주고받을 때를 기반으로 설명
  • 메모리 용량 차이가 나기 때문
    • 직접매핑
      • 처리가 빠르지만 충돌이 잦음
    • 연관매핑
      • 순서를 일치시키지 않고 관련 있는 캐시와 메모리를 매핑
      • 충돌은 적지만 모든 블럭을 탐색해서 속도가 느리다.
    • 집합 연관 매핑
      • 위 두개를 합침 순서를 일치시키지만 집합을 둬서 저장하며 블록화되어 있기 때문에 검색은 좀 더 효율적이다.

웹 브라우저의 캐시

  • 웹 브라우저의 작은 저장소 쿠키
    • 만료기한이 있는 키-값 저장소
  • 로컬 스토리지
    • 만료기한이 없는 키-값 저장소
  • 세션 스토리지
    • 만료기한이 없는 키-값 저장소
    • 탭 단위로 스토리지를 생성하며 탭을 닫을 때 데이터가 삭제된다.

데이터 베이스의 캐싱 계층

  • ex) redis

메모리 관리

  • 운영체제의 역할 중 하나, 한정된 메모리를 극한으로 활용해야 한다.

가상 메모리

  • 메모리 관리 기법의 하나로 실제로 이용 가능한 메모리 자원을 추상화하여 큰 메모리로 보이게 만드는 것을 말한다.
  • 가상주소
    • 가상으로 주어진 주소
    • 메모리 관리 장치(MMU)에 의해 실제주소로 변환
  • 실제주소
    • 실제 메모리에 존재하는 주소
  • 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가 들어있는 페이지 테이블로 관리

스와핑

  • 가상 메모리에는 존재하지만 실제 메모리인 RAM에는 현재 없는 데이터나 코드에 접근할 경우 페이지 폴트가 발생
  • 메모리에서 사용하지 않는 영역을 하드디스크로 옮기고 하드디스크의 일부분을 마치 메모리처럼 불러와서 사용하는것 → 페이지 폴트가 일어나지 않은 것처럼 만든다.
  • 페이지 폴트
    • 프로세스의 주소 공간에는 존재하지만 ram에 없는 데이터에 접근했을 경우 발생
  • 페이지
    • 가상 메모리를 사용하는 최소 크기 단위
  • 프레임
    • 실제 메모리를 사용하는 최소 크기 단위

스레싱

  • 메모리의 페이지 폴트율이 높은 것을 의미한다.
  • 심각한 성능 저하 초래
  • 메모리에 너무 많은 프로세스가 동시에 올라가게 되면 스와핑이 많이 일어나서 발생
  • cpu이용률이 낮아진다. 낮아지면 os는 가용성을 높이기 위해 더 많은 프로세스를 메모리에 올린다.
  • 메모리를 늘리거나 HDD를 사용한다면 SSD로 바꾸는 방법이 있다.
  • 운영체제에서 이를 해결할 수 있는 방법
    • 작업 세트
      • 프로세스의 과거 사용 이력인 지역성을 통해 결정된 페이지 집합을 만들어서 미리 메모리에 로드하는것.
      • 미리 메모리에 로드하면 탐색에 드는 비용을 줄이고 스와핑 또한 줄일 수 있다.
    • PFF
      • 페이지 폴트 빈도를 조절하는 방법 상한선과, 하한선을 만드는 방법
      • 상한선에 도달한다면 프레임을 즐리고 하한선에 도달한다면 프레임을 줄인다.

메모리 할당

  • 메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당하는데, 연속 할당과 불연속 할당으로 나뉜다.
  • 연속할당
    • 메모리에 연속적으로 공간을 할당하는 것을 말한다.
      • 고정 분할 방식
        • 메모리를 미리 나누어 관리하는 방식
        • 내부 단편화 발생
          • 메모리를 나눈 크기보다 프로그램이 작아서 들어가지 못하는 공간이 발생하는 현상
      • 가변 분할 방식
        • 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용
        • 외부 단편화 발생
          • 메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생하는 현상
        • 최초 적합
          • 시작 지점부터 홀을 찾으면 바로 할당
        • 최적 적합
          • 프로세스의 크기 이상인 공간 중 가장 작은 홀부터
        • 최악 적합
          • 프로세스의 크기와 가장 차이가 많이는 홀에 할당
  • 불연속 할당
    • 현대 운영체제가 쓰는 방법
    • 페이징
      • 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스를 할당한다.
      • 주소 변환이 복잡해진다.
    • 세그멘테이션
      • 프로세스는 코드, 데이터, 스택, 힙 등으로 이뤄지는데, 코드와 데이터 등 이를 기반으로 나눌 수 있으며 함수 단위로 나눌 수 있음을 의미한다.
      • 공유, 보안 측면에서 좋고, 홀 크기가 균일하지 않은 문제가 발생
    • 페이지드 세그멘테이션
      • 공유나 보안을 의미 단위의 세그먼트로 나누고, 물리적 메모리는 페이지로 나누는 것

페이지 교체 알고리즘

  • 메모리는 한정되어 있기 때문에 스와핑이 많이 일어난다. 스와핑은 많이 일어나지 않도록 설계되어야 하며 이는 페이지 교체 알고리즘을 기반으로 스와핑이 일어난다.
  • FIFO
    • 가장 먼저 온 페이지를 교체 영역에 가장 먼저 놓는 방법을 의미한다.
  • LRU(least Recentle Used)
    • 참조가 가장 오래된 페이지를 바꾼다.
  • NUR(Not Used Recently)
    • 시계방향으로 탐색하며 최근 참조되지 않은 프로세스를 교체하고 체크하는 방법?
  • LFU(Least Frequently Used)
    • 가장 참조 횟수가 적은 페이지를 교체

'Computer science > 운영체제' 카테고리의 다른 글

프로세스  (0) 2023.08.10

+ Recent posts