메모리

김현태·2023년 3월 4일
0

OS

목록 보기
1/1

CPU관점에서 간략하게 살펴보자
1. CPU는 메모리에 프로그램이 올라와야 읽고 실행 할 수 있다!
2. 메모리에 올라온 프로그램 -> 프로세스!

  • OS는 프로세스를 어떻게 관리하는가? PCB
  • 프로세스의 라이프 사이클, 쓰레드, 스케쥴링
  • IPC, 그리고 공유자원 문제, 교착상태

메모리 관리

운영체제에 의해 메모리 관리가 필요한 이유

메모리는 공유자원

  • 여러 프로세스 사이에 메모리 공유

메모리 보호

  • 프로세스의 독립된 메모리 공간 보장
  • 다른 프로세스로부터 보호

메모리 용량 한계 극복

  • 여러 프로세스의 메모리 합이 설치된 물리 메모리보다 큰 경우 필요

메모리 효율성 증대

  • 가능하면 많은 개수의 프로세스를 실행시키기 위해서
  • 프로세스당 최소한의 메모리 할당

메모리는 컴퓨터 시스템 곳곳에 계층적으로 존재

  • CPU레지스터 - CPU캐시 - 메인메모리 - 보조기억장치
  • CPU레지스터에서 보조기억장치로 갈수록
    - 용량 증가, 가격 저렴, 속도 저하
  • 메모리 계층 구조의 중심은 메인 메모리

그렇다면 왜 메모리를 계층화 했을까?

바로 CPU가 메모리에 접근하는 시간은 최대한 줄여 프로그램의 실행 속도를 올리기 위해서이다.

메모리 관리는 왜 어려운가?

  1. 폰노이만 구조 -> 메모리는 컴퓨터의 유일한 작업공간이라 모든 프로그램은 메모리에 올라온다.
  • 일괄처리 시스템 : 한번에 하나의 프로그램만 실행시킴으로 메모리 관리가 단순하다.
  • 다중 프로그래밍 : 운영체제를 포함한 모든 응용 프로그램이 메모리에 올라와야 한다.
  1. 유일한 작업공간을 같이 쓰다보니..
  • 여러 프로세스간 침범이 안되게 하면서
  • 그러면서 필요한 공간은 충분히 할당해줘야 하고
  • 가능한 많은 프로세스를 동작시켜야 하는데, 메모리는 부족하고...

메모리 관리의 이중성

  • 프로세스 : 가능한 많은 메모리를 쓰고 싶어함(메모리 독점)
  • OS/관리자 : 가능한 메모리를 적게 주고 싶어함. 가능한 효율적으로..

컴퓨터의 메모리를 어떻게 관리 할 것인가?

-> 메모리 관리자의 작업/정책

  1. 적재 정책(Fetch policy)
  • 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 정책
  • 요구반입 vs 예상반입
  1. 배치 정책(Placement policy)
  • 가져온 프로세스를 메모리의 어떤위치에 올려놓을지 결정하는 정책
  • 최초 적합 vs 최적 적합 vs 최악 적합
  1. 재배치(교체) 정책(Replacement policy)
  • 메모리가 꽉 찼을 때 메모리 내에 있는 어떤 프로세스를 내보낼지 결정하는 정책
  • 최적 교체, FIFO, LRU(Least Recently Used), LFU(Least Frequently Used)

MMU

Memory Management Unit의 약자로 일반적으로 MMU가 메모리 관리자로 불린다.

위 그림에서 빨간색 점선을 따라가보자

  1. 논리주소를 물리주소로 바꾸는 하드웨어 장치
  • CPU가 발생시킨 논리 주소는 MMU에 의해 물리 주소로 바뀌어 메모리에 도달한다.
  1. 오늘날 MMU는 CPU 안에 내장
  • MMU 덕분에 여러 프로세스가 하나의 메모리에서 실행될 수 있다.

메모리 오버레이

프로그램의 크기가 실제 메모리(물리 메모리)보다 클 때 전체 프로그램을 메모리에 가져오는 대신 적당한 크기로 잘라서 가져오는 기법 즉, 프로그램이 실행되면 현재 필요한 부분만 메모리에 올라와 실행 -> 바꿔가면서(swap)

가상메모리 공간

  • 각 프로세스는 자신이 모든 메모리를 점유하고 있는 것처럼 생각한다.

swap

  • 메모리가 모자라서 쫓겨난 프로세스를 저장장치의 특별한 공간에 모아두는 영역
  • 메모리에서 쫓겨났다가 다시 돌아가는 데이터가 머무는 곳이기에 저장장치는 장소만 빌려주고 메모리 관리자가 관리
  • 사용자는 실제 메모리의 크기와 스왑 영역의 크기를 합쳐서 전체 메모리로 인식하고 사용

0개의 댓글