기술 면접 회고

면접 결과 정리 7/25일 기술면접에 참여했다. 처음이라 떨리지도 않았고 기대도 안했다. 이번 경험으로 어떻게 진행되는구나, 어떤 질문들을 하는구나를 느끼는 게 중요하다고 생각했다. 스스로 얼마나 준비가 덜 된 사람인지 알기에 열심히 적기도 했고 기억을 더듬었다. 한번 들은 질문은 안까먹기 위해 정리하는 글이다. 주제 1 PintOS 1. 스레드와 프로세스의 의미와 차이는 무엇인가? 내 대답 쓰레드는 연산을 처리하는 가장 작은 단위. 연산이라 하면 간단하게는 숫자와 숫자를 더한다던가 하는 작동되는 한 단위. 프로세스는 한 프로그램에서 발생하는 일련의 과정. ...

2023년 7월 27일 · 3 분 · 배준수

PintOS Project3-1 WIL

Project3. Virtual Memory 개요 기간 : 2023년 5월 9일 ~ 23일 주제 : Virtual memory 과제 Memory Management Anonymous Page Stack Growth Memory Mapped Files Swap In/Out 배경지 Page 가상 페이지라고도 불리는 페이지는 길이가 4096 바이트(page size)인, 가상 메모리의 연속된 지역이다. 페이지는 page-aligned 여서, page size로 공평하게 나눌 수 있는 가상 주소에서 시작된다. 따라서, 64-비트 가상 주소의 마지막 12 비트는 page offset(혹은 그냥 offset)이다. 상위 비트들은 곧 들어올 페이지 테이블 내 index들을 가리키는데 사용된다. ...

2023년 5월 23일 · 13 분 · 배준수

PintOS Memory Management WIL

WIL(23/05/16) Memory Management struct page : union union : C에서 다른 type의 data를 같은 메모리 위치에 저장하는 data type임. 여러가지중 한번에 하나의 value만 가질 수있음. 여기서는 struct uninit_page uninit struct anon_page anon struct file_page file 세가지가 있음. 즉 page는 3개 중 하나의 형태를 가지는데 처음에는 uninit이였다가 anon,file 둘중 하나로 갈라진다. enum vm_type VM_UNINIT(0, 초기화안됌), VM_ANON(1, 파일 없이 anonymous page), VM_FILE(2,파일 있음), VM_PAGE_CACHE(프4 내용) 맨 처음엔 UNINIT 상태로 시작. 그 후 ANON이나 FILE로 갈라지는듯. ...

2023년 5월 16일 · 1 분 · 배준수

PintOS Project3-3

Stack growth 질문 User programs are buggy if they write to the stack below the stack pointer, because typical real OSes may interrupt a process at any time to deliver a “signal,” which modifies data on the stack. However, the x86-64 PUSH instruction checks access permissions before it adjusts the stack pointer, so it may cause a page fault 8 bytes below the stack pointer. 유저 프로그램은 스택에 wtire 할 때 스택 포인터보다 아래에 하면 버그가 발생한다. 일반적으로 실제 OS들은 스택의 데이터를 수정하는 “신호"를 전달하기 위해 언제든지 process에 interrupt하기 때문이다. 하지만 x86-64 PUSH 인스트럭션은 스택 포인터에 적용하기 전에 접근 허가를 확인해서, 스택포인터보다 8바이트 아래에 page fault를 발생시킨다. ...

2023년 5월 16일 · 3 분 · 배준수

PintOS Project3-4 Memory Mapped Files

Memory Mapped Files 개념 이전 anonymous page때와는 달리 memory-mapped page를 다뤄야 한다. anonymous page와 달리, file-backed mapping되어 있다. 페이지의 컨텐츠는 실존하는 파일들 그대로이다. page fault가 발생하면, physical frame이 즉시 할당되고 파일에서 메모리(프레임)로 컨텐츠들이 복사된다. memory-mapped page들이 매핑되지 않거나 swap-out 되면, 컨텐츠의 변동이 파일에도 반영된다. 함수 mmap과 munmap함수를 다루게 된다. memory- mapped file을 위한 시스템 콜이다. VM system은 mmap 구역으로 페이지를 최대한 lazily하게 load해야하고 mmaped file 그 자체를 백업 저장소로 사용해야 한다. 자세히 말하자면, 데이터가 메모리 지역에 데이터를 작성하고 운영체제가 그 메모리를 어떤 이유로 ‘free’해야 한다면, 그 데이터를 파일에 다시 옮겨 작성할 수 있다. 그러면 free 한 이후라도 다시 필요해지면 disk의 file에서 그 데이터를 가져올 수 있다. ...

2023년 5월 16일 · 4 분 · 배준수

PintOS Project3-5 Swap In/Out

Swap In/Out 개념 메모리 스와핑은 물리 메모리 사용을 극대화시키기 위한 기법이다. 메인 메모리의 프레임이 할당되면, 시스템은 더 이상 유저프로그램이 요청한 메모리 할당 요청을 처리할 수 없다. 해결책 중 하나는 현재 사용되고 있지 않은 메모리 프레임을 디스크로 ‘swap out’하는 것이다. 이로서 메모리 자원을 free할 수 있고 이는 다른 application이 활용할 수 있다. 스와핑은 운영체제가 한다. 시스템이 메모리가 부족한데 메모리 할당 요청을 받으면, 디스크를 swap하기 위해 evict할 페이지를 선택한다. 그 후, 메모리 프레임의 정확한 state는 디스크에 복사된다. 프로세스가 swap out된 페이지에 접근하려고 하면, 운영체제는 메모리로 다시 정확한 컨텐츠를 되가져와서 페이지를 복구한다. ...

2023년 5월 16일 · 2 분 · 배준수

PintOS 3주차 키워드 정리

Virtual Memory Management Paging Virtual Page page, memory page, virtual page는 인접하고 고정된 길이를 가지는 가상 메모리 블록이며 page table에 등록되어 있다. 가상 메모리 운영 체제에서 메모리 관리를 위한 가장 작은 단위의 데이터이다. 이와 유사하게, page frame는 운영체제가 메모리 페이지를 매핑하는, 인접하고 고정된 길이를 가지면서 가장 작은 단위의 physical 메모리 블록이다. 하드 디스크 드라이브와 같은, 메인 메모리와 auxiliary store(보조 저장?) 사이의 페이지 전송이 페이징, swapping 이라고 불린다. 컴퓨터 메모리는 페이지들로 나누어져 있어 조금 더 빠르게 정보를 찾을 수 있다.기 본 발상은 인쇄된 책의 페이지를 본따 이름 붙어졌다. 예를 들어, 독자가 책의 5천번째 단어를 찾고 싶어 한다면, 첫 단어부터 셀 수도 있다. 시간 낭비긴 하지만.. 독자가 각 페이지에 있는 단어의 수의 리스트를 갖고 있다면 훨씬 빨리 할 수 있다. 이 리스트로 어느 페이지에 5천번째 단어가 있는지, 그 페이지에서 몇번째인지 알 수 있다. 책의 각 페이지에 대한 단어 리스트는 컴퓨터 파일 시스템의 page table에 영감을 주었다. ...

2023년 5월 10일 · 8 분 · 배준수