Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 프로세스 제어 블록
- The Banker's Algorithm
- Non-Preemptive
- Stack영역
- 임계 구역
- Heap영역
- Multi-level Queue
- 스레드
- 문맥 교환
- The DIning Philosopher Problem
- 뮤텍스(Mutex)
- 스레드 동기화
- 커널 모드
- Activity
- 은행원 알고리즘
- 프로세스 상태 전이도
- Reentrant
- 커널 모드의 동기화
- 프로세스
- 동기 비동기
- Light Weight Process
- 방금 그 곡
- 교착 상태
- 모니터(Monitor)
- 블로킹 논블로킹
- 유저 모드의 동기화
- 유저 모드
- Process Control Block
- 경량 프로세스
- 인터락 함수
Archives
Blog For Me
[운영체제] 동기와 비동기, 블로킹과 논블로킹 본문
동기와 비동기
- 동기(Synchronous, 동시에 발생)
- 동시에 일어난다는 의미이다. 즉, 요청과 그 결과가 동시에 일어난다는 약속을 의미한다.
- 요청을 하면, 시간이 얼마나 걸리든 상관없이 요청한 자리에서 결과가 주어져야 한다.
- 요청과 결과가 모두 한 자리에서 동시에 일어나게 된다.
- 여러 노드 사이의 작업 처리 단위를 동시에 맞추겠다는 의도를 포함하고 있다.
- 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 한다는 단점이 존재한다.
- 비동기(Asynchronous, 동시에 발생하지 않는)
- 동시에 일어나지 않음을 의미한다. 즉, 요청과 결과가 동시에 일어나지 않는다는 약속을 의미한다.
- 요청한 그 자리에서 결과가 주어지지 않는다.
- 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.
- 비동기 방식은 동기보다 복잡하지만 결과가 주어지는데 시간이 오래 걸려도 그 시간 동안 다른 작업들을 할 수 있으므로 자원을 효율적으로 사용할 수 있다는 장점이 존재한다.
블로킹과 논블로킹
- 블로킹(Blocking, 타 작업 수행 차단)
- 특정 작업이 실행 요청을 받아서 실행하는 동안 다른 작업은 진행하지 못하고 대기하는 방식을 의미한다.
- 제어권이 호출된 함수에게 넘어가서 호출된 함수 내에서 작업이 모두 끝난 후 값이 리턴되고, 호출한 함수에게 다시 제어권이 넘어온다.
- 작업이 순차적으로 이루어지므로 작업 흐름을 쉽게 이해할 수 있다는 장점이 있다,
- 블로킹이 이루어지는 동안 하드웨어 리소스를 효율적으로 이용하지 못한다는 단점이 있고, 특히 블로킹이 일어나는 작업이 오래 걸리는 작업인 경우에 이러한 단점은 더욱 부각된다.
- 논 블로킹(Non-Blocking, 타 작업 수행 허용)
- 특정 작업이 이미 수행중이여도, 그것과 상관없이 바로 다른 작업을 수행 시키는 방식을 의미한다.
- 제어권은 계속 호출한 함수에 있고, 값의 리턴이 함수의 실행과 동시에 이루어진다.
- 리소스가 낭비되는 시간이 없으므로, 하드웨어 리소스를 효율적으로 이용할 수 있다.
- 작업 흐름이 복잡해져서 이해가 쉽지 않다는 단점이 있다.
동기/비동기, 블로킹/논블로킹 조합
- 동기/블로킹
- 실행 흐름이 순차적이고 프로그램을 제어하기 쉽다.
- 호출한 함수는 호출된 함수의 작업이 끝날 때까지 아무것도 하지 않으며 기다린다.
- 팀장은 A사원에게 어떤 작업을 시킨 후 A사원의 작업이 끝날 때까지 아무것도 하지 않으며 기다린다.
- 동기/논 블로킹
- 호출한 함수는 호출된 함수의 작업이 끝날 때까지 기다리며 그 동안 다른 작업을 진행 할 수 있다.
- 팀장은 A사원에게 어떤 작업을 시킨 후 A사원의 작업 완료 여부를 지속적으로 확인하면서 자신의 일을 한다.
- 비동기/블로킹
- 호출한 함수는 호출된 함수의 작업 완료에 신경쓰지 않지만 호출된 함수가 작업을 완료 할 때까지 아무것도 하지 않는다.
- 팀장은 A사원에게 어떤 작업을 시켰는데, A사원이 계속 작업 관련해서 팀장을 붙들고 있고, A사원의 작업이 끝날 때까지 팀장을 놓아주지 않는다.
- 비동기/논 블로킹
- 호출한 함수는 호출된 함수의 작업 완료 여부는 신경쓰지 않고 자신의 작업을 진행한다.
- 팀장은 A사원에게 어떤 작업을 시킨 후 자신은 다른 업무를 보기 시작한다. 이후 A사원이 일을 마친 후 팀장에게 보고한다.
- 가장 효율적인 방식이다.
참고자료
https://siyoon210.tistory.com/147
'컴퓨터과학 > 운영체제' 카테고리의 다른 글
[운영체제] 스레드 동기화 문제 (0) | 2021.11.30 |
---|---|
[운영체제] 동기화(Synchronization), 경쟁 상태(Race Condition) (0) | 2021.11.29 |
[운영체제] CPU 스케줄링(Scheduling) (0) | 2021.11.14 |
[운영체제]스레드 추가내용 (0) | 2021.11.11 |
[운영체제]멀티 프로세스 vs 멀티 스레드 (0) | 2021.11.11 |
Comments