전체 글 (70) 썸네일형 리스트형 [리트코드] 743. Network Delay Time 문제 https://leetcode.com/problems/network-delay-time/description/ LeetCode - The World's Leading Online Programming Learning Platform Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 분석 문제를 읽어보면 방향 그래프와 가중치가 주어진 것을 확인할 수 있다. 우선 가중치가 주어진 그래프를 보고 다익스트라 알고리즘으로 풀 수 있지 않을까? 라는 생각을 하고 문제를 더 읽어보자.. 데드락 문제 (Deadlock Problem) Deadlock (교착상태) 두 개 이상의 프로세스나 스레드가 서로가 가진 자원을 기다리며 다음 일을 처리하지 못하는 상태를 말합니다. 프로세스 A와 B는 1번 자원과 2번 자원을 모두 획득해야 일을 끝낼 수 있는데 A는 1번을 B는 2번 자원을 각자 획득하고 상대방에게 할당된 자원을 무한정 기다리고 있다. Deadlock 발생의 4가지 조건 데드락은 아래의 4가지 조건이 모두 성립해야 발생한다. 따라서 아래 조건 중 하나라도 해결한다면 데드락 문제를 해결할 수 있다. Mutual Exclusion (상호배제) 자원은 한번에 하나의 프로세스만 사용할 수 있다. No preemption (비선점) 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 뺏을 수 없다. Hold and wait (점유 대기.. 동기화 문제와 세마포어 동기화 문제 (Synchronization problem) 동기화 문제란 공유 데이터를 여러 프로세스나 스레드가 동시에 접근하여 연산하려 할 때 연산이 원자적으로 수행되지 않아 발생하는 문제입니다. 아래 예시를 통해 어떤 문제가 생기는 지 알아보겠습니다. (동기화란 여러 프로세스/스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것) 위에 공유 자원 X 에 접근하는 두 스레드 A, B 가 있습니다. A 는 X 값을 하나 올리는 연산을 하고, B 는 X 를 하나 내리는 연산을 합니다. 실제 CPU 에서는 x= x + 1 연산이 한번에 이루어 지는 것이 아닌 다음과 같이 수행됩니다. 1. x를 레지스터에 로드한다 2. 레지스터에 데이터를 하나 올린다. 3. 다시 레지스터 값을 x에 저장한다. 스레드 .. 이전 1 ··· 19 20 21 22 23 24 다음