본문 바로가기
SW_jungle3기

week09 pintos project 2 WIL

by Success T.H.I.E.F 2022. 1. 11.

프로젝트 2는 1보다 훨씬 그 양과 깊이가 깊었던 주인 것 같다.

우선 2에서 전체적으로 실제 pintos를 이용하여 그 위에 프로그램을 실행하는 가상의 프로그래머가 있다고 생각하고 전체적으로 pintos를 테스트해보는 과제였다고 생각한다.

 

가상메모리 주는 다음 주인데 프로젝트 2를 이해하기 위해서는 프로세스의 가상 메모리 구조와 메모리 관리 영역을 공부를 안 하면 안 되겠어서 memory management 부분과 가상 메모리 영역의 이론 강의를 들었다.

 

8.Main memory management(1)_용어와 개념리마인드

메모리 관련 글 메모리시스템 메모리는 cpu가 프로그램을 실행하거나 데이터를 참조하기위 해 필요한 정보를 불러오는 공간이다. 메모리 계층 구조란 메모리를 필요에 따라 여러가지 종류로 나

younsw.tistory.com

 

8.Main memory management(2)_Memorry Allocation

Countinous Memoty Allocation > 프로세스(context)를 하나의 연속된 메모리 공간에 할당하는 정책이다. ex) 프로그램, 데이터, 스택 등 이렇게 메모리를 할당하기 위해서는 다음 사항을 고려해야 한다. 1. 메

younsw.tistory.com

 

9-1. Virtual Memory (Non-continous allocation)_Paging system

Non-continuous allocation 사용자 프로그램을 여러 개의 block으로 분할하여 할당하는 것을 말하며 실행시마다 필요한 block들만 메모리제 적재하고 나머지는 Swap device에 존재하게 하는 가상 메모리가 이

younsw.tistory.com

 

9-2. Virtual Memory (Segmentation System)

Segmentation System 프로그램을 논리적 block(segment)로 분할하므로 block의 크기가 서로 다를 수 있다. ex) tack, heap, main, procedure, shared lib... 논리적 단위로 나누기 때문에 메모리를 미리 분할하..

younsw.tistory.com

 

9-3. Virtual Memory (Hybrid paging/segmentation system)

Hybrid paging/segmentation system 페이징과 세그멘테이션의 장점만 결합한 시스템으로 프로그램 분할 시 논리 단위의 segment로 분할 후 각 segment를 고정된 크기의 page로 분할하여 메모리 적재 시 page단..

younsw.tistory.com

이렇게 강의를 조금 듣고 다시 코드를 보니 대략적이나마 어떠한 흐름에서 진행되는지 보이게 되었다.

 

또 1에서 스레드 스케쥴링시 프로세스가 전환이 일어나면 context switching이 일어나는데 이때 어떻게 새로운 프로세스가 CPU의 레지스터에 올라가는지 그 후 어떻게 실행을 시작하는지를 전반적으로 알게 되는 주였다.

 

project 2의 꽃은 system call을 구현하는 부부이었다고 생각한다. 파일을 생성하고 읽고 쓰는 일련의 과정들이 시스템 콜이라는 인터페이스를 통해 사용자 모드에서 커널 모드로 전환시키고 진행되는 것은 OK, 근데 이걸 구현하려고 하니 어느 것부터 구현을 해야 하는 건지 감이 안 왔다.

 

우선 깃북 핀토스 가이드에 적힌 순서대로 시스템 콜을 구현해야 하나 하고 하려다 보면 fork구현 시  자식 프로세스를 생성하고 끝날 때 부모 프로세스가 기다려야 하니 wait을 구현해 주어야 하는 등 test를 해보기 위해서는 대부분의 시스템 콜을 구현하고 나서야 진행할 수 있었다.

 

[Project 2_User Programs]_Intro

project 2 Intro 프로 젝트 2에서는 프로그램과 OS 사이 시스템 콜을 통해 상호작용을 하는 것에 관하여 다루어 본다고 한다. 프로젝트 1을 통과 못했다면 2에 영향이 있으니 프로젝트 1의 Advanced Schedul

younsw.tistory.com

 

[Project 2_User Programs]_Argument Passing(인수전달)

현재 핀토스 process_exec()파일을 보면 새로운 프로세스에게 인수전달을 하지 않는다고 한다. 따라서 process_exec()를 수정하여 위 기능을 구현해야 한다. 단순히 파일이름을 인수로 사용하는 대신 공

younsw.tistory.com

 

[Project 2_User Programs]_System Calls

userprog 테스트 위한 아웃풋 list (디버그 할 때 사용하면 좋아요) 더보기 pintos -v -k -T 60 -m 20   --fs-disk=10 -p tests/userprog/create-empty:create-empty -- -q   -f run create-emp..

younsw.tistory.com

 

 

컨텍스트 스위칭과 스와핑의 차이점

참고 : https://www.geeksforgeeks.org/difference-between-swapping-and-context-switching/ 프로그램은 특정한 작업을 수행하도록 설계된 instructions이다. 마찬가지로 프로세스는 프로그램의 runtime instance..

younsw.tistory.com

 

 

'SW_jungle3기' 카테고리의 다른 글

pintos poject4 WIL  (0) 2022.02.03
Pintos project3 WIL  (0) 2022.01.25
정글Week01 알고리즘?  (0) 2021.11.14
정글 3기 week00 정글입성  (0) 2021.11.06