동기화 2

[Pintos : 동기화] 락(Lock)

락(Lock)세마포어와 유사하지만 주로 리소스에 대한 상호 배제를 보장하기 위해 사용된다.세마포어처럼 동작하지만 초기값이 1인 세마포어와 동일한 개념이다. 락의 목적한 번에 하나의 스레드만 특정 리소스에 접근할 수 있도록 보장락의 연산 락 획득(Acquire): 세마포어의 down 연산에 해당하며, 락을 잠그고 현재 스레드가 리소스를 사용하게 만듭니다.락 해제(Release): 세마포어의 up 연산에 해당하며, 락을 풀고 다른 대기 중인 스레드가 리소스를 사용할 수 있도록 합니다.락의 추가적인 제약세마포어와 비교했을 때, 락에는 하나의 중요한 제약이 있습니다. 락을 획득한 스레드, 즉 `락의 소유자(owner)`만 `그 락을 해제`할 수 있습니다. 만약 다른 스레드가 락을 해제하려고 시도하면, 이는 잘못..

[Pintos : 동기화] 세마포어(Semaphore)

세마포어(Semaphore)비동기적으로 실행되는 여러 스레드나 프로세스 간의 **동기화(synchronization)**를 위해 사용하는 중요한 도구이다. 세마포어의 두 가지 연산 Down 또는 P 연산: 세마포어 값이 양수일 때까지 대기하고, 양수가 되면 그 값을 1 감소시킵니다.Up 또는 V 연산: 세마포어 값을 1 증가시키고, 대기 중인 스레드가 있으면 하나를 깨워서 실행시킵니다.이제 세마포어가 "0,1, 그 이상의 수" 초기화 되는 경우 3가지를 설명합니다.세마포어의 활용 예시세마포어는 `0`으로 초기화되면 한 번만 발생하는 `이벤트를 기다리기 위한 목적`으로 사용할 수 있다.스레드 A가 스레드 B를 생성하고, 스레드 B가 어떤 작업을 완료할 때까지 A가 기다려야 한다고 가정해봅시다. 스레드 A는..