[CSAPP] ShellLab trace(06)
Trace 번호 (06)
1. sdriver로 tsh실행
2. sdriver로 tshref실행
각 trace 별 플로우 차트
trace 해결 방법 설명
trace06은 프로그램을 foreground와 background 작업으로 동시에 실행하는 것이다.
sdriver 실행 결과를 봤을 때 myspin1 프로그램을 background로, myspin2 프로그램을 foreground로 실행한다. 근데 “./myspin2 1”에서 왜 뒤에 1이 붙는지 궁금하여 myspin2.c 코드를 열어봤다.
주석을 살펴보니 두 가지의 모드로 실행 가능하다고 한다.
trace해결에 중요한 부분만 살펴보면, 직접 “./myspin2”를 입력하여 실행하는 경우 standalone 모드로 실행되는데, 인자가 있을 경우 숫자(시간)으로 받고 해당 시간동안 대기하고 종료한다(없을 경우 기본-JOB_TIMEOUT- 시간동안)
즉 “./myspin2 1”은 1초동안 대기하고 프로그램을 종료하라는 것이었다.
그리고 trace05에서 eval()함수에 foreground와 background 작업 형태에 따라 다르게 처리되도록 각각 구현했고, 지금까지 foreground와 background 실행 trace를 잘 통과했으므로 역시 의도한 작업을 수행 가능하다.
Leave a comment