[OS] semaphore Game : 타자 게임
2020. 5. 12. 01:05
오늘은 세마포어를 이용하여 타자 게임을 구현해보았다. 정말 어려운 문제였다. 이 문제를 해결하면서 몇 가지 추가로 알아낸 점과 어려웠던 점이 있었다.
추가로 알아낸 점 & 어려웠던 점
위와 같이, 문자열 입력에 대한 처리가 잘 되지 않아서 각각의 char 배열에 있는 문장을 아스키코드로 출력을 해 보았다. 그 결과, 원하지 않는 값이 들어가 있는 것임을 알았다.
공백 문자에 대해서는, 파일을 수정하여 최대한의 오차를 줄였지만, 끝의 13과 10에 대한 것은 처리를 해야 완전히 같은 문장으로 파악할 수 있었다.
아스키 코드 각각 13과 10은 \r과 \n에 대한 문자였으며, 간단하게 생각해서 문자열의 크기만큼 strlen() 함수를 사용하여 알아내고, 그 바로 마지막 인덱스에 있는 값이 해당 값이므로, 이 값을 배열 마지막은 \0로 처리하는 특성을 사용하여 공백 문자로 바꿔준다.
이러한 방식으로 처리를 하니, fgets()에 대한 개행 문자를 없애고, 의도치 않은 문자에 대한 값도 처리를 하여 strcmp() 함수를 의도대로 이용할 수 있었다.
또한 처음 과제를 접했을 때 제일 막막했던 점은 mmap에 관한 것이었다.
이것이 공유 메모리를 매핑하는 것이라고 알고 나니, 수월하게 진행되었다. 공유 메모리를 매핑하고, 이 곳에 정보를 넣고 사용하는 과정에 있어서 접근을 제어하는 방법으로 세마포어를 사용하니 한층 더 세마포어가 어떤 역할을 하는지 잘 이해할 수 있었다.
'Undergraduate Records' 카테고리의 다른 글
소소하게 study 기록 - IT 영어: About Netflix (0) | 2020.05.14 |
---|---|
[DB] group 함수 (0) | 2020.05.14 |
[PL] polymorphic Subprograms (0) | 2020.05.09 |
OS 라즈베리 파이 설치하기 (0) | 2020.05.08 |
OPIC TIPS - Feeler (0) | 2020.05.01 |