핵심 → ~/os161/src/ kern/test/synchtest.c을 수정한다! (이 파일만 수정하면 됨.)

synchtest.c 파일은 os161에서 제공하는 동기화 예제 파일이다.

일단 수정하기 전에 원본 코드를 한번 돌려보자.

synchtest.c 실행 방법

cd ~/os161/root
sys161 kernel

# os161 실행 후 바로 아래 명령어 실행. 그러면 알아서 synchtest.c 실행됨.
sy161

(결과를 찍어둔게 없네ㅜㅠ 일단 원본 코드는 이런 역할을 하는구나 감을 익히자.)

그 다음 q를 입력해서 os161을 종료한다.

이제 synchtest.c 원본 코드를 분석해보자.

vi로 파일을 열면 무시무시한 심령사진같은게 튀어나온다

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1f1c1075-1215-4ec4-ba87-36fc0a1e6ab1/Untitled.png

이제 코드가 쭉 있는데, 우리가 신경써야 할 부분은 크게 다음과 같다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/62571bd3-cf51-48c4-acb2-0ffd53627689/Untitled.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e5757c3d-27a3-4c2e-ab3d-ec2b2b4fa1a9/Untitled.png

1번은 세마포어를 정의하는 부분이다.

2번은 1번에서 정의한 세마포어들을 초기화하는 부분이다.