막막함의 강도가 남다르게 올라가는 요 근래의 주이지만, 나도 그렇게 호락호락 한 사람은 아니다. 글씨 몇 자와 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 ! !
'구현하기' 카테고리의 다른 글
PintOS P2 #3 : Argument Passing 본편 (0) | 2025.05.21 |
---|---|
PintOS P2 #2 : Argument Passing을 다루기 전 (0) | 2025.05.21 |
PintOS #3 : Priority Scheduling (0) | 2025.05.16 |
PintOS #2 : Alarm Clock (0) | 2025.05.16 |
PintOS #1 : 진행 흐름도 파악하기 (0) | 2025.05.12 |