미새문지

크래프톤 정글 week11, day86 - DFS, BFS, 핀토스 고찰 본문

크래프톤 정글/TIL

크래프톤 정글 week11, day86 - DFS, BFS, 핀토스 고찰

문미새 2024. 4. 2. 23:19
728x90

< DFS & BFS >
https://moonmisae-cdpt.tistory.com/182

 

깊이 우선 탐색(DFS, depth-first search), 너비 우선 탐색(BFS, Breadth-first search)

깊이 우선 탐색(DFS, depth-first search) 깊이 우선 탐색(DFS)은 그래프의 모든 노드를 탐색하는데 사용되는 알고리즘 중 하나이다. 루트 노드에서 시작해 한 방향으로(주로 왼쪽부터) 들어갈 수 있는한

moonmisae-cdpt.tistory.com


(경)(육)관에 출근한지 벌써 9일. 교육관에서 넘어와서 핀토스 프로젝트 1인 threads를 복습하고 이해가 잘 안갔던 부분인 nested & chaining과 조건 변수로 스레드를 관리하는 convar에 대해 이해하게 되었다. 재희님이 짠 nested와 chaining 코드는 다른 분들과 다르게 재귀로 풀었는데, 그 당시에 이해가 안됐었던 재귀가 이제는 어느정도 이해가 간다. 남들과 다른 방식으로 푸는 남자 갓재희

현우님과 상림이형처럼 엄청 깊게 팔 순 없을 것 같아 1을 쭉 돌아보고 2로 넘어왔다.

argument passing 부분은 args, argc 포인터를 잘 연결해준다면 코드의 흐름 자체는 괜찮은 것 같다. 이 부분은 저번 팀 때 계속 함수가 이동하는 부분을 계속 확인하면서 일일이 다 printf로 찍었었다.

그래서 이 부분은 스무스 하게 넘어왔고 문제는 시스템 콜인데, 일단 시스템 콜의 코드 자체는 fd나 file 등 인자를 받아와 에러 조건 잡아주고 동시성 문제를 위해 각 함수의 메인 부분이 실행될 때 lock으로 잠궈 보호해주는 정도로 이해하고 있어 괜찮은데, 함수 내부에서 process로 타고 넘어가니까 자꾸 꼬인다. fork는 내가 이걸 안 보고 짤 수 있을까 할 정도로 답이 안보이고 다른 함수는 그래도 이해는 했지만 직접 코드짜라하면 헷갈릴 것 같다.

 

그리고 시스템 콜 함수에서 lock으로 잠궈서 보호하는 부분 말인데, write, open, read를 제외한 다른 함수들은 lock_acquire와 lock_release 이거 지워도 테스트 케이스가 너무 잘된다. 지피티 말로는 테스트 케이스가 단일 프로세스로 테스트가 된다고 하는데 이 부분은 내가 알 수가 없다.. 테스트 코드를 봐도 그것만으론 잘 모르겠고

그리고 매번 if문으로 파일의 에러를 잡아주던 코드를 따로 함수로 빼서 작성했다. 구글링한 코드들을 보니까 check_address라는 함수로 묶어주던데 아마 가독성을 위해 했던 것 같다

내일 하루 남은 날 그냥 남은 시스템콜 부분은 기존에 작성해논 코드를 보고 이해만 하려고 한다.

VM은 명헌이가 잘 알려준다고 하니까 기대하는 중

 

학습 시간 : 10 ~ 24시

728x90