운영체제 Chapter8 Virtual Memory - 5월 9일 화요일

Jimin·2023년 5월 10일
0

Operation System

목록 보기
23/34

Types of Memory

  • Real memory
    • Main memory
  • Virtual memory
    • Main memory + Memory on disk
    • Allows for effective multiprogramming and relieves the user of tight constraints of main memory

Real Memory

전체 프로그램이 메모리에 들어가는 것을 Real Memory 라고 한다.

그런데, 프로그램이 점점 커지며 메모리에 들어갈 수 있는 프로그램의 수가 줄어들게 된다.

Virtual Memory

그래서 나온게 Virtual Memory 이다.
Virtual Memory는 프로그램 전체가 아니라, 일부만 메모리에 올라가고 나머지는 Hard Disk 에 넣어놓게 된다.

메모리 공간 + 하드디스크 공간 전체 를 모두 메모리라고 생각하고 관리하는 것이 Virtual Memory System 이다.
동시에 실행 가능한 프로세스가 증가 하게 된다.


Execution of a Program

  • Operating system brings into main memory a few pieces of the program
    • Resident set - portion of process that is in main memory
  • An interrupt is generated when an address is
    needed that is not in main memory
  • Operating system places the process in a blocked state

처음 프로그램을 시작 할 때, OS → 프로그램의 전체가 아니라 두, 세 page만 메모리에 올라간다.

Resident set

전체 프로그램 중 현재 메모리에 올라와 있는 부분

  • Paging System : 메모리에 있는 페이지의 번호
  • Segmentation System : 메모리에 있는 세그먼트의 번호

일부 페이지를 가지고 프러세스를 실행하다가 A라는 Function 이 필요한데, A Function 이 들어있는 페이지나 세그먼트의 번호가 메모리에 없으면 인터럽트( Page Fault )가 발생한다.

Interrupt에 해당하는 프로세스는 일단 block 된다. (I/O 작업을 해야한다, I/O With Request)
→ OS 는 다른 프로세스를 실행시킨다.
→ 아까 block 됐던 프로세스의 I/O 작업 끝(원하던 페이지가 메모리로 올라옴)
→ I/O 인터럽트 발생
→ block됐던 프로세스가 Ready Queue 로 이동


Thrasing & Locality

Thrasing

  • Swapping out a piece of a process just before that
    piece is needed
  • The processor spends most of its time swapping pieces rather than executing user instructions

Virtual Memory 의 가장 큰 걱정거리: Thrasing

프로세스마다 사용가능한 공간에 제한이 존재한다.

Paging System 으로 Virtual Memory 를 구현했는데, 한 프로세스당 세 페이지만 메모리에 있을 수 있다라고 한다면, 세페이지를 놓고 실행을 하다가 메모리에 없는 페이지가 필요하다. 그 페이지를 가져오면서 현재 메모리에 있는 것들 중 하나를 버려야 한다.

메모리가 아니라 page가 필요하다. ⇒ 뭘 버릴지 신중하게 고민을 해야한다.
↳ 버린게 바로 다시 필요해질 수 있다.

실행 1, 2 줄 → Swap Out(프로그램 바꾸기, Hard Disk)
⇒ 프로그램 실행 X → 버리고 가져오는데 시간을 다 쓴다.
⇒ 이런 상황을 Thrasing 이라고 한다.

Thrasing 때문에 시스템의 속도가 굉장히 저하가 되면, 이 Virtual Memory System 은 사용할 수 없다라고 생각했지만,

이걸 Reference Locality 덕분에 페이지 변경 횟수가 줄어들게 된다.
↳ Code 와 Data 는 연속된 공간에 위치하여 Threasing 이 거의 발생하지 않게 된다.

Principle of Locality

  • Program and data references within a process tend to
    cluster
  • Only a few pieces of a process will be needed over a short period of time
  • This suggests that virtual memory may work efficiently

Swap Out, Swap In Hard Disk (Process Suspend)

Page 가 없으면 프로세스가 하드디스크로 쫓겨나는 건가?
프로세스의 Swap Out 이 아니라, 프로세스가 가지고 있는 한 페이지가 Swap out 되는 것이고, 나머지 부분은 메모리에 있다.

페이지를 가져와야 하는 프로세스는 Running 상태에 있다가 Block 상태에 있다가 다시 Ready 상태가 된다.
⇒ Process가 Suspend 되는 것은 아니다.


Paging

Paging 시스템을 이용해서 Virtual Memory 구현이 가능하다.
← Paging + Segmentation 둘 다 사용해서 이용이 가능하다.

profile
https://github.com/Dingadung

0개의 댓글