-
운영체제 내에서 실행되는 병행 프로세스들은 독립적이거나 협력적인 프로세스들일 수 있다.
프로세스가 다른 프로세스들에게 영향을 주거나 받지 않는다면 독립적인 프로세스라고 말하고
프로세스가 다른 프로세스들에게 영향을 주거나 받는다면 협력적인 프로세스라고 말한다.
프로세스 협력을 허용하는 환경을 제공하는 이유
정보공유 , 계산 가속화, 모듈성, 편의성
협력적 프로세스들은 데이터와 정보를 교환할 수 있는 프로세스간 통신 기법을 필요로 한다.
프로세스간 통신 모델에는 공유 메모리 방식과 메세지 전달 방식이 있다.
공유 메모리 시스템
공유 메모리 방식을 사용할 때 운영체제는 프로세스들이 동시에 동일한 위치에 쓰지 않도록 책임져야한다.
생산자 - 소비자 문제
생산자 프로세스는 정보를 생산하고 소비자 프로세스는 정보를 소비한다.
생산자 - 소비자 문제를 해결하는 방법 중 하나는 공유메모리를 사용하는 것이다.
생산자는 정보를 채워 넣고 소비자는 정보를 소모하는 버퍼를 공유 메모리 영역에 둠으로써
생산자는 자원을 생산하고 소비자는 자원을 소모할 수 있다.
버퍼의 종류 : 무한 버퍼, 유한 버퍼
메시지 전달 시스템
메시지 전달 방식은 동일한 주소 공간을 공유하지 않고도 프로세스들이 통신을 하고 동작을 동기화 할 수 있도록 허용하는 기법을 제공한다.
메시지 전달 시스템의 연산에는 send와 receive가 있다.
메시지 전달 방식에서는 두 프로세스가 통신을 원하면 통신 연결이 설정되어야 한다.
프로세스들은 send(), receive() 연산을 사용하여 메세지를 교환한다.
통신 연결 구현 방식
물리적 방식 : 공유 메모리, 하드웨어 버스, 네트워크
논리적 방식 : 직접 또는 간접 통신, 동기식 또는 비동기식 통신, 자동 또는 명시적 버퍼링
직접 또는 간접 통신
직접 통신 : 통신을 원하는 각 프로세스는 통신의 수신자 또는 송신자의 이름을 명시한다.
특성 : 통신을 원하는 각 프로세스 쌍들 사이에 연결이 자동적으로 구축된다.
연결은 정확히 두 프로세스들 사이에만 연관된다.
통신하는 프로세스들 각 쌍 사이에는 정확하게 하나의 연결이 존재한다.
문제점 : 프로세스의 이름을 바꾸면 다른 모든 프로세스의 정의를 검사할 필요가 있다.
간접 통신: 메세지들은 메일 박스 또는 포트로부터 송수신 된다. 메일 박스는 고유의 id를 가진다.
특성 : 두 프로세스들이 공유 메일 박스를 가질 때에만 이들 프로세스가 통신한다.
연결은 두 개 이상의 프로세스들과 연관된다.
통신하고 있는 각 프로세스들 사이에는 다수의 서로 다른 연결이 존재한다.
문제점 : 하나의 메일 박스를 여러 개의 프로세스가 공유하면 메시지의 수신자가 불분명하다.
동기화
메시지 전달은 봉쇄형 또는 비봉쇄형 방식으로 전달된다.
봉쇄형 보내기 : 송신하는 프로세스는 메세지가 수신 프로세스 또는 메일 박스에 의해 수신될 때까지 봉쇄된다.
비봉쇄형 보내기 : 송신하는 프로세스가 메세지를 보내고 작업을 재 시작 한다.
봉쇄형 받기 : 메시지가 이용 가능할 때까지 수신 프로세스가 봉쇄된다.
비봉쇄형 받기 : 송신하는 프로세스가 유효한 메시지 또는 널을 받는다.
버퍼링
통신이 직접적이든 간접적이든, 통신하는 프로세스에 의해 교환되는 메시지는 임시 큐에 저장된다.
큐 구현 방식
무용량 : 큐의 최대 길이가 0 송신자는 수신자가 메세지를 수신할 때까지 기다린다.
유한 용량 : 큐는 유한한 길이를 가진다. 링크가 가득 차면 송신자는 큐 안의 공간이 이용 가능 할 때까지 봉쇄된다.
무한 용량 : 큐는 잠재적으로 무한한 길이를 가진다. 송신자는 결코 봉쇄되지 않는다.
'운영체제 > 프로세스' 카테고리의 다른 글
클라이언트 서버 환경에서 통신 (0) 2018.02.03 프로세스에 대한 연산 (0) 2018.02.03 스케줄러 (0) 2018.02.03 프로세스 스케줄링 (0) 2018.02.03 프로세스 개념 (0) 2018.02.03 댓글