프로세스 간 통신의 종류
이름 | 프로세스 내부 데이터 통신 | 프로세스 간 데이터 동신 | 네트워크 이용한 데이터 통신 |
설명 | 1개 프로세스 내에 존재하는 2개 이상의 스레드끼리의 통신 |
1개 컴퓨터 안에 있는 여러 프로세스끼리의 통신 |
1개 네트워크로 연결된 여러 컴퓨터끼리의 통신 |
통신수단 | 전역변수 파일 |
공용파일 운영체제가 제공하는 파이프 |
소켓 |
* 전역변수는 단방향 통신
전역변수가 양방향 통신이게 되면 전역변수에 데이터를 여러 곳에서 보내게 되고, 실제로 받아야 할 데이터가 유실될 가능성이 있기 때문
공유 자원의 접근
공유자원 : 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등
공동으로 이용되기 때문에 누가 언제 데이터를 읽고 쓰냐에 따라 결과값이 달라질 수 있음
임계구역
공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역
한 임계구역당 한 프로세서만 존재해야함
임계구역 해결 조건
1) 상호 배제 : 한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없는 것
2) 한정 대기 : 어떤 프로세스도 무한 대기하지 않아야 함
3) 진행의 융통성 : 한 프로세스가 다른 프로세스의 진행을 방해해서는 안됨
세마포어
임계구역에 진입하기 전, 스위치를 사용중으로 놓고 임계구역에 들어가는 것
이후 도착하는 프로세스는 앞 프로세스가 작업을 마칠때까지 기다림
프로세스가 작업을 마치면 다음 프로세스에 임계구역을 사용하라는 동기화 신호를 보냄
모니터
공유 자원을 내부적으로 숨기고, 공유 자원에 접근하기 위한 인터페이스만 제공
인터페이스를 통해서만 공유자원에 접근할 수 있게끔 함
-> 자원을 보호하고 프로세스 간 동기화를 시킴