1. 프로세스 간 통신(IPC) 개념 및 종류
1) 프로세스 간 통신(IPC)의 개념
• 프로세스나 스레드는 독립적으로 실행되며, 협업 및 병렬 처리를 위해 데이터를 주고받아야 함.
• 하나의 프로세스 내 스레드는 쉽게 데이터 공유가 가능하지만, 서로 다른 프로세스 간에는 메모리 영역이 다르므로 직접적인 데이터 공유가 어려움.
• 운영체제는 프로세스 간 데이터를 주고받을 수 있도록 다양한 통신 방법을 제공하며, 이를 프로세스 간 통신(IPC; Inter Process Communication) 이라고 함.
• IPC의 활용 예: 멀티 프로그래밍 환경, 네트워크에서 원격 서버와의 데이터 조회
2) 프로세스 간 통신(IPC)의 종류
공유 메모리 및 공유 파일 통신
• 일정한 메모리 영역 또는 파일을 공유하여 데이터 송수신
• 프로세스 간 데이터 교환 방식을 직접 구현해야 하는 원시적인 방식
파이프(pipe) 통신
• 운영체제가 제공하는 통신 방식으로, 일반적으로 부모-자식 프로세스 간 데이터 교환에 사용
3) 통신 방향에 따른 분류
양방향 통신(duplex communication)
• 데이터를 양쪽 방향으로 동시 전송 가능
• 예: 소켓 통신(전화 등)
반양방향 통신(half-duplex communication)
• 데이터 송수신이 가능하지만, 특정 시점에는 한 방향으로만 전송
• 예: 무전기
단방향 통신(simplex communication)
• 한쪽 방향으로만 데이터 전송 가능
• 예: 공유 메모리/파일 통신, 파이프 통신, 모스 부호
4) 동기화와 바쁜 대기 문제
• 공유 메모리 방식에서는 상대 프로세스가 언제 데이터를 보낼지 예측하기 어려움.
• 데이터를 기다리기 위해 지속적으로 메모리를 확인하는 바쁜 대기(busy waiting) 발생.
• 바쁜 대기는 시스템 자원을 낭비하며 비효율적이므로, 이를 해결하기 위해 동기화(synchronization) 를 사용.
5) 통신 구현 방식에 따른 분류
• 대기가 있는 통신(blocking communication)
데이터를 받는 쪽이 도착할 때까지 자동 대기
예: 파이프, 소켓 이용 통신, 전화
• 대기가 없는 통신(non-blocking communication)
바쁜 대기를 사용하여 직접 데이터 수신 여부 확인
예: 공유 메모리/파일 이용 통신, 전보
2. 프로세스 간 통신 방식
1) 파일 입출력을 이용한 통신
• 파일 열기: open(“com.txt”, O_RDWR) → 읽기 및 쓰기 가능하도록 파일 준비
• 파일 쓰기: write(fd, “Test”, 5) → “Test” 문자열 저장
• 파일 읽기: read(fd, buf, 5) → 파일에서 5바이트 데이터 읽기
• 파일 닫기: close(fd)
2) 파이프(pipe)를 이용한 통신
• 운영체제가 제공하는 동기화 방식으로, 파일 입출력과 유사한 방식으로 작동.
• 단방향 통신 방식이며, 양방향 통신을 위해서는 파이프 2개 필요.
• 이름 없는 파이프(anonymous pipe): 부모-자식 프로세스 간 사용.
• 이름 있는 파이프(named pipe, FIFO): 관련 없는 프로세스 간에도 사용 가능.
3) 소켓(socket)을 이용한 통신
• 네트워크를 통한 원격 프로세스 간 데이터 송수신 방식.
• 클라이언트 소켓이 서버 소켓에 데이터를 보내는 방식으로, 소켓 프로그래밍 이라고도 함.
3. 공유 자원과 임계구역
1) 공유 자원 및 경쟁 조건
• 공유 자원(shared resource): 여러 프로세스가 함께 사용하는 변수, 메모리, 파일 등
• 경쟁 조건(race condition): 두 개 이상의 프로세스가 공유 자원을 동시에 접근할 때 실행 결과가 달라질 수 있는 문제
2) 임계구역(critical section)
• 여러 프로세스가 공유 자원을 사용할 때 임계구역에서 동시 실행이 발생하면 안 됨.
• 한 프로세스가 임계구역에 들어가면 다른 프로세스는 대기해야 함.
3) 생산자-소비자 문제
• 생산자가 데이터를 생성하고 소비자가 이를 처리하는 방식에서, 동기화가 제대로 되지 않으면 문제 발생.
• 예: 프린터를 여러 사용자가 동시에 사용할 경우, 프린터는 하나의 공유 자원이 됨.
4) 임계구역 문제 해결 조건
• 상호 배제(mutual exclusion): 한 프로세스가 임계구역에 있으면 다른 프로세스는 접근 불가.
• 한정 대기(bounded waiting): 특정 프로세스가 영원히 기다리는 상황이 없어야 함.
• 진행의 융통성(progress flexibility): 불필요한 방해 없이 프로세스가 정상적으로 진행되어야 함.
이 내용은 휴넷사회복지평생교육원의 운영체제 강의를 듣고 정리한 것입니다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 11. 교착 상태 (0) | 2025.04.09 |
---|---|
[운영체제] 10. 임계구역 문제 (0) | 2025.03.29 |
[운영체제] 8. 스케줄링 알고리즘 (0) | 2025.03.17 |
[운영체제] 7. CPU 스케줄링 (0) | 2025.03.16 |
[운영체제] 6. 프로세스의 연산과 스레드 (1) | 2025.02.20 |