Pintos Project 3(1) : Virtual Memory Pintos 세 번째 프로젝트는 Virtual Memory이다. Process Virtual Memory Layout 핀토스에서 가상 메모리 시스템을 구현하기 위해 SPT(Supplemental Page Table)를 사용한다. SPT의 역할은 그 이름처럼 Page Table을 보조하는 역할을 한다. Page Table 먼저, 운영체제에서 Virtual Memory System을 위해서 MMU(Memory Management Unit), TLB(Translation Lookaside Buffer) 등의 하드웨어와 함께 Page Table이라는 자료구조를 사용한다. 페이지 테이블은 페이지(Virtual page)를 프
Pintos 두 번째 프로젝트는 User Program이다. 이전까지 Pintos에서의 모든 코드는 OS kernel의 일부였다. 이 말인 즉 system의 중요한 자원에 접근할 때 모든 privilege를 가진 채 프로그램이 실행되었다는 의미이다. 그러나 OS 위에서 유저 프로그램을 실행시킬 경우 이러한 privilege를 갖지 못한다. 운영체제는 기본적으로 운영체제가 아닌 프로그램은 신뢰하지 않고, 따라서 privilege를 주지 않는다. https://en.wikipedia.org/wiki/Protection_ring 이제부터는 Ring 3 영역에서 유저 프로그램이 실행될 것이다. 이 때 유저 프로그램은 자신의 User virtual memory에만 접근할 수 있다. 만약 유저 프로그램이 Kernel vi
Pintos Project 1 : Threads - WIL(Weekly I Learned) Background 프로그램(Program) 프로그램(program)은 특정한 task를 수행하기 위해 작성된 instruction들의 집합이다. instruction들은 프로그래밍 언어로 작성된다. 작성된 코드는 컴파일 되어 실행 가능한 파일이 만들어 지고,이 파일을 프로그램(Program)이라고 한다. > 💡 컴파일(Compile) → 인간이 이해할 수 있는 언어로 작성된 소스코드(고수준 언어 : C, C++, Java, ..)를 CPU가 이해할 수 있는 언어로 번환하는 작업 컴파일 과정은 4가지 단계(전처리 - 컴파일 - 어셈블리 - 링킹)로 나누어 진다.  also known as a command-line interpreter or command-line interface(CLI) User와 kernel 사이의 매개체 역할을 하는 프로그램 👉 즉, Shell은 User로부터 명령을 받아 그것을 processing하기 위해 kernel에게 넘겨주는 일을 함 Bash abbreviation of Bourne Again Shell 가장 널리 사용되는 Unix Shell이자, 리눅스와 Unix-base의 OS에서 주로 사용됨 User와 interact하고, command를 실행할 수 있도록 하는 CLI를 제공함 Bashrc also called ".bashrc" 새로운 interactive shell이 launch됐을 때 bash에 의해 실행되는 shell script로, command들과 shell의 행동들을 customiz