[운영체제] 10. 프로세스 간 통신
프로세스 간 통신의 종류(전역변수, 파일, 파이프, 소켓)
프로세스 간 통신의 개념
프로세스가 다른 프로세스와 데이터를 주고 받는 것을 의미하며 프로세스 내부 데이터 통신, 프로세스 간 데이터 통신, 네트워크를 이용한 데이터 통신이 있다.
프로세스 간 통신의 종류
- 전역 변수를 이용한 통신: 공동으로 관리하는 메모리를 사용하여 데이터를 주고받는 것이다.
- 파일을 이용한 통신: 저장장치에 파일을 읽고 쓰는 방법으로 데이털르 주고 받는 것이다.
- 파이프를 이용한 통신: 운영체제가 제공하는 동기화 통신 방법으로, 파이프에 쓰기 연산을 하면 데이터가 전송되고 읽기 연산을 하면 데이터를 받는다.
- 소켓을 이용한 통신: 여러 컴퓨터에 있는 프로세스와 프로세스를 소켓으로 연결하여 데이터를 주고 받는 것이다. 소켓에 쓰기 연산을 하면 데이터가 전송되고 읽기 연산을 하면 데이터를 받는다.
공유자원과 임계구역
공유 자원
여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말한다. 공유 자원은 공동으로 이용되기 때문에 누가 언제 데이터를 읽거나 쓰느냐에 따라 그 결과가 달라질 수 있다.
임계구역
공유 자원 접근 순서에 따라 실행 결과가 달리지는 프로그램의 영역을 말한다.
임계구역과 관련한 문제와 해결 방법
임계구역 해결 조건
상호 배제: 한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없다.
한정 대기: 어떤 프로세스도 무한 대기하지 않아야 한다.
진행의 융통성: 한 프로세스가 다른 프로세스의 진행을 방해해서는 안된다.
임계구역 해결 방법
피터슨 알고리즘, 데커 알고리즘: 임계구역 해결 조건을 모두 만족하는 소프트웨어적인 해결 방법이다.
세마포어: 임계구역에 진입하기 전에 스위치를 사용 중으로 놓고 임계구역으로 들어가는 방법으로, 피터슨 알고리즘이나 데커 알고리즘보다 간단하고 사용하기가 쉽다.
모니터: 세마포어 알고리즘을 자동으로 처리하도록 설계한 코드이다. 보호할 자원을 임계구역으로 숨기고 임계구역ㄷ에서 작업할 수 있는 인터페이스만 제공하여 자원을 보호한다.a
교착 상태와 해결 방법
교착상태
2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만을 기다리며 작업을 진행하지 못하는 상태
교착상태의 특징, 필요조건 4가지
1. 상호배제: 최소한 하나의 자원이 비공유 모드로 점유되어야 한다. 다른 프로세스가 그 자원을 요청하면, 요청프로세스는 자원이 방출될 때까지 반드시 지연되어야 한다.
2. 점유하며 대기: 프로세스는 최소한 하나의 자원을 점유한 채, 현재 다른 프로세스에 의해 점유된 자원을 추가로 얻기 위해 반드시 대기해야 한다.
3. 비선점: 자원들을 선점할 수 없어야 한다. 즉, 자원이 강제적으로 방출될 수 없고, 점유하고 있는 프로세스가 태스크를 종료한 후 그 프로세스에 의해 자발적으로만 방출될 수 있다.
4. 순환대기: 대기하고 있는 프로세스의 집합에서 꼬리에 꼬리를 물어 자원을 대기하고 있는 상태이다.
교착상태 처리방법 3가지
1. 시스템이 결코 교착상태가 되지 않도록 보장하기 위해 교착상태를 예방하거나 회피하는 프로토콜을 사용한다.
2. 시스템이 교착상태가 되도록 허용한 다음에 회복시키는 방법. (운영체제 과목에서 배워야할 내용)
3. 문제를 무시하고, 교착상태가 시스템에서 결코 발생하지 않는 척 한다. (현실에서 가장 많이 쓰임)