GiYeong

동기 / 비동기 본문

CS/운영체제

동기 / 비동기

gy2710 2022. 7. 24. 15:23

 

동기(Syschronous)

데이터의 요청과 결과가 한 자리에서 동시에 일어나는 것으로, 요청을 하면 반드시 요청한 자리에서 결과가 주어져야 한다.

즉, 요청을 보낸 후, 응답을 받아야지만 다음 동작이 이루어지는 방식으로서, 설계가 간단하고 직관적이지만 모든 작업이 순차적으로 실행되며 어떤 작업이 수행중이라면 다음 작업은 대기해야 한다.

 

비동기(Asynchronous)

동시에 일어나지 않는다는 의미로서, 요청과 결과가 동시에 일어나지 않는다.

동기 방식보다 설계가 복잡하지만, 결과가 주어지는데 시간이 걸리더라도 해당 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 잇다.

 

 

블록(Block)

호출된 함수가 자신의 할 일을 모두 마칠 때까지 제어권을 계속 가지고서 호출한 함수에게 바로 return 하지 않는 경우

 

논블록(Non-Block)

호출된 함수가 자신의 할 일을 모두 마치지 않았더라도, 바로 제어권을 return하여 호출한 함수가 다른 일을 진행할 수 있도록 하는 경우

 

Sync-Bloking

ASync-Blocking

결국 다른 작업이 끝날 때 까지 기다려야 하기 때문에 Sync-Blocking과 효율이 비슷하다.

 

Sync-NonBlocking

NonBlocking으로 자신의 작업을 계속 하고 있지만, 다른 작업과의 동기를 위해 계속해서 다른 작업이 끝났는지를 조회하기 때문에 효율이 좋지 않다.

 

ASync-NonBlocking

자원이 충분하다면 효율이 좋다. 다른 주체에게 작업을 맡겨놓고 자신이 하던 일을 계속 할 수 있기 때문에 해야 할 작업이 대규모이고, 동기가 필요하지 않을 경우 효과적이다.

 

참고

https://velog.io/@leehyunho2001/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B8%94%EB%9F%AD-%EB%84%8C%EB%B8%94%EB%9F%AD

'CS > 운영체제' 카테고리의 다른 글

기아상태(Starvation)  (0) 2022.07.27
교착상태(Deadlock)  (0) 2022.07.27
Thread Safe  (0) 2022.07.27
멀티 프로세스 / 멀티 스레드  (0) 2022.07.24
프로세스 / 스레드  (0) 2022.07.24
Comments