병행프로세스의 개요
- 병행성 : 여러개의 프로세스 또는 쓰레드가 동시 수행되는 시스템의 특성
- 병행 프로세스 : 동시 수행되는 여러개의 프로세스 또는 쓰레드
병행 프로세스의 실행 형태
-
1개의 CPU : 인터리빙 형식

-
여거래의 CPU : 병렬처리 형식

-
멀티프로세서 시스템에서의 메모리 구조에 따라

프로세스 간의 관계
- 독립 프로세스
- 수행중인 다른 츠로세스에 영행을 주지도 받지도 않음
- 데이터 및 상태를 다른 프로세스와 공유하지 않음
- 프로세스의 실행
- 결정적 : 실행결과는 입력에 의해서만 결정됨
- 재생가능 : 같은 입력에 대해 항상 동일한 실행결과
- 혐력 프로세스
- 수행중인 다른 프로세스와 영향을 주고 받음
- 데이터 및 상태를 다른 프로세스와 공유
- 프로세스와 실행
- 비결정성 : 실행결과는 실행 순서에 좌우됨
- 재생불가능 : 같은 입력에 대해 항상 동일한 실행결과를 보장하지 못함
병행성 문제
상호배제
- 2개 이상의 프로세스가 동시에 임계역역을 수행하지 못하도혹 하는 것
- 임계영역 : 2개 이상의 프로세스가 동시에 사용하면 안되는 공유지원을 액세스하는 프로그램 코드 영역

-> A가 끝나고 나서 B처리하도록 상호배제 해야함
동기화
- 2개의 프로세스에 대한 처리 순서를 결정하는 것 -> 프로세스 동기화
- 상호배제 : 임계영역에 대한 동기화 문제

-> 다른 프로세스라도 순서 정해줘야함
통신
- 프로세스들이 데이터를 동유하기 위하 반드시 필요 -> 프로세스간 통신(IPC)
- 통신방법
- 하나의 변수사용
세마포어
상호배제 해결
- 상호배제를 위한 일반적인 요구사항
- 한 프로세스가 임계영역 수행중
- 다른 프로스세는 임계영역에 진입해서는 안됨
- 임계 영역 수행중이던 프로세스가 임계영역 벗어남
- 누군가 하나는 임계영역을 새로이 수행할 수 있어야 함
- 임계영역 진입 못하고 대기하는 프로셋,
- 적절한 시간 내에 임게영역 수행을 시작할 수 있어야 함
-
상호배제를 위한 임계영역 주변의 코드 영역

-
세마포어 이용


- 동기화 해결

-> A, B 중 무엇미 먼저 들어와도 A가 먼저 처리되고 B 처리됨