PintOS P2 #1 : User Program 서론

막막함의 강도가 남다르게 올라가는 요 근래의 주이지만, 나도 그렇게 호락호락 한 사람은 아니다. 글씨 몇 자와 pass/FAIL 하나 때문에 사활을 걸고 임하기에 몰입이란 단어를 온 신경으로 증명하는 과정이 아닐까. 운영체제를 만들었으니 이제 프로그램을 실행시켜보도록 하자.


 

해당 글에서 이어진다.

2025.05.16 - [구현하기] - PintOS #3 : Priority Scheduling

 

PintOS #3 : Priority Scheduling

현재 실행중인 쓰레드보다 높은 우선순위를 가진 쓰레드가 ready_list에 추가 되면, 현재 쓰레드는 즉시 해당 쓰레드에게 프로세서를 양보해야한다. 다양한 상황에서도 양보가 원활하게 이루어질

hyeonistic.tistory.com

 

굿. 우리는 Priority Scheduling까지 해냈기에 이제 User Program의 수행을 시도 할 수 있게 되었다. 지금 드는 생각인데 2차 전직같다.

지금까지의 PintOS에서 실행한 코드는 운영체제 커널과 직접적으로 연관된 코드였다. 이제는 사용자 프로그램을 틀면 그렇게 쉽게쉽게 관리자 권한을 내주지 않는다. 즉, 간단한 뭐 하나만 하려고 해도 허락을 받아낸게 아니거나, 정식 인가가 아니라면 나의 PintOS는 터진다.

이번 User Program 프로젝트를 통해 우리는 한 번에 여러 프로세스가 실행 될 수 있도록 해야한다. 각 프로세스는 한 개의 쓰레드를 가진다. (그렇다고 멀티쓰레드를 지원한다는 것은 아니다!) 사용자 프로그램은 마치 전체 시스템이 자신의 소유인 양 구현되어야한다. 즉, 기계 한 대를 프로그램 입장에서 온전히 쓸 수 있는 형태로 가상화를 해야한다는 것.

  • 이를 올바르고 맛깔난 환상을 유지하게 하려면 메모리, 스케줄링, 등등의 다양한 상태를 완벽하게 숙지해야한다.

 

good luck ! !