본문 바로가기

Review57

[WEEK12] Pintos _ Project3 Virtual Memory 정리 및 회고 0. Gitbook과 Github Link 해당 블로그 글에는 코드를 따로 올리지 않으므로 대신하여 Github Link를 올립니다. 수정이 필요한 부분이나 틀린 부분은 댓글로 지적해주시면 감사하겠습니다. Gitbook 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 a.. 2022. 12. 13.
[WEEK11] Pintos _ Project3 FIFO / LRU / Clock 알고리즘? Eviction 정책들 파헤치기 FIFO / LRU / CLOCK Algorithm이 뭘까? 물리메모리 크기의 제한을 극복하기 위해 나온 다양한 정책들이 있고 그 정책은 아래와 같다. FIFO (First in - First out) : 구현이 간단하나 성능이 좋지 않다. 랜덤 (Random) : 운에 따라 성능이 달라진다. 최적조건 (Optimal) : 가장 나중에 접근될 페이지를 교체하는 것이다. 대부분의 경우 가장 성능이 좋다. (콘센트 문제와 유사) LRU (Least Recently Used) : 지역성의 원칙(최근성)에 따르는 것으로 가장 오래 전에 사용하였던 페이지를 교체한다. LFU (Least Frequently Used) : 지역성의 원칙 (빈도수)에 따르는 것으로 가장 적은 빈도로 사용된 페이지를 교체한다. 메인메모.. 2022. 12. 13.
[WEEK11] Pintos _ Project3 Virtual Memory (ELF 헤더와 프로그램 헤더 차이점 알아보기) 1. Executable Header와 Program Header의 차이? ELF Header : “ ELF 파일의 메타 데이터를 가진 헤더 ” Program Header : “ 메모리에 적재하는 하나 또는 그 이상의 섹션의 집합” 2. 좀 더 자세히 알기! 1) ELF - Executable and Linking Format의 약어 - 실행가능한 바이너리 파일, 목적파일, 공유 라이브러리, 코어 덤프 등에서 사용되는 형식 - UNIX / LINUX 기반에서 사용되는 실행 및 링킹 파일 포맷 1-1) ELF 헤더 - ELF 파일의 메타데이터를 가진 헤더 - ELF헤더는 binary에 대한 일반적인 정보를 포함하고 있음 - 비트 포맷은 어떻게 되는지, 리틀 엔디안인지 빅 엔디안인지 ELF의 버전, 파일의 .. 2022. 12. 6.
[WEEK10] Pintos _ Project2 User Program (2.2) System Calls 0. 시작하기 전에 예전 직장에서 법이나 규정을 많이 보다보니 꽤나 오랜 시간을 단어나 용어의 정확한 정의나 의미 파악을 중점적으로 공부하고 일을 수행해왔다.. Abstraction으로 가득찬 프로그래밍 세계에서는 이런 공부방법이 좋지 못하다는 것을 시간이 지나면서 점점 깨닫고 있다. 🥲 물론 용어에 대한 정확한 파악도 중요하지만 개념파악 외에도 코드 구현 또한 매우 중요하다! 앞의 Argument Passing이나 File System 구현은 메뉴얼에서 시킨대로, 코드를 잘 짜면 구현이 가능하나 (물론 구현이 쉽지는 않다.) fork, wait, exec부터는 각 코드들의 유기적 관계와 코드가 어디서 어떻게 움직이는지 알아야 이해력 높은 구현이 가능한 것 같다. (Project를 마치는 지금 시점에도 .. 2022. 11. 29.
[WEEK10] Pintos _ Project2 User Program (2) System Calls 1. 프로젝트 관련 공부 Pintos Project2 Pintos에서 User Program을 실행시켜라! (Argument Passing, System Calls 등) 우리 과제는 프로그램을 실행시키기 위해서 아래와 같은 항목들의 일부를 수행하는 것으로 보인다. 2. 코드 구현 우리조는 조금 더 구현이 쉬울 것 같은 File Descriptor 부분을 먼저 수행하고 fork, exec, wait으로 넘어갔다. 두번째 미션 : System Calls 관련함수 : create, remove, open, filesize, read, write, seek, tell, close 등 Pintos에는 File Descriptor 부분이 누락되어 있다. File Descriptor Table을 구현하고 FD를 활용.. 2022. 11. 29.
[WEEK09] Pintos _ Project2 User Program (1) Argument Passing 1. 프로젝트 관련 공부 Pintos Project2 Pintos에서 User Program을 실행시켜라! (Argument Passing, System Calls 등) 우리 과제는 프로그램을 실행시키기 위해서 아래와 같은 항목들의 일부를 수행하는 것으로 보인다. 2. 코드 구현 첫번째 미션 : Argument Passing 관련함수 : process_exec / load / argument_stack 첫번째로 풀어야할 문제는 Argument Passing이다. 유저프로그램을 실행하기 전 커널은 레지스터에 argument를 저장해야한다. f_name 문자열로 인자값을 받아오나 해당 인자에 대한 passing을 제공하지는 않는다. 인자값을 parsing 하여 스택에 올림으로써 파일 실행에 대한 준비를 하는.. 2022. 11. 29.