줌코딩의 코딩일기
Zoom in Coding
-
(프로그래머스 코딩테스트 고득점 kit) 이분탐색 Level3 예산
문제 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것입니다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있습니다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정합니다. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정합니다. 모든 요청이...
-
(Deadlock Predictor 개발) Deadlock 예측을 위한 Lock Graph & GoodLock Algorithm 정리
Lock Graph lock이 언제 acquire되고 release되는지 관찰할 수 있게 해주는 Graph이다. 방법 쓰레드가 lock X를 acquire하면 nx라는 노드를 만들어준다. lock X를 hold한 상태에서 lock Y를 acquire하면 ny 노드를 생성해주고 nx->ny 라는 edge를 만들어준다. remove nx, nx->*, *->nx를 다 삭제해준다. 이 도중에 cycle이 발생하면 무조건 report한다. Resource Allocation Graph vs. Lock...
-
(Deadlock Detector 개발) Shared library 활용 Deadlock with Mutex Locks Detect하기 + 코드
Shared Library의 Dynamic Loading C에서는 shared object를 compile할 때가 아니라 runtime 때 load할 수 있게 해준다. 이 때 load된 함수들과 변수들은 실제 코드에 합쳐지게 된다. 예를 들어, 우리가 짠 rand() 함수를 가져오고 싶으면 다음과 같은 코드를 library file로 만들어준다. #define _GNU_SOURCE static int count = 0 ; int rand() {...
-
(Deadlock Detector 개발) Deadlock 정의, Resource-Allocation Graph 활용 Deadlock 찾기
Deadlock이란? The situation when a waiting process is never again able to change state, because the resources it has requested are held by other waiting processes. 즉, A라는 프로세스가 B라는 프로세스에게 필요한 resource를 안 놔주고 있어서 B가 계속 기다리는 상태에 놓여져있을 때를 의미한다. Deadlock의 특징 Mutual Exclusion : 적어도 하나의...
-
(프로그래머스 코딩테스트 고득점 kit) Greedy Algorithm Level3 저울
문제 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 합니다. 이 저울의 양팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같습니다. 또한, 저울의 한쪽에는 저울추들만 놓을 수 있고, 다른 쪽에는 무게를 측정하려는 물건만 올려놓을 수 있습니다. 저울추가 담긴 배열 weight가 매개변수로 주어질 때, 이 추들로 측정할 수 없는 양의...