Published 2022. 11. 6. 16:09

초기 시스템

  • 메모리 관점에서 많은 것을 지원하지 않았음
  • 초기 운영체제는 메모리에 상주하는 루틴(실제로는 라이브러리)의 집합
  • 물리 메모리에 하나의 실행중인 프로세스 존재, 나머지 메모리를 사용
  • 가상화 존재하지 않았음

멀티프로그래밍과 시분할

  • 시간이 흐른 후 컴퓨터를 더 효과적으로 사용하기 시작하며 멀티프로그래밍(Multi-programming) 시대 도래
  • 여러 프로세스가 실행 준비 상태이고, 운영체제가 돌아가면서 실행 → CPU 이용률 증가
  • 컴퓨터를 더 많이 사용하기 원해서 시분할(Time Sharing) 시대가 시작

    → 일괄 처리 방식 컴퓨터에 한계를 인식

    → 대화식 이용(interactivity)의 개념이 중요해짐

기본적인 시분할 시스템 구현

  • 짧은 시간동안 하나의 프로세스를 실행, 실행중에는 메모리 접근 권한 가짐

    → 프로세스를 중단하고, 중단 시점의 상태를 디스크에 저장

    → 다른 프로세스 선택 후 실행

  • 단점: 메모리의 전체 내용을 디스크에 저장하는게 너무 느림
    • 프로세스 전환시 프로세스를 메모리에 그대로 유지하면서 시분할 효율적으로 할 수 있게 구현해야함

Adress space (주소 공간)

  • 사용하기 쉬운 메모리 개념
    • 여러 프로그램이 메모리에 존재하면서 다른 프로세스의 메모리를 읽거나 쓰는 상황을 보호(protection)해야함. 이를 위해 생긴 개념
  • 실행 중인 프로그램이 가정하는 메모리의 모습 → 메모리 가상화
  • 실행 프로그램의 모든 메모리 상태 가지고 있음. ex) code, stack, heap
  • 운영체제가 실행중인 프로그램에게 제공하는 개념(Abstraction)

VM의 Goal

  • 투명성
    • 실행중인 프로그램이 가상 메모리의 존재를 인지하지 못하도록 가상 메모리 구현해야함
    • 오히려 프로그램은 자신이 전용 물리 메모리를 소유한 것처럼 행동해야함
  • 효율성
    • 가상화가 시간과 공간 측면에서 효율적으로 해야함
    • 너무 느리지 않고, 너무 많은 메모리를 사용하면 안됨
  • 보호
    • 프로세스를 다른 프로세스로부터 보호하고, 운영체제 자신도 보호
      • 자신의 주소 공간 밖의 어느 것도 접근할 수 있으면 안됨
    • 프로세스를 고립할 수 있어야함

물리 메모리 관리의 이슈

  • Placement (배치)
    • 디스크에서 가져온 것을 메모리 어디에 배치할 것인가
  • Protection (보호)
    • 프로세스가 메모리 침범하지 않게 보호
  • Replacement (재배치)
    • 잠시 디스크로 옮겨진 프로세스가 주기억장치로 스왑인 되었을 때 기존과 같은 주소를 할당받을 수 있다는 보장이 없다. 이런 경우 프로세스를 적절한 위치에 재배치
  • on-demand-loading (요구시 반입)
    • 필요할 때 메모리 올림

메모리 관리 기법

고정 분할 다중 프로그래밍

  • 절대 번역: 지정된 분할 영역에서만 실행
  • 재배치 번역: 모든 작업을 하나의 큐에 넣어, 어느 분할에서든지 실행 가능
  • 내부 단편화 발생
    • 칸이 50인데 30짜리 프로세스를 넣으면 20 빔

가변 분할 다중 프로그래밍

  • 프로세스가 생길때마다 메모리 크기를 계산해서 정확하게 그 크기만큼 분할하여 배치
  • 외부 단편화 발생
    • 100짜리를 넣어야하는데 50 짜리 두개 남아있으면 못넣음
      • 집약 (compaction)을 해서 프로세스들 재배치해서 자리를 만들어줌
  • 재배치 문제
    • First Fit
      • 가장 처음 맞는거에 넣음
    • Best Fit
      • 가장 딱 맞는거에 넣음
    • Worst Fit
      • 가장 사이즈 차이 많이 남는 곳에 넣음
      • 프로세스 넣어도 남는 자리가 커서 best fit만큼 효과적
    • Next fit
      • 포인터로 보던 곳 관리하면서 다음꺼 봄, First Fit 사용
      25KB task 생성되면 자리

가상 메모리

물리 메모리가 계속 커져도, task들 넣을때 경계들을 보호해야하는 문제를 해결하지 못해서 사용

  • 페이지 시스템

    하나의 프로세스에서 특정 시간 동안 쓰는 메모리 영역은 4GB 중 아주 일부분이기 때문에 일부분만 실제 물리 메모리에 올려놓고 쓰자는 것이 가상 메모리의 컨셉 → 그 올리는 단위가 page

    • virtual memory에선 page, disk에선 disk block, physical memory에선 page frame으로 불림, 보통 크기 다 동일

Address transition

pysical address = virtual address + base

  • base는 MMU(memory management unit)에서 지원

Paging

  • page
    • 프로세스의 주소 공간을 고정 크기의 단위로 나눈 것
  • page frame
    • page에 상응하는 물리메모리를 고정 크기의 단위로 나눈것
  • paging
    • 외부단편화로 인한 메모리 낭비는 없애고, 내부단편화로 인한 낭비(이것을 줄이기 위해 페이지 크기 줄임)만이 존재하는데 이를 각 프로세스의 마지막 페이지에서만 발생하는 기법을 사용
  • 페이지 테이블
    • OS는 각 프로세스마다 하나의 페이지 테이블을 유지
    • 각 프로세스의 각 페이지들에게 해당하는 페이지 프레임 위치 관리
    페이지 테이블 구조

    큰 페이지 테이블 문제 해결 방법

    • n단계 페이지 테이블
    • 역페이지 테이블
      • 가상 주소중 페이지 번호 부분은 간단한 hash함수를 통해 매핑
    • TLB(Translation Lookaside buffer) Lookahead 사용
      • 큰 테이블 문제 해결보단 속도를 증가 시키는 방법
      • 페이지 테이블 항목들을 위한 고속 캐시 이용

Segmentation

  • 스택과 힙 사이의 공간은 사용되지 않는데 물리 메모리를 차지하는 문제를 해결하기 위해 등장
  • 주소공간을 code, stack, heap 세그먼트로 나눔


Uploaded by N2T

'OS' 카테고리의 다른 글

[OS] Scheduling  (0) 2022.11.06
[OS] Process  (0) 2022.11.06
복사했습니다!