Memory Management

메모리 관리

  • 프로그램을 실행하기 위해 모든(또는 일부) 실행 구문과 데이터의 전부(또는 일부)은 메모리 안에 있어야 함
  • CPU가 유저 작업에 반응하고 최적화하기 위해 어떤 데이터를 메모리 안에 넣을지를 정하는 작업
  • Activities:
    • 어떤 메모리가 쓰이는지, 누구에 의해 사용되는 지를 트래킹
    • 어떤 프로세스, 데이터가 메모리에 진입하고 방출될지를 결정
    • 필요한 만큼의 메모리를 할당 또는 반환

메모리 보호

  • OS를 변조하려는 유저 태스크를 막는 것
  • OS는 유저 태스크에 일정 메모리를 할당
  • 유저 모드에서 태스크는 할당받은 메모리 범주 내에만 접근 가능
  • 접근 확인은 하드웨어에서 이뤄짐
  • 만약 유저 태스크가 할당된 메모리 범주를 벗어나는 시도를 하면 segmentation fault가 발생
    • 세그멘테이션 결함(Segmentation Fault), 세그멘테이션 위반, 세그멘테이션 실패, 세그폴트(Segfault)
    • 프로그램이 허용되지 않은 메모리 영역에 접근을 시도하거나, 허용되지 않은 방법으로 메모리 영역에 접근을 시도할 경우 발생

가상 기억 장치 (가상 메모리)

post_thumbnail

  • 메모리 자원을 이상적으로 추상화하여 물리 기억 장치의 크기보다 더 큰 메모리를 제공
  • 활성 RAM과 디스크의 비활성 메모리로 결합
  • 가상 주소와 물리 주소로 구분되며, Memory Management Unit에 의해 가상 주소에서 물리 주소로 변환
  • Paging(페이징)
    • 동일한 사이즈의 메모리 청크를 추가 및 할당
  • Segmentation(세그멘테이션)
    • 각기 다른 사이즈의 메모리 청크를 추가 및 할당

MMU Memory Management Unit

  • CPU가 메모리에 접근하는 것을 관리하는 하드웨어
  • CPU에게서 가상 메모리 주소를 받으면 뒤쪽 N비트는 바꾸지 않고 앞쪽 나머지 비트를 실제 메모리 주소로 변환

저장매체 관리

  • OS는 정보 저장에 있어 동일하고 논리적인 UI를 제공
    • 물리 요소를 논리 저장 단위로 추상화 -> 파일
    • 각 파일은 기기에 의해 관리됨
      • 접근 속도, 크기, 데이터 이동률, 접근 방법 등 요소가 내재
  • 파일 시스템 관리
    • 파일은 보통 디렉터리 안에 저장
    • 대부분의 시스템에서의 접근 관리는 누가 어디에 접근할 수 있는지를 관리
    • OS는
      • 파일과 디렉터리를 생성하거나 삭제
      • 파일과 디렉터리의 요소를 변경
      • 파일을 다른 저장장치에 이동
      • 파일을 비휘발성 저장장치에 백업

디스크에서 레지스터까지의 데이터 마이그레이션

post_thumbnail

  • 멀티태스킹 환경에서 모든 CPU가 가장 최근의, 동일한 데이터를 제공해주는 역할은 매우 중요
  • 이 데이터가 본래 어디에 저장되어 있든 상관없이 안정적으로 전달되어야 한다
  • 디스크 -> 주 메모리 -> 캐시 -> 레지스터

I/O 서브시스템

  • OS의 역할 중 하나는 하드웨어 기기의 기묘함을 숨기는 역할
I/O 서브시스템 내용
버퍼링 Buffering * 버퍼 메모리 영역에 데이터를 모았다가 사용
* 자료의 생산자와 소비자 사이에 속도가 다른 것에 대처
* 서로 다른 장치들 사이에 사용되는 자료 전송의 사이즈가 다른 것을 극복
* 데이터 입출력의 의미를 명확하게 하기 위함
캐싱 Caching * 좀 더 빠른 메모리 단계로 데이터를 저장해 놓고 사용
스풀링 Spooling * 디바이스를 독점적으로 사용해 프로세스가 작업을 수행하는 동안 다른 요청을 처리할 수 없는 경우
* 교차해서 동작될 수 없는 프린터 같은 장치를 위해 출력 자료를 보관하는 버퍼
* 프린팅 작업을 대기시켜야 함
  • 일반적인 기기 - 드라이브 인터페이스 제공
  • 특정 하드웨어 기기를 위한 드라이버

출처

Categories: ,

Updated: