본문 바로가기

pintos

PintOS Project 4. File System Project4. File System 1.Indexed and Extensible Files 1번과제는 2가지 목표가 있다. 하나는 FAT을 이용해 File system을 구현하는 것이다. 또, 현재는 파일의 크기가 limit이 있는데 얼마든지 확장할 수 있는 구조를 만들어야 한다. 파일은 의미 있는 정보를 담는 논리적인 단위이다. 이 파일은 메타데이터 (파일의 진짜 정보!)를 가지고, 이름 길이 등등을 가진다. 원하는 파일을 열고 닫고 쓰고 읽기 위해서는 파일에 접근해야한다. 이 방법론에 관한 내용이 핵심이다. 한 섹터는 512 bytes이고 어떤 파일이 총 10개의 섹터가 필요하다고 하자. 10개의 연결된 섹터로 파일을 저장하면 좋겠지만 이럴 경우 외부단편화가 발생하기 쉬워진다. 때문에 우리는 10.. 더보기
Project3. Virtual Memory (PintOS) Project3. Virtual Memory 1. Memory Management 늘 그래왔듯, 가장 기초 즉 이 project3가 흘러가는 코드의 시작을 공부한다. Project2까지는 load를 어떻게 해왔는지 생각해보자. 우리는 process_exec -> load -> load_segment -> setup_stack 등의 방식으로 메모리를 적재했다. (load_segment, setup_stack은 주의깊게 보지 못했을 수 있다.) 그러나 프로그램 전체를 메모리에 load 하는 것은 매우 비효율적이다. 그래서 우리는 lazy_load를 사용한다. 지금 당장 사용해야할 부분만 load하고, 사용하지 않는 부분은 표시만 해둔다고 생각하면 될 것 같다. 이렇게 하면 당장 큰 프로그램을 모두 load하.. 더보기
PintOS project2. User Program Project2. User Program 1. Argument passing 첫 과제는 Argument passing이다. 이를 이해하기에 앞서, 2주차 과제에서 우리가 배워야 할 것이 무엇이고 목적이 뭔지 생각해보자. 쉘에서 우리는 프로그램을 실행할 때, echo 'Hello World' 처럼 echo라는 프로그램을 'Hello World'라는 인자값을 주어 실행한다. 혹은 더블 클릭으로 폴더를 열거나, 파일을 실행하는 것도 같은 맥락일 것이다. 이렇게 사용자가 어떤 프로그램을 실행하겠다고 명령했을 때, 그 명령을 컴퓨터가 이해할 수 있게 잘 전달해줘야 한다. 즉, project2의 목표는 User Program을 어떻게 컴퓨터가 식별하고 실행하는가! 에 관한 것이다. 더 구체적으로 말하자면, Pint.. 더보기
PintOS project1. Threads PintOS 1주차의 기록 기본 구성 thread의 status는 Thread_Running, Thread_Ready, Thread_blocked, Thread_dying 로 4가지이다. 이 개략적인 그림을 알고 있으면 상태 변화를 이해하기 쉽다. (참고: https://poalim.tistory.com/33?category=758538) [Pintos] Project 1 : Thread(스레드) - Priority Scheduling(1) 스케쥴링은 ready 상태에 있는 스레드들의 순서를 관리하여 가장 높은 priority 를 가진 스레드가 running 상태가 될 수 있도록 만들어주는 것이다. 현재상태 우선 현재 pintos 가 스케쥴링을 어떻게 관 poalim.tistory.com 추가로 Pint.. 더보기