cs(운영체제)
블로킹 논블로깅 ,동기 비동기
그zi운아이
2023. 9. 8. 16:15
동기와 비동기, 블롱킹 논블로킹은 비스한 개념으로 혼용되기 쉬우나 서로 다른 개념을 얘기하고 있으다
동기 비동기
동기
- 두개 이상의 프로세스나 스레드가 특정 작업을 순차적으로 또는 예측 가능한 순서대로 실행되도록 하는 방식
- 데이터의 일관성을 유지하고 Race Condition을 방지한다
- 세마포어, 뮤텍스,모니터등 다양한 기술이 있다
비동기
- 작업이 독립적으로 실행되며 작업 간의 명시적인 순서가 없는 방식을 의미한다.
- 효율성과 성능을 높이기 위해 사용된다
- 하나의 작업이 끝나기를 기다리지 않고 다른 작업을 실행할 수 있다.
동기와 비동기의 차이점
- 동기는 작업의 순서와 예측성이 중요하나 비동기는 그렇지 않다.
- 동기화는 복잡한 알고리즘과 메커니즘을 핖요로 하고 , 비동기는 이벤트 기반의 간단한 로직을 사용할 수 있다.
블로킹과 논블로킹
블로킹
- 어떤 작업을 수행할 때 해당 작업이 완료될 때까지 프로그램의 실행이 멈추는 것미한다.
- 시작되면 완료되기 전까지 다른 작업을 수행할 수 없으며 프로그램이 대기 상태에 들어간다.
- 블로킹 동작이 발생하는 동안 CPU는 유휴 상태가 될 수 있다.
- 사용자 인터페이스나 중요한 작업의 반응성이 떨어질 수 있다.
논블로킹
- 어떤 작업을 수행할 때 해당 작업의 완료와 상관없이 프로그램의 실행이 계속되는 것을 의한다.
- 완료될 수 없더라도 다른 작업을 계속 수행할 수 있게 한다.
- cpu나 메모리의 리소스를 효율적으로 사용할 수 있다
- 사용자 인터페이스나 실시간 시스템에서 높은 응답성을 유지할 수 있다.
동기 블로킹
- 해당 작업이 완료도리 때까지 프로그램은 대기 상태에 있다
- 로직이 간단하고 이해하기 쉽다
- 리소스를 비효율적으로 사용하고, 응답성이 떨어진다.
비동기 블로킹
- 드물게 사용되는 조합으로 비동기 작업을 요청하지만 그결과를 기다리는 동안 다른 작업을 수행할 수 없는 경우를 의미한다.
- 비효율 적이고 복잡성이 증가된다.
동기 논블로킹
- 작업을 요청하고 바로 반환하지만, 다음 작업을 진행하기 전에 이전 작업이 완료됐는지 확인 한다.
- 상대적으로 간단한 로직으로 효율적인 리소스 사용 가능
- 체크 로직을 수행해야 하므로 코드가 복잡해 질 수 있다.
비동기 논블로킹
- 작업을 요청하고 바로 반환 다른 작업을 계속 수행한다. 작업 완료시 콜백 함수 등을 통해 알림을 받는다.
- 높은 효율성과 응답성 복잡한 작업도 간결하게 처리 가능하다
- 코드 복잡성이 상승하며 상태관리가 어려울 수 있다.