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
- 일상
- 토이프로젝트
- memory
- 프로그래머스
- Operating System
- web
- 자료구조
- 코드업
- 알고리즘
- Spring
- react
- react-redux
- 공부
- Redux
- 정렬
- codeup
- 타입스크립트
- 리덕스장바구니
- CPU 스케줄링
- js to ts
- 파이썬
- error
- 분할메모리할당
- 협업
- 기초100제
- Java
- C++
- 스프링
- OS
- 백준
Archives
- Today
- Total
감자튀김 공장🍟
[OS] 동기화(Synchronous)에 대해서 본문
반응형
동기화의 필요성
동시에 여러 작업을 실행시키면 처리의 병렬성을 높여, 응용 프로그램의 실행 시간을 단축하거나, 사용자에 대한 응답시간을 낮출 수 있다. 한편으로, 다수의 작업들이 공유 데이터에 동시에 접근하면, 공유 데이터가 훼손되어 예상치 못한 문제가 발생할 수 있다.
공유 데이터에 대한 동시 접근을 해결하는 방법이 바로 동기화이다.
동기화 (Synchronous)
- 한 순간에 하나의 스레드만 공유 데이터에 접근하도록 한다. 한 스레드가 공유 데이터에 대한 접근을 완전히 마칠 때까지 다른 스레드가 공유 데이터에 접근하지 못하도록 제어한다.
- 동시에 일어난다는 뜻이다. 요청과 그 결과가 동시에 일어난다는 약속이다.
- 바로 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야 한다.
- 요청과 결과가 한 자리에서 동시에 일어난다.
- A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞추겠다.
비동기화 (Asynchronous)
- 동시에 일어나지 않는다를 의미한다. 요청과 결과가 동시에 일어나지 않을 것이라는 약속이다.
- 요청한 그 자리에서 결과가 주어지지 않는다.
- 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.
특징
- 동기 방식은 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 한다는 단점이 있다.
- 비동기 방식은 동기보다 복잡하지만, 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있다는 장점이 있다.
임계 구역과 상호 배제(mutual exclusion)
- 스레드 동기화는 공유 데이터에 접근하고자 경쟁하는 다수의 스레드가 있는 경우, 한 스레드가 공유 데이터를 접근할 때, 배타적으로 사용할 수 있도록 다른 스레드가 접근하지 못하도록 상호 협력(coordination)하는 것이다.
- 공유 데이터에 접근하는 프로그램 코드들을 임계 구역이라고 부른다.
- 임계 구역 설정은 멀티스레드 프로그램의 개발자의 판단에 따라 이루어진다.
- 일반적으로 응용프로그램에서의 임계구역에 대한 상호 배제는 멀티스레드 라이브러리나 시스템 콜을 이용하여 작성한다.
- 다수의 스레드로부터 공유 데이터의 훼손을 막기 위해서는, 임계구역이 오직 한 스레드만 배타적 독점적으로 사용하도록 관리되어야 하는데, 이를 상호 배제(mutual exclusion)라고 부른다.
- 상호 배제의 핵심은 임계 구역에 먼저 진입한 스레드가 임계 구역 코드의 실행을 끝낼 때까지 다른 스레드가 진입하지 못하도록 보장하는데 있다.
출처
반응형
'Study > Operating System' 카테고리의 다른 글
[OS] 뮤텍스(Mutex) VS 세마포(Semaphore) (0) | 2022.04.07 |
---|---|
[OS] 상호배제(Mutual exclusion)이란? (0) | 2022.04.06 |
[OS] CPU 스케줄링 알고리즘 (CPU Scheduling Algorithm) (0) | 2022.04.04 |
[OS] CPU 스케줄링 알아보기 (CPU Scheduling) (0) | 2022.04.03 |
[OS] Context Switching이란? (0) | 2022.04.02 |
Comments