GoWoong의 개발 블로그
close
프로필 배경
프로필 로고

GoWoong의 개발 블로그

  • 분류 전체보기 (166) N
    • 크래프톤 정글 (79) N
    • 크래프톤 정글 (컴퓨터 시스템: CSAPP) (57)
      • 3장 프로그램의 기계수준 표현 (16)
      • 6장 메모리 계층구조 (6)
      • 7장 링커 (6)
      • 8장 예외적 제어 흐름 (7)
      • 9장 가상 메모리 (16)
      • 11장 네트워크 프로그래밍 (6)
    • 클라우드 (4)
      • [AWS] AWS IoT Core (4)
      • DevOps (0)
    • Deep Dive (16)
      • CS (15)
    • 백엔드 개발 (0)
      • 파이썬 (0)
      • 자바 스프링 (0)
    • 자격증 공부 (5)
      • AWS Cloud Practitioner (2)
      • 정보처리기사 (1)
      • AWS SAA-C03 (2)
    • 문제 기록 (0)
    • 커뮤니티 참석 후기 (2)
    • 일상 기록 (1)
  • 홈
  • 글쓰기
[pintos] Week4~5: Virtual Memory - Part.9 Copy-On-Write

[pintos] Week4~5: Virtual Memory - Part.9 Copy-On-Write

이 전 포스팅까지 VM 과제에서 구현하라고 과제로 준 기능들을 구현을 완료했다. 하지만 User Program처럼 ALL PASS를 받을 수는 없었다. VM에서 ALL PASS를 받기 위해서는 Extra 과제인 Copy-On-Write 기능을 구현해야 ALL PASS를 받을 수 있다. 지금부터 Copy-On-Write가 무엇인지 알아보고 구현해 보겠다.Copy-On-Write 란?우리가 이 전까지 구현한 fork 와 VM 기능들은 fork가 일어날 때 부모를 복사한다. user program까지에서는 부모의 FD 정도를 복사하는 느낌이었다. 하지만 VM에서는 부모의 페이지를 복사하면서 새로운 프레임에 할당을 했다. 이 말은 부모와 자식이 내용상 같은 페이지와 프레임을 생성한 것이고 물리 메모리에 같은 데..

  • format_list_bulleted 크래프톤 정글
  • · 2025. 6. 8.
  • textsms

[pintos] Week4~5: Virtual Memory - Part.7 페이지 교체 및 구현 완료를 위한 수정

Swap In/Out을 구현했지만 페이지 교체 알고리즘을 구현해야 테스트를 통과할. 수 있다. 그리고 추가적인 조정을 통해 cow-simple 테스트를 제외한 모든 테스트를 통과할 수 있도록 구현할 예정이다.페이지 교체 알고리즘페이지 교체 알고리즘은 운영체제가 메모리가 부족할 때 어떤 페이지를 내보낼지 결정하는 방식이다. 즉 RAM에 올려둘 수 없는 페이지를 디스크(Swap)를 내보낼 때 어떤 것을 회생할지 선택하는 규칙이다.페이지 교체 알고리즘이 필요한 이유운영체제는 가상 메모리를 통해 실제 메모리 보다 많은 메모리를 제공하는 것처럼 동작한다.하지만 실제 물리 메모리(RAM)는 제한되어 있어, 더 이상 올릴 수 없는 경우 기존 페이지를 내보내야(Swap Out) 한다.이때 어떤 페이지를 내보낼지 결정하..

  • format_list_bulleted 크래프톤 정글
  • · 2025. 6. 7.
  • textsms

[pintos] Week4~5: Virtual Memory - Part.6 Swap In/Out

이제 남은 구현은 Swap In/Out 이 남았다. 메모리 스와핑은 물리 메모리의 활용을 극대화하기 위한 메모리 회수기법이다. 메인 메모리의 프레임들이 모두 할당되면 시스템은 유저 프로그램이 요청하는 메모리 할당 요청을 더 이상 처리할 수 없다. 이에 대한 해결 방법은 현재 사용되지 않고 있는 메모리 프레임들을 디스크로 스왑 아웃 하는 것이다. 이는 일부 메모리 자원들을 해제시켜서 다른 애플리케이션들이 이 자원들을 사용할 수 있게 해 준다.메모리는 고갈되었는데 메모리 할당 요청을 받았다는 것을 운영체제가 감지하면 swap 디스크로 퇴서(evict)시킬 페이지를 골라낸다. 그리고 메모리 프레임의 상태를 동일하게 디스크에 복사해 둔다.(스왑 아웃), 프로세스가 스왑 아웃된 페이지에 접근하려고 할 때, 운영체..

  • format_list_bulleted 크래프톤 정글
  • · 2025. 6. 7.
  • textsms

[pintos] Week4~5: Virtual Memory - Part.5 Memory Mapped Files

이번 포스팅에서는 메모리 매핑된 페이지를 구현한다. 익명 페이지와 달리 메모리 매핑된 페이지는 파일 기반 매핑이다. 페이지 콘텐츠는 일부 기존 파일의 데이터를 미러링 한다. 페이지 폴트가 발생하면 물리적 프레임이 즉시 할당되고 내용이 파일에서 메모리로 복사된다. 메모리 매핑된 페이지가 unmapped 또는 swapped out 되면 콘텐츠의 모든 변경 사항이 파일에 반영된다.메모리 매핑된 파일에 대한 두 가지 시스템 호출인 mmap 및 munmap을 구현한다. VM 시스템은 mmap 영역에서 페이지를 lazy load하고 mmap 된 파일 자체를 매핑을 위한 백업 저장소로 사용해야 한다. 이 두 시스템 콜을 구현하려면 vm/file.c에 정의된 do_mmap과 do_munmap을 구현해서 사용해야 한다...

  • format_list_bulleted 크래프톤 정글
  • · 2025. 6. 7.
  • textsms

[pintos] Week4~5: Virtual Memory - Part.4 Stack Growth

프로젝트 2에서 스택은 USER_STACK에서 시작하는 단일 페이지였다. 프로그램은 4KB로 제한하여 실행했다. 이제 스택이 크기를 초과하면 필요에 따라 추가 페이지를 할당한다.추가 페이지는 스택에 접근하는 경우에만 할당한다. 스택에 접근하는 경우와 아닌 경우를 구별해야 한다.User program은 스택 포인터 아래의 스택에 쓸 경우 버그가 발생하는데, 이는 일반적인 실제 OS가 스택의 데이터를 수정하는 시그널을 전달하기 위해 프로세스를 언제든지 중단할 수 있기 때문이다. 하지만 x86-64 PUSH 명령어는 스택 포인터를 조정하기 전에 접근 권한을 검사하므로, 스택 포인터 아래 8바이트에 대해서 Page Fault를 발생시킬 수 있다.구현 목표User Program의 스택 포인터의 현재 값을 얻을 수..

  • format_list_bulleted 크래프톤 정글
  • · 2025. 6. 6.
  • textsms

[pintos] Week4~5: Virtual Memory - Part.3 Anonymous Page

이번 포스팅에서는 익명 페이지라고 부르는 디스크 기반이 아닌 이미지를 구현한다. 일명 매핑에는 백업 파일 혹은 장치가 없다. 파일 기반 페이지와 달리 이름이 있는 파일 소스를 가지고 있지 않기 때문에 익명이라고 한다. 익명 페이지는 실행 가능한 파일에서 스택과 힙 영역에서 사용한다.Lazy Loading지연 로딩은 필요 시점까지 메모리의 로딩을 지연시키는 방법이다. 페이지가 할당되었다는 것은 대응되는 페이지 구조체는 있지만 연결된 물리 메모리 프레임은 아직 없고 페이지에 대한 실제 콘텐츠들이 아직 로드되지 않았다는 것을 의미한다. 콘텐츠는 페이지 폴트로 인해 실제로 콘텐츠가 필요하다는 시그널을 받을 때 로드된다.pintos VM에서는 일단 3가지 페이지 타입을 다룬다. 파일 시스템에서 추가적인 페이지가 ..

  • format_list_bulleted 크래프톤 정글
  • · 2025. 6. 6.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • ···
  • 28
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (166) N
    • 크래프톤 정글 (79) N
    • 크래프톤 정글 (컴퓨터 시스템: CSAPP) (57)
      • 3장 프로그램의 기계수준 표현 (16)
      • 6장 메모리 계층구조 (6)
      • 7장 링커 (6)
      • 8장 예외적 제어 흐름 (7)
      • 9장 가상 메모리 (16)
      • 11장 네트워크 프로그래밍 (6)
    • 클라우드 (4)
      • [AWS] AWS IoT Core (4)
      • DevOps (0)
    • Deep Dive (16)
      • CS (15)
    • 백엔드 개발 (0)
      • 파이썬 (0)
      • 자바 스프링 (0)
    • 자격증 공부 (5)
      • AWS Cloud Practitioner (2)
      • 정보처리기사 (1)
      • AWS SAA-C03 (2)
    • 문제 기록 (0)
    • 커뮤니티 참석 후기 (2)
    • 일상 기록 (1)
최근 글
인기 글
최근 댓글
태그
  • #AWS Community Day
  • #AWS 자격증
  • #IOT
  • #saa-c03
  • #aws #iot
  • #CLF-C01
  • #AWS
  • #serverless
  • #Cloud Practitioner
  • #AWSKRUG
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바