# synchronization

핀토스 구현: Priority Scheduling and Synchronization
여러 thread가 lock, semaphore, condition variable을 얻기 위해 기다릴 경우 우선순위가 가장 높은 thread가 CPU를 점유하도록 구현해야 한다.

[Operating System] Synchronization Examples
producer and consumer processes가 공유하는 자료 구조들 : \- int n; \- semaphore mutex = 1 : Buffer에 하나의 프로세스만 접근 가능 \- semaphore empty = n, \- semapho

[Operating System] Synchronization Tools - Background
앞선 예시로 원형 큐가 있었는데, BUFFER_SIZE - 1개만 담을 수 있었다. 이 문제를 해결하기 위해 count라는 변수를 사용해서 해결할 수 있다.producer processconsumer process각각은 괜찮아 보이지만, 동시에 실행되었을 때 문제가 발

[Redis] 분산락(Distribution Lock) 을 구현해 다중화 서버에서 발생하는 동시성 문제 제어하기
동시에 대규모 트래픽 요청이 들어와서 Race Condition 이 발생한 경우, Redis 로 분산락을 구현해서 오차없는 트래픽 처리를 해보자! 🧐

[운영체제] Synchronization (3) - Spin lock과 Mutex lock, Mutex와 Semaphore
lock을 잡기 위해 오랜 시간을 기다려야 할 것 같으면 다른 작업을 동시에 진행할 수 있다. busy waiting 하지 말고, blocking 되어 기다리자.자원을 단시간에 얻을 수 있게 되는 경우 차라리 spin lock이 효과적이다.
[운영체제] Synchronization (2) - Spin lock, Busy waiting, Test-And-Set, Compare-And-Swap
잡으려는 lock이 avaliable 해 질 때 까지 계속 루프를 돌며 진입을 재시도한다. 이른바 바쁘게 기다리는 busy waiting의 한 종류이다. lock을 잡기 위해 다른 작업을 수행하지 않고 계속해서 기다리는 경우
[운영체제] Synchronization (1) - Race Condition, Critical Section
두 개 이상 프로세스/스레드가 shared resource에 동시에 concurrent하게 접근함으로써 결과 값이 확정 되지가 않고, 그때 그때 실행할 때마다 조금씩 바뀌는 현상

[OS] 6-1) Process Synchronization (Concurrency Control) 1
데이터가 저장된 곳이 있을 거고, 프로그램은 그걸 가져와서 연산하고, 다시 특정 위치에 저장하는 방식이다. 딱 이것 때문에 synchronization문제가 발생한다. 그 특정 위치들에 동시에 접근하려고 하기 때문이다.Storage는 데이터가 들어있는 저장 공간, ex
운영체제 6장. Synchronization Tools
여러 개의 프로세스가 동작하게 되면, 이들간 동기화를 해 주어야 한다. 이 때 사용하는 것이 synchronization tool이다. 어떤 상황에서 프로세스 간 동기화가 필요한가?

[Java] 멀티 Thread 프로그래밍에서의 동기화
critical section은 두 개 이상의 Tread가 동시에 접근하는 경우 문제가 생길 수 있기 때문에 동시에 접근할 수 없는 영역이다.semaphore는 특별한 형태의 시스템 객체이며 get/release 두 개의 기능이 있다.한 순간 오직 하나의 Thread만

[Onboarding] : 동기화
코드를 작성하다보면 공유 자원에 여러 쓰레드가 동시에 접근하는 상황을 고려해야 할 때가 있다.예를 들어, 특정 메소드를 복수의 쓰레드가 동시에 실행하는 경우를 생각해보자. 해당 메소드에서 객체의 필드를 동시에 읽거나 쓰는 상황이 발생한다면 메소드 실행 결과가 달라질 수

Swift Concurrency: Behind the scenes Part. 02
앞에서는 Swift concurrency가 어떻게 동작하는지 확인했다. 이번에는 Swift concurrency를 채택할 때 주의해야 하는점, 그리고 Actor를 통한 Synchronization에 대해 알아보자.

자바 스레드 동기화
Java는 synchronized 키워드를 사용해 접근 제어를 한다.클래스 하나당 하나의 스레드만 접근 허용}인스턴스 하나당 하나의 스레드만 접근 허용포함된 블럭의 제어자에 따라 적용됨synchronized(this){} 는 어떤 메서드가 되었든 그 객체 전체를 loc

[Java] 쓰레드의 동기화(synchronization)
멀티 쓰레드 프로세스에서는 다른 쓰레드의 작업에 영향을 미칠 수 있다.진행중인 작업이 다른 쓰레드에게 간섭받지 않게 하려면, '동기화'가 필요하다.쓰레드의 동기화 : 한 쓰레드가 진행중인 작업을 다른 쓰레드가 간섭하지 못하게 막는 것동기화하려면, 간섭받지 않아야 하는
프로세스 동기화
프로세스들은 작업을 진행하며 서로 데이터를 주고 받아야 하는 경우가 생깁니다. 프로세스끼리 통신을 하는 경우 누가 먼저 작업할지, 언제 작업이 끝날지 등을 서로 알려주어야 하는데 이를 "동기화"라고 합니다. 프로세스 간 통신 프로세스는 시스템 내에서 독립적으로 실행되기

OS [OS]Process Synchronization(Problem, DeadLock and Starvation, Semaphore)
이 글은 KOCW에 공개되어있는 '반효경 교수님'의 운영체제 강의 및 강의 교재 Operation System Concepts(a.k.a 공룡책🦕)의 내용을 기반으로 작성했습니다.이번 챕터에서는 Process Synchronization에 관해 정리해보겠습니다오류가
TIL (21/06/16)
Java Synchronized 핵심: Method에 거는 syncronized 키워드는 해당 함수가 포함된 객체(this)에 Lock을 거는 것과 같다. #1 서로 다른 Thread로 call() 함수를 호출하지만, synchronized 키워드의 객체락으로 인해 T
[210507] CriticalSection(Thread Synchronization)
Thread Synchronization의 CriticalSection 사용법