카테고리 없음

<운영체제이론 2021-05-11>

대현 2021. 5. 11. 14:03

프로세스 간 통신의 종류 

 

프로세스 내부 데이터 통신

 -하나의 프로세스 내에 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()를 사용하지 않고 모니터에 작업 요청

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