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

GoWoong의 개발 블로그

  • 분류 전체보기 (173) N
    • 크래프톤 정글 (82)
    • 크래프톤 정글 (컴퓨터 시스템: 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)
    • 앱 개발 (4) N
      • Flutter (4) N
    • 문제 기록 (0)
    • 커뮤니티 참석 후기 (2)
    • 일상 기록 (1)
  • 홈
  • 글쓰기

[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

[pintos] Week4~5: Virtual Memory - Part.2 Memory Management

Memory Management가상 메모리 시스템이 제대로 돌아가기 위해서는 가상메모리 페이지(virtual pages)와 물리메모리 페이지 프레임(physical frames)을 효과적으로 관리해야 한다. 즉, 임의의 가상 혹은 물리 메모리 영역을 누가 사용했고, 어떤 목적으로 사용했는지 등을 기억하고 있어야 한다. 당신은 먼저 supplemental page table을 다루고, 그 이후에 물리메모리 페이지 프레임을 다뤄야 한다.include/vm/vm.hstruct page { const struct page_operations *operations; void *va; /* Address in terms of user space */ struct frame *frame;..

  • format_list_bulleted 크래프톤 정글
  • · 2025. 6. 6.
  • textsms
[pintos] Week4~5: Virtual Memory - Part.1 가상 메모리란?

[pintos] Week4~5: Virtual Memory - Part.1 가상 메모리란?

크래프톤 정글 Pintos 마지막인 VM 파트가 시작되었다. 물론 File System도 있지만 정글의 커리큘럼에서 더 이상 File System을 수행하지는 않는 것 같다. 새로운 팀원들과 함께 Pintos에서 VM을 어떻게 구현해야 할지 제공된 Gitbook 내용을 파악하고 가상 메모리에서 유저영역과 커널 영역까지 가상 메모리라는 것을 이해하기 위해 며칠을 할당했다.가상 메모리 (Virtual Memory)가상 메모리(Virtual Memory)는 운영체제가 제한된 물리적 메모리를 보다 효율적이고 안전하게 사용하기 위해 도입한 메모리 관리 기법으로 프로그램이 실제 메모리(RAM)의 용량이나 배치에 구애받지 않고 큰 메모리 공간을 사용하는 것처럼 동작할 수 있도록 한다. 이게 왜 중요한가? 컴퓨터의 물..

  • format_list_bulleted 크래프톤 정글
  • · 2025. 6. 6.
  • textsms
[pintos] Week2~3: User Program 외전 - Linked List를 이용한 FD관리

[pintos] Week2~3: User Program 외전 - Linked List를 이용한 FD관리

이전 포스팅까지 해서 FDT를 사용한 Pintos UserProgram 구현과 내용 정리를 진행했다.2025.05.26 - [크래프톤 정글] - [pintos] Week2~3: User Program Part.8 - exec, wait [pintos] Week2~3: User Program Part.8 - exec, wait이전 포스팅에서 fork()를 구현했다. 이제 exec와 wait을 제대로 구현하여 테스트 통과를 확인하려고 한다.2025.05.26 - [크래프톤 정글] - [pintos] Week2~3: User Program Part.7 - fork [pintos] Week2~3: User Program Part.7www.gowoong.com하지만 우리 팀이 처음부터 FDT를 이용해 구현했던 것..

  • format_list_bulleted 크래프톤 정글
  • · 2025. 5. 26.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • ···
  • 14
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (173) N
    • 크래프톤 정글 (82)
    • 크래프톤 정글 (컴퓨터 시스템: 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)
    • 앱 개발 (4) N
      • Flutter (4) N
    • 문제 기록 (0)
    • 커뮤니티 참석 후기 (2)
    • 일상 기록 (1)
최근 글
인기 글
최근 댓글
태그
  • #serverless
  • #IOT
  • #aws #iot
  • #saa-c03
  • #AWS
  • #AWS Community Day
  • #AWS 자격증
  • #Cloud Practitioner
  • #AWSKRUG
  • #CLF-C01
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바