<운영체제이론 2021-05-11>
프로세스 간 통신의 종류
프로세스 내부 데이터 통신
-하나의 프로세스 내에 2개 이상의 스레드가 존재하는 경우의 통신
-프로세스 내부의 스레드는 전역 변수나 파일을 이용하여 데이터를 주고받음
프로세스 간 데이터 통신
-같은 컴퓨터에 있는 여러 프로세스 끼리 통신하는 경우
-공용 파일 또는 운영체제가 제공하는 파이프를 사용하여 통신
네트워크를 이용한 데이터 통신
-여러 컴퓨터가 네트워크로 연결되어 있을 때 통신
-소켓을 이용하여 데이터를 주고받음
통신 구현 방식에 따른 분류
대기가 있는 통신
-동기화를 지원하는 통신 방식
-데이터를 받는 쪽은 데이터가 도착할 때까지 자동으로 대기 상태에 머물러 있음
대기가 없는 통신
-동기화를 지원하지 않는 통신 방식
-데이터를 받는 쪽은 바쁜 대기를 사용하여 데이터가 도착했는지 여부를 직접 확인
파이프 (컴퓨터 하나)
운영체제가 제공하는 동기화 통신 방식
파일 입출력과 같이 open() 함수로 기술자를 얻고 작업을 한 후 close()함수로 마무리
파이프로 양방향 통신을 하려면 파이프 2개 사용
소켓 (여러개의 컴퓨터)
공유 자원
-여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말함
-공동으로 이용되기 때문에 누가 언제 데이터를 읽거나 쓰느냐에 따라 그 결과가 달라질 수 있음
경쟁 조건
2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황
경쟁 조건이 발생하면 공유 자원 접근 순서에 따라 실행 결과가 달라질 수 있음
임계 구역
- 공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역
- 임계 구역 에서는 프로세스들이 동시에 작업하면 안 됨
- 어떤 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역 밖에서 기다려야 하며 임계구역의 프로세스가 나와야 들어갈 수 있음
해결 조건
- 상호 배제
: 한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없는 것
- 한정 대기
: 어떤 프로세스도 무한 대기하지 않아야 함
- 진행의 융통성
: 한 프로세스가 다른 프로세스의 진행을 방해해서는 안 된다는 것
피터슨 알고리즘
- 임계구역 해결의 세 가지 조건을 모두 만족
- 2개의 프로세스만 사용 가능하다는 한계가 있음
데커 알고리즘
세마포어
-임계구역에 진입하기 전에 스위치를 사용 중으로 놓고 임계구역으로 들어감
-이후에 도착하는 프로세스는 앞에 프로세스가 작업을 마칠 때까지 기다림
-프로세스가 작업을 마치면 다음 프로세스에 임계구역을 사용하라는 동기화 신호를 보냄
세마포어 내부 코드
semaphore(n) : 전역 변수 RS를 n으로 초기화, RS에는 현재 사용 가능한 자원의 수가 저장
P() : 잠금을 수행하는 코드로 RS가 0보다 크면 (사용 가능한 자원이 있으면 ) 1만큼 감소시키고 임계구역에 진입
만약 RS가 0보다 작으면 (사용 가능한 자원이 없으면) 0보다 커질 때까지 기다림
V() : 잠금 해제와 동기화를 같이 수행하는 코드로, RS 값을 1증가시키고 세마포어에서 기다리는 프로세스에게 임계구역에 진입해도 좋다는 wake_up 신호를 보냄
모니터
-공유 자원을 내부적으로 숨기고 공유 자원에 접근하기 위한 인터페이스만 제공함
- 자원을 보호하고 프로세스 간에 동기화를 시킴
모니터의 작동 원리
- 임계구역으로 지정된 변수나 자원에 접근하고자 하는 프로세스는 직접 P() 나 V()를 사용하지 않고 모니터에 작업 요청
- 모니터는 요청받은 작업을 모니터 큐에 저장한 후 순서대로 처리하고 그 결과만 해당 프로세스에 알려줌