ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SW 정글 73일차] Pintos project 3 입문 (Virtual Memory)
    기타/SW 사관학교 정글 2021. 10. 15. 02:10

    오늘부터 pintos project 3 virtual memory를 시작하는 날이다.

    오늘은 공부할 수 있는 시간이 별로 없었기에 일단은 아래 깃북에서 project 3 introduction을 읽고 기본적으로 알아야할 것이 무엇인지 파악하는 시간을 가졌다.

    읽으면서 모든 것이 이해되지는 않아서 컴퓨터시스템 9장과 Three Easy Pieces를 읽을 예정이다.

    https://casys-kaist.github.io/pintos-kaist/project3/introduction.html

     

    Introduction · GitBook

    Locate the page that faulted in the supplemental page table. If the memory reference is valid, use the supplemental page table entry to locate the data that goes in the page, which might be in the file system, or in a swap slot, or it might simply be an al

    casys-kaist.github.io

     

     

     

    1. Memory Terminology

    먼저 page에 대한 개념을 접했다.

    page는 4096bytes 사이즈를 가지는 virtual memory의 연속적인 영역을 말한다.

    (여기서 사이즈는 pintos에서 정한 것이지 모든 os가 통일된 것은 아닐 것이다. 보통은 4KB라고 한다.)

    page는 page-aligned되어야하는데 page-aligned라는 말은 vilrtual address에서의 시작점이 page size로 나누어 떨어진다는 것이다.

    예를 들면 page size가 2라면 virtual address는 0, 2, 4, ... 이런 식이라는 것이다.

    출처: https://casys-kaist.github.io/pintos-kaist/project3/introduction.html

    위 그림은 우리가 PIntos에서 사용할 virtual address이다.

    pintos에서는 4-level page table을 사용한다.

    아직 4-level page table에 대해서 공부는 못했지만 지금 내 생각으로는 4번의 단계를 걸쳐 physical memory 주소를 얻을 수 있다고 생각이 든다.

    각각의 프로세스는 독립적인 user page set을 가지고 kernel page는 전역적으로(global) 존재하여 스레드나 프로세스가 실행 중인 것과 관계없이 같은 위치에 존재한다.

     

     

    다음으로 Frame이다.

    frame은 physical memory의 연속적인 영역을 의미한다.

    frame도 page처럼 page-size(4096bytes)하고 page-aligned하다.

    출처: https://casys-kaist.github.io/pintos-kaist/project3/introduction.html

     

     

    다음으로 page table이다.

    page table은 CPU가 가상주소를 물리주소로 바꾸기위해 사용하는 데이터구조로 위에서 말한 page를 frame으로 바꾸는 것이다.

    출처: https://casys-kaist.github.io/pintos-kaist/project3/introduction.html

    위 그림은 가상주소가 어떻게 물리주소로 변하는지 간략하게 나타낸 것이다.

    페이지 테이블은 페이지 번호(page Nr)를 프레임 번호(Frame Nr)로 바꾸고 이 프레임 번호와 page offset(Ofs)와 합쳐져서 물리주소를 얻을 수 있다.

    아직 paging기법을 제대로 알아보지 못한 상태라서 어떻게 이러한 과정만으로 물리주소를 얻을 수 있는지 감이 잘안온다.

    내일 더 자세히 알아봐야겠다.

     


    [오늘의 나는 어땠을까?]

    오늘은 새로운 주 차가 시작되는 날이다.

    이전에도 느꼈던 것이지만 항상 새로운 주 차가 시작되는 날에는 뭔가 집중이 잘 되지 않는다.

    오전에는 서로 공유하는 시간을 가지고 점심을 먹으면 주기적으로 진행되는 면담에 참여하면서 질문을 준비하는 시간을 가지고 면담이 끝나면 4시쯤 된다.

    그러고 몇 시간 뒤 저녁을 먹고 저녁을 먹으면 협력사 설명회가 진행되면 10시쯤된다.

    내가 집가기 전까지 공부할 수 있는 시간이 약 4시간 정도 주어지는데 10시에 협력사 설명회가 끝나면 항상 혼자만의 고민에 빠진다.

     

    설명회를 들은 회사에 대한 나만의 생각 정리, 내가 가고 싶은 기업은 어떠한 곳일까?, 나의 성장성을 그 회사에게 잘 보일 수 있을까 등 수많은 생각이 든다.

    오늘은 특히 더 심했다.

    이전 설명회를 한 협력사에서 했던 말 중에 '이번에는 개발자 출실들도 꽤 있네요', 'X이스트 출신도 있던데' 등 이미 우리의 개인 이력사항이 모든 회사에 전해지면서 기대감이 높아진 상태이다.

    그리고 오늘도 마찬가지로 'X카에서 일하시다 온 사람도 있던데', '미국에서 대학을 다니다 온 사람도 있다던데', '커리어 전향하시는 사람들 대단하시네요' 등 우리에게 많은 관심을 보인다.

     

    여기서 든 생각은 우리라는 집합체에 나는 포함되지 않는다는 느낌이 든다는 것이다.

    나는 평범한 대학을 졸업하고 아무 경력사항도 없어 커리어 전향이라고 할 것도 없고 그냥 너무 평범한 사람이다.

    이렇게 평범한 내가 5개월간 열심히 한다고 해서 협력사에 취업을 할 수 있을까하는 의문이 든다.

    1기에서도 갓졸업한 교육생들이 있다고 들었는데 그 사람들은 취업에 성공하지 못하고 부X트 캠프에서 계속 공부 중이라고 한다.

    개발 공부를 계속 할 수 있는 환경을 누릴 수 있다는 것은 좋은 기회이지만 언제 개발자로서의 커리어를 시작할 수 있을까라는 불안감을 계속 가져간다는 것은 너무 크게 작용할 것같다.

     

    지금 이러한 부정적인 생각이 드는 상황에서 내가 할 수 있는 것은 오로지 그냥 앞만 보고 열심히 하는 것이라는 것을 알고 있지만 잘 되지 않는다..

    댓글

Designed by Tistory.