2024/09/01 2

Sync/Async & Blocking/Non-Blocking

Synchronous : 요청이 들어온 순서에 맞게 하나씩 처리하는 것Asynchronous : 하나의 요청이 끝나기 전에, 다른 요청을 동시에 처리할 수 있는 것Blocking : 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것NonBlocking : 다른 추제의 작업에 관련없이 자신의 작업을 하는 것 동기(Synchronous), 비동기(Asynchronous)둘의 차이는 한 작업이 다른 작업을 호출하는 경우, 호출되는 것의 작업 완료 여부를 누가 신경쓰는 지에 따라 나뉜다.  Synchronous는 호출하는 함수가 작업 완료 여부를 확인한다. Synchronous의 뜻은 '동시 발생하는'으로 컴퓨터 공학에서 동기는 현재 작업의 응답..

운영체제 2024.09.01

상호 배제 / 동기화 (Mutex, Semaphore, Monitor)

동기화(synchronization)를 위한 상호 배제(Mutual Exclusion) 앞서 얘기했듯 공유자원에 대해 다수의 프로세스 혹은 스레드가 접근할 때 경쟁조건이 발생하여 의도하지 않은 동작이 발생할 수 있다. 따라서 프로세스나 스레드를 동기화 해야한다. 이때, 동기화란 공유자원에 동시에 접근하지 못하도록 접근 순서를 제어하는 방법을 의미한다.프로세스/스레드 간 동기화는 일반적으로 상호배제를 통해 구현할 수 있다. 상호배제(Mutual Exclusion)란? 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 알고리즘으로, 임계구역으로 불리는 코드 영역에 의해 구현된다. 하나의 프로세스가 순차적으로 파일을 읽는 작업을 하는 도중에 다른 프로세스가 파일의 내용을 변경해 버리면..

운영체제 2024.09.01