Notice
Recent Posts
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
관리 메뉴

교대최소제곱법

[PintOS project 1 후기] 핀토스는 전설이다 본문

크래프톤 정글

[PintOS project 1 후기] 핀토스는 전설이다

옐라크레 2023. 12. 17. 02:26

마비는 아니고 핀토스를 한거야

눈을 떠보니 3주가 지났다…

이제는 프로젝트3를 해야하지만 지금 정리를 안하면 다시 2주간 시간이 없을 것 같아 급하게 복기를 해보려고 한다

Project I learn 시작!


무엇이 문제인가?

처음 깃북을 봤을 때는 그냥 막막했다.

 

여담을 하나 하자면 특히 alarm clock 부분은 아예 감을 못 잡았는데

그 이유 중 하나는 alarm clock은 효율성의 문제이지 돌아가는 코드였다는 것이 컸던 것 같다

 

아무튼 프로젝트1을 하면서 배운 것 중 하나는 "시각화"라고 할 수 있겠다

핀토스를 하면서 항상 생각했던 것은 "무엇이 문제인가?"였다

주어진 스켈레톤 코드들은 다 문제가 있는 코드들이고 우리가 해야하는 것은 그 문제를 해결하는 것이라 생각했기 때문에

문제를 찾기 위해 고민했던 것 같다

 

그리고 그 문제를 정의하는데 큰 도움이 되었던 것이 "시각화"였다

사실 지금까지의 코드들은 길어봐야 몇 천줄? 정도여서 머릿 속으로도 도식화가 되니까 시각화를 할 필요가 없었는데

핀토스 같은 경우, 일단 3만 라인 가까이 되는 엄청난 양의 코드에 끊임없이 들어가는 함수 속 함수들이 넘쳐나기 때문에 처음 코드를 봤을 때는 어지러운 지경이었다

priority scheduler를 구현하면서 시각화한 도표

 

pass를 위해 구현해야하는 기능들을 나열하는 것을 시작으로

-> 어떤 함수를 고쳐야 하는가?

-> 그 함수에서 어떤 기능을 추가/수정 해야하는가?

-> 필요한 것은 무엇이고 어떻게 해야하는가?

로 생각했고

 

정리하면 what -> where -> how 순서로 내가 해야하는 task를 시각화하였다

지금 생각해보면 이게 코드를 이해하고 내가 가야할 방향, 목표를 정하는데 엄청난 도움이 되었던 것 같다

나는 파워 J이기 때문에 목표를 정확하게 설정하고 가는 것을 선호하는데,

시각화를 하기 전에는 두리뭉술 했던 목표가 시각화를 통해 확실해져서 작업속도면에서도 큰 도움이 되었다

 


무엇을 바꿨는가?

핀토스를 하면서 중요했던 또 다른 부분은 어떤 코드를 바꿨을 때 test를 통과하는지 확인하는 과정이었다

물론 코드를 쭈욱 수정한 뒤에 테스트를 빡 돌려서 한번에 빡 통과하면 아주 기분이 좋을 것이다

그러나 현실은 호락호락하지 않았다

덤벼라 핀토스

 

시각화를 통해 내가 작업해야 할 부분을 알았다면 작업을 하면서는 한 줄 한 줄 테스트를 돌려봤다

그렇게 테스트를 pass하면 "아 이 부분을 수정하니까 테스트를 통과하네?"를 할 수 있기 때문에 코드를 더 잘 이해할 수 있고 나중에 디버깅할 때도 어떤 부분이 핵심인지를 알기 때문에 수월했던 것 같다

 

바둑에서 복기는 항상 중요하다. 개발도 그렇다.


 

일단 오늘은 이정도만 하고 정글이 끝나고 시간이 생기면 좀 더 자세히 핀토스에 관해 글을 써보려고 한다

내가 프로젝트1을 하면서 어떤 시행착오를 했고 어떤 생각을 했으며 어떻게 해결했는지를 남기고 싶다

 

핀토스를 하면서 정글 선배나 학교과제로 핀토스를 한 사람들의 글을 많이 보았는데

문제-답안 코드
문제-답안 코드
문제-답안 코드

이런 글은 본인의 기록을 정리하는데는 도움이 될지 몰라도 공부하는 사람들에게는 큰 도움이 되지 않는다고 생각했다

정말 도움이 되는 글은 내가 경험한 시행착오를 공유하고 같은 문제로 고민하고 있는 사람들에게 깨달음을 주는 것이 아닐까?

사실 지금이라도 나의 시행착오들을 자랑하고 싶지만 안타깝게도 프로젝트3가 나를 기다리고 있다...

투 비 컨티뉴...