운영체제

프로세스 동기화

medai0 2024. 12. 22. 01:32

[프로세스 간 통신의 종류]

 

프로세스 내부 데이터 통신

: 하나의 프로세스 내에 2개 이상의 스레드가 존재하는 때의 통신

프로세스 내부의 스레드는 전역변수나 파일등을 이용하여 데이터를 교환

 

프로세스 간 데이터 통신

: 같은 컴퓨터에 있는 여러 프로세스끼리 통신하는 경우

공용파일 또는 운영체제가 제공하는 파이프를 사용하여 통신 ex)클립보드

 

네트워크를 이용한 데이터 통신

: 여러 컴퓨터가 네트워크로 연결되어 있을 때 통신

주로 소켓 통신을 이용하여 데이터를 주고받음

 

[통신 방향에 따른 분류]

양방향 통신

: 데이터를 동시에 언제든 양쪽 방향으로 전송 가능

일반적인 통신은 모두 양방향 통신   ex) 소켓 ,일반적 통신

 

반 양방향 통신

: 데이터를 양쪽 방향으로 전송 가능하지만 동시 전송은 불가능

(특정 시점에 한쪽 방향으로만 전송 가능)   ex) 무전기

 

단방향 통신

: 데이터를 한쪽 방향으로만 전송 가능. 프로세스 간 통신에서는 전역변수가 대표적인 예

(한 프로세스에서 변수에 값을 기록하면 다른 프로세스는 읽어들임/같은 변수에 여러 프로세스가 값을 기록하면 값을 변경한 주체가 누구인지 여부를 판단하기 어려움/양방향으로 구현하려면 변수를 2개 설정)

ex) 전역변수,파일, 파이프

 

[통신 구현 방식에 따른 분류]

동기화 통신

: 대기가 있는 통신 (동기화를 지원하는 통신 방식/데이터를 받는 쪽은 데이터가 도착할 때 까지 자동으로 대기 상태에 머물러 있음) ex) 파이프, 소켓

동기화(데이터가 도착했음을 송신측에 알려주는 방식) ex) ACK

 

비동기화 통신

: 대기가 없는 통신( 동기화를 지원하지 않는 통신방식/ACK안씀 ->상대 cpu많이씀/데이터를 받는 쪽은 바쁜대기를 사용)

바쁜대기 (상태 변화를 살피기 위해 반복문을 무한 실행하며 기다림/자원낭비가 커서 안좋은 프로그램의 전형적인 예)

ex) 전역변수, 파일

 

[공유자원과 임계구역]

공유자원

: 여러 프로세스나 스레드가 공동으로 이용하는 변수(스레드),메모리(프로세스), 파일 등(입출력 장치도 공유자원)

공동으로 이용되므로 누가 언제 데이터를 읽거나 쓰는가에 대해 결과가 달라짐

 

경쟁조건

: 2개 이상의 프로세스가 공유 자원을 함께 읽거나 쓰는 상황

경쟁 조건이 발생하면 공유 자원 접근 순서에 따라 실행 결과가 달라질 수 있음

 

임계구역

: 공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램 영역(메모리 뿐 아니라 하드웨어에도 적용되는 개념)

임계구역에서는 프로세스들이 동시에 작업 불가. 한 프로세스가 임계구역에 들어가면 다른 프로세스는 순서를

기다려야 함 (임계구역의 프로세스가 나와야 들어갈 수 있음)

 

[임계구역 해결 방법]

상호 배제 : 한 프로세스가 임계구역에 들어가면 다른 프로세스는 차단

 

한정 대기 : 어떤 프로세스도 무한 대기하지 않도록 정책 설정

ex) 스케줄링 시 아사 현상 방지

(아사현상: 특정 프로세스가 무언가의 이유로 cpu를 할당받지 못하고 무한히 기다리는 현상)

 

진행의 융통성

: 한 프로세스가 메모리 사용 후 다른 프로세스가 없으면 지연 없이 다시 사용

(다른 프로세스의 사용을 무조건 기다릴 필요 없음)

 

세마포어

: 임계구역 제어를 위해 특정 변수를 true/false로 설정, 스위치처럼 사용

프로세스는 임계구역에 진입하기 전에 스위치를 사용중으로 설정

이후 도착하는 프로세스는 앞의 프로세서가 작업을 마칠때까지 대기

프로세스가 작업 종료 후, 다음 프로세스에 임계구역 진입가능 신호 전송

 

semaphote(n)

: 전역 변수 RS에 현재 사용 가능한 자원의 수 n을 할당

 

P()
: 잠금을 수행하는 코드

RS0보다 크면(사용 가능한 자원이 있으면) → 1만큼 감소시키고 임계구역에 진입

RS0 이하면(사용 가능한 자원이 없으면) → 0보다 커질 때 까지 기다림

 

V()

: 잠금 해제와 동기화를 같이 수행하는 코드

RS1 증가시키고 기다리는 프로세스에게 임계구역 진입가능 신호 전송

ex) wake_upzz()

 

모니터: 자원을 보호하고 프로세스 간에 동기화 시키는 기법(공유자원을 내부적으로 숨기고 공유 자원에 접근하기 위한 인터페이스만 제공)

 

작동방식: 임계꾸역으로 지정된 변수/자원에 접근하려는 프로세스는 모니터에 작업 요청

모니터는 요청받은 작업을 모니터 큐에 저장한 후 순서대로 처리(이후 결과만 해당 프로세스에 알려줌)

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

입출력 시스템과 저장장치  (0) 2025.01.18
컴퓨터의 구성  (1) 2024.11.24
운영체제의 역할  (3) 2024.10.27