ShovelingLife
A Game Programmer
ShovelingLife
전체 방문자
오늘
어제
  • 분류 전체보기 (1087) N
    • 그래픽스 (57)
      • 공통 (19)
      • 수학 물리 (22)
      • OpenGL & Vulkan (1)
      • DirectX (14)
    • 게임엔진 (184)
      • Unreal (69)
      • Unity (104)
      • Cocos2D-X (3)
      • 개인 플젝 (8)
    • 코딩테스트 (221)
      • 공통 (7)
      • 프로그래머스 (22)
      • 백준 (162)
      • LeetCode (19)
      • HackerRank (2)
      • 코딩테스트 알고리즘 (8)
    • CS (240)
      • 공통 (21)
      • 네트워크 (44)
      • OS & 하드웨어 (60)
      • 자료구조 & 알고리즘 (98)
      • 디자인패턴 (6)
      • UML (4)
      • 데이터베이스 (7)
    • 프로그래밍 언어 (356) N
      • C++ (168)
      • C# (91) N
      • Java (11)
      • Python (35)
      • SQL (30)
      • JavaScript (9)
      • React (7)
    • 그 외 (20)
      • Math (5)
      • 일상 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Source Code 좌측 상단에 복사 버튼 추가 완료
  • 언리얼 엔진 C++ 빌드시간 단축 꿀팁
  • 게임 업계 코딩테스트 관련
  • 1인칭 시점으로 써내려가는 글들

인기 글

태그

  • 알고리즘
  • 오블완
  • C++
  • 티스토리챌린지
  • 배열
  • SQL
  • python
  • 함수
  • c#
  • 문자열
  • 그래픽스
  • Unity
  • 포인터
  • 백준
  • C
  • 언리얼
  • 클래스
  • string
  • 유니티
  • 파이썬

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ShovelingLife

A Game Programmer

Swapping 스와핑 ( page in, page out )
CS/OS & 하드웨어

Swapping 스와핑 ( page in, page out )

2023. 8. 24. 21:20

여러 프로그램을 메모리상에서 돌리다 보면 메모리가 부족할 수밖에 없다.

이런 메모리 부족을 해결하기 위해서 나온 방법이 Swapping이다. 더 많은 프로세스가 메모리에 존재할 수 있도록 하는 것이다. swapping을 사용하면 프로세스를 다시 실행할 때 처음부터 메모리에 올리는 것이 아니라 더 빨리 할 수 있기 때문이다. 

 

Swapped은 backing store를 만들어서 프로세스 단위로 swap in, swap out을 동작한다. ( backing store는 임시저장소로 하드디스크나 NVM처럼 여러 하드웨어가 될 수 있다. 즉 Secondary Storage다.)

프로그램이 실행되면 Bakcing store에 있는 필요한 page 정보를 메모리에 올린다.  

 

이렇게 프로세스 단위로 왔다 갔다 하는 걸, standard swapping이라 한다. 하지만 요즘에는 standard swapping을 사용하지 않는데 그 이유는 아래와 같다.

만약에 다음에 실행할 프로세스가 메모리에 없다면, 메모리에 올라가 있는 하나의 프로세스를 swap out 하고 내가 실행시킬 프로세스를 swap in 한다. 이때 conext swich time이 오래 걸린다. 예를 들어 100MB 프로세스를 1초당 50MB씩 전송할 수 있다면, swap out 하는데 2초, swap in 하는데 2초. 즉, 총 4초가 걸린다. 사람의 입장에서는 4초면 짧지만 CPU 입장에서는 엄청나게 긴 시간이다.  

 

이렇기 때문에 프로그램 단위로 swap in, out 하는 것이 아니라 page 단위로 옮긴다.

아래 그럼에서 왼쪽은 프로그램 단위로 왔다 갔다 하는 것이고 오른쪽은 page 단위로 왔다 갔다 하는 것이다. 

 

운영체제 Swapping ( page in, page out ) (tistory.com)

 

저작자표시 (새창열림)

'CS > OS & 하드웨어' 카테고리의 다른 글

Virtual Memory - 가상 메모리 ( 필요한 이유 )  (0) 2023.08.24
Memory Allocation (논리 메모리, 물리 메모리, Dynamic Loading, Paging이 나온 이유 )  (0) 2023.08.24
CPU 스케줄링(Scheduling) 알고리즘 정리 및 요약 | FCFS, SJF, Round Robin  (0) 2023.07.29
스레드 안전(Thread-Safety)란?  (0) 2023.07.27
시스템 구조와 프로그램 실행 2  (0) 2023.03.24
    'CS/OS & 하드웨어' 카테고리의 다른 글
    • Virtual Memory - 가상 메모리 ( 필요한 이유 )
    • Memory Allocation (논리 메모리, 물리 메모리, Dynamic Loading, Paging이 나온 이유 )
    • CPU 스케줄링(Scheduling) 알고리즘 정리 및 요약 | FCFS, SJF, Round Robin
    • 스레드 안전(Thread-Safety)란?
    ShovelingLife
    ShovelingLife
    Main skill stack => Unity C# / Unreal C++ Studying Front / BackEnd, Java Python

    티스토리툴바