동기와 비동기 & 프로세스 동기화

송해광·2022년 10월 3일
0

OS

목록 보기
5/8

동기

동기 : 데이터의 요청과 결과가 한 자리에서 동시에 일어나는 것
ex) 사용자가 데이터를 서버에게 요청한다면 그 서버가 데이터 요청에 따른 응답을 사용자에게 다시 리턴해주기 전까지 사용자는 다른 활동을 할 수 없으며 기다려야만합니다.
(+) 설계가 간단하고 직관적
(-) 결과가 전달될 때까지 대기
< 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 합니다 >

비동기

비동기 : 동시에 일어나지 않는다
ex) 서버에게 데이터를 요청한 후 요청에 따른 응답을 계속 기다리지 않아도되며 다른 외부 활동을 수행하여도되고 서버에게 다른 요청사항을 보내도 상관없습니다
(+) 요청 결과가 반환되는 동안 다른 작업 수행 가능
(-) 동기식보다 복잡
< 요청한 결과는 동시에 일어나지 않는다 >

참고자료 : https://velog.io/@slobber/%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://private.tistory.com/24

프로세스 동기화

Race Condition(경쟁 상태) : 여러 프로세스들이 동시에 데이터에 접근하는 상황에서, 어떤 순서로 데이터에 접근하느냐에 따라 값이 달라질 수 있는 상황

-> 데이터의 불일치 문제가 발생할 수 있기 때문에 "동기화" 필요

발생 상황
1. kernel + interrupt
2. systemcall 발생 시 contextSwitching
3. Multi processor의 공유 메모리

Critical Section(임계 구역) : 코드 상에서 Race condition이 발생할 수 있는 특정 부분 ( 공유 데이터를 접근하는 코드 )

Critical Section으로 인해 발생하는 문제들을 해결하기 위해서는 다음 조건들을 만족해야 한다.
1. Mutual Exclusion(상호 배제)
-> 이미 프로세스가 CS에서 작업 중이면 다른 모든 프로세스는 CS에 진입하면 안 된다.

  1. Progress(진행)
    -> CS에 작업 중인 프로세스가 없다면, CS에 진입하려는 프로세스가 있으면 진입 가능해야 한다.

  2. Bounded Waiting(한정 대기)
    -> CS에 진입하려는 프로세스가 무한정 기다려서는 안 된다.

Critical Section에서 발생 가능한 문제
1. DeadLock
2. Starvation

profile
끝까지 해보고 하는 후회는 반성이 되어 앞을 보게 하지만 끝까지 하지 않고 하는 후회는 미련이 되어 뒤를 보게 한다.

0개의 댓글