감자튀김 공장🍟

[OS] 동기화(Synchronous)에 대해서 본문

Study/Operating System

[OS] 동기화(Synchronous)에 대해서

Potato potage 2022. 4. 5. 01:10
반응형

동기화의 필요성

동시에 여러 작업을 실행시키면 처리의 병렬성을 높여, 응용 프로그램의 실행 시간을 단축하거나, 사용자에 대한 응답시간을 낮출 수 있다. 한편으로, 다수의 작업들이 공유 데이터에 동시에 접근하면, 공유 데이터가 훼손되어 예상치 못한 문제가 발생할 수 있다.

공유 데이터에 대한 동시 접근을 해결하는 방법이 바로 동기화이다.

 

동기화 (Synchronous)

  • 한 순간에 하나의 스레드만 공유 데이터에 접근하도록 한다. 한 스레드가 공유 데이터에 대한 접근을 완전히 마칠 때까지 다른 스레드가 공유 데이터에 접근하지 못하도록 제어한다.
  • 동시에 일어난다는 뜻이다. 요청과 그 결과가 동시에 일어난다는 약속이다.
  • 바로 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야 한다.
  • 요청과 결과가 한 자리에서 동시에 일어난다.
  • A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞추겠다.

 

비동기화 (Asynchronous)

  • 동시에 일어나지 않는다를 의미한다. 요청과 결과가 동시에 일어나지 않을 것이라는 약속이다.
  • 요청한 그 자리에서 결과가 주어지지 않는다.
  • 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.

 

특징

  • 동기 방식은 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 한다는 단점이 있다.
  • 비동기 방식은 동기보다 복잡하지만, 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있다는 장점이 있다.

 

임계 구역과 상호 배제(mutual exclusion)

  • 스레드 동기화는 공유 데이터에 접근하고자 경쟁하는 다수의 스레드가 있는 경우, 한 스레드가 공유 데이터를 접근할 때, 배타적으로 사용할 수 있도록 다른 스레드가 접근하지 못하도록 상호 협력(coordination)하는 것이다.
  • 공유 데이터에 접근하는 프로그램 코드들 임계 구역이라고 부른다.
    • 임계 구역 설정은 멀티스레드 프로그램의 개발자의 판단에 따라 이루어진다.
    • 일반적으로 응용프로그램에서의 임계구역에 대한 상호 배제는 멀티스레드 라이브러리나 시스템 콜을 이용하여 작성한다.
  • 다수의 스레드로부터 공유 데이터의 훼손을 막기 위해서는, 임계구역이 오직 한 스레드만 배타적 독점적으로 사용하도록 관리되어야 하는데, 이를 상호 배제(mutual exclusion)라고 부른다.
    • 상호 배제의 핵심은 임계 구역에 먼저 진입한 스레드가 임계 구역 코드의 실행을 끝낼 때까지 다른 스레드가 진입하지 못하도록 보장하는데 있다.

출처

https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Operating%20System/%EB%8F%99%EA%B8%B0%EC%99%80%20%EB%B9%84%EB%8F%99%EA%B8%B0.md

 

GitHub - WooVictory/Ready-For-Tech-Interview: 💻 신입 개발자로서 준비를 하기 위해 지식을 정리하는 공간

💻 신입 개발자로서 준비를 하기 위해 지식을 정리하는 공간 👨‍💻. Contribute to WooVictory/Ready-For-Tech-Interview development by creating an account on GitHub.

github.com

 

반응형
Comments