1. 병행성, 병렬성 차이
2. 경쟁 조건
3. 비동기 병행 프로세스
4. 생산자/소비자 프로세스
1. 병행성, 병렬성 차이
병렬처리: 컴퓨터 시스템 내에 다수의 cpu를 두고 동시에 다수의 프로세스 또는 작업을 실행
병행성 : cpu가 하나만 있는 상황에서도 가능한 개념으로 다수의 프로세스들이 cpu를 번갈아가면서 사용
2. 경쟁조건
여러개의 프로세들이 동일한 자원에 동시에 접근하려는 상황
-> 경쟁 조건의 정의대로 두 프로세스가 전역변수를 접근하는 순서에 따라 결과가 달라짐.
-> 경쟁조건을 막기 위해 대상이 되는 자원을 하나의 프로세스만이 접근할 수 있도록 보장 해줘야함(상호 배제)
-> 이걸 어떻게 해결해 줄 수 있냐가 프로세스 동기화
임계영역: 프로세스간 공유자원을 접근하는데 문제가 발생하지 않도록 한번에 하나의 프로세스만 이용하게끔 보장해줘야 하는 영역
=> 문제 해결 위해
① 상호 배제 ② 진행 ③ 한정대기 조건을 충족해야한다.
3. 비동기 병행 프로세스(Asynchronous Concurent Process)
- 각 프로세스들이 자신을 제외한 나머지 프로세스들의 진행 상태를 알 수 있음
- 비동기적 병행 수행되고 있는 프로세스들은 동시에 공유데이터에 접근 시 여러 문제점 발생 가능
4. 생산자 / 소비자 프로세스
생산자 프로세스 P : 새로운 정보 생산
소비자 프로세스 C : 생성된 정보 소비

서빙 : 만두가 있으면 가져가겠지만 없으면 대기
주방장 : 쟁반이 꽉 차있으면 서빙이 다 소비할 때까지 기다려야함
이러한 관계가 생성자/소비자 프로세스 관계
<문제점>
1. 저장소 P/C문제
: P/C프로세스들이 병행되어 실행 되려면 생산자가 정보를 채워놓고 소비자가 비울 수 있는 버퍼들의 장소를 제공해야함 (쟁반의 공간이 한정되어있기 때문에)
2. 무한버퍼의 P/C문제
: 버퍼 수의 제한을 두지 않음 (항상 빈 버퍼가 존재)
버퍼가 적어도 문제 무한정있어도 문제
3.유한버퍼의 P/C문제
: 버퍼의 수가 고정되어있다고 가정 쟁반(메모리)의 공간이 유한이다.
4. 공유변수의 P/C문제
- 유한버퍼 문제의 해결방법에서 사용
- 공유되는 버퍼의 저잦ㅇ소를 두개의 논리식 포인터 in과 out을 사용한 순환배열로 구현
- 변수 in : 다음으로 비어있는 버퍼를 가리킴
- 변수 out: 첫번째의 꽉 찬 버퍼를 가리킴
- in = out일 때 0으로 초기화됨
- (in+1)mod n = out이면 저장소는 꽉 찬 상태
그니까 만두를 놓는 쟁반에서 가져가는 것과 놓는 영역을 가르켜줘야 현재 만두가 몇개 있는지를 알 수 있다 (in out으로 가리킴)
처음엔 그럼 비어 있어야 하니까 0으로 초기화
상호배제 문제 해결 위한 3가지 만족조건
1. S/W적 Dekker알고리즘
2. Dekker알고리즘 보완한 Peterson알고리즘
3. H/W적으로 해결 위한 Test-and set 명령
<병행 프로세스 상의 문제점>
1. 상호 배제 문제
: 두 프로세스가 하나의 공유자원을 공동 사용, 동시 사용 불가
2. 동기화 문제
: 두 프로세스가 하나의 기능을 공동 협력하여 수행 시 상호간 동기화 필요
(하나가 끊어줘야 다른 하나 시작하니까 안겹치게)
3. 결정성 문제
: 두개 이상 프로세스가 공동목표 동시수행 할 떄 프로세스 실행 순서와 무관하게 항상 같은 결과가 나와야 함.
4. 의사소통 문제
: 상호배제와 동기화 문제 해결 위해 프로세스 상호관 발생하는 자료 교환 문제 (메세지 전달 방법으로 해결)
5. 외부 스케줄 문제
: 여러 문제들을 직접 해결할 수 있도록 하는 문제
6. 교착 상태 문제
: 프로세스의 상호배제,동기화 문제 해결 못해 아무 일도 처리 불가
7. 동시 처리문제
: 병행 문제, 프로그래밍 언어를 통해서 직접 두개 이상의 프로그램을 동시에 처리
8. 검증
: 올바른 실행을 검증하는 문제
1. 병행성, 병렬성 차이
2. 경쟁 조건
3. 비동기 병행 프로세스
4. 생산자/소비자 프로세스
1. 병행성, 병렬성 차이
병렬처리: 컴퓨터 시스템 내에 다수의 cpu를 두고 동시에 다수의 프로세스 또는 작업을 실행
병행성 : cpu가 하나만 있는 상황에서도 가능한 개념으로 다수의 프로세스들이 cpu를 번갈아가면서 사용
2. 경쟁조건
여러개의 프로세들이 동일한 자원에 동시에 접근하려는 상황
-> 경쟁 조건의 정의대로 두 프로세스가 전역변수를 접근하는 순서에 따라 결과가 달라짐.
-> 경쟁조건을 막기 위해 대상이 되는 자원을 하나의 프로세스만이 접근할 수 있도록 보장 해줘야함(상호 배제)
-> 이걸 어떻게 해결해 줄 수 있냐가 프로세스 동기화
임계영역: 프로세스간 공유자원을 접근하는데 문제가 발생하지 않도록 한번에 하나의 프로세스만 이용하게끔 보장해줘야 하는 영역
=> 문제 해결 위해
① 상호 배제 ② 진행 ③ 한정대기 조건을 충족해야한다.
3. 비동기 병행 프로세스(Asynchronous Concurent Process)
- 각 프로세스들이 자신을 제외한 나머지 프로세스들의 진행 상태를 알 수 있음
- 비동기적 병행 수행되고 있는 프로세스들은 동시에 공유데이터에 접근 시 여러 문제점 발생 가능
4. 생산자 / 소비자 프로세스
생산자 프로세스 P : 새로운 정보 생산
소비자 프로세스 C : 생성된 정보 소비

서빙 : 만두가 있으면 가져가겠지만 없으면 대기
주방장 : 쟁반이 꽉 차있으면 서빙이 다 소비할 때까지 기다려야함
이러한 관계가 생성자/소비자 프로세스 관계
<문제점>
1. 저장소 P/C문제
: P/C프로세스들이 병행되어 실행 되려면 생산자가 정보를 채워놓고 소비자가 비울 수 있는 버퍼들의 장소를 제공해야함 (쟁반의 공간이 한정되어있기 때문에)
2. 무한버퍼의 P/C문제
: 버퍼 수의 제한을 두지 않음 (항상 빈 버퍼가 존재)
버퍼가 적어도 문제 무한정있어도 문제
3.유한버퍼의 P/C문제
: 버퍼의 수가 고정되어있다고 가정 쟁반(메모리)의 공간이 유한이다.
4. 공유변수의 P/C문제
- 유한버퍼 문제의 해결방법에서 사용
- 공유되는 버퍼의 저잦ㅇ소를 두개의 논리식 포인터 in과 out을 사용한 순환배열로 구현
- 변수 in : 다음으로 비어있는 버퍼를 가리킴
- 변수 out: 첫번째의 꽉 찬 버퍼를 가리킴
- in = out일 때 0으로 초기화됨
- (in+1)mod n = out이면 저장소는 꽉 찬 상태
그니까 만두를 놓는 쟁반에서 가져가는 것과 놓는 영역을 가르켜줘야 현재 만두가 몇개 있는지를 알 수 있다 (in out으로 가리킴)
처음엔 그럼 비어 있어야 하니까 0으로 초기화
상호배제 문제 해결 위한 3가지 만족조건
1. S/W적 Dekker알고리즘
2. Dekker알고리즘 보완한 Peterson알고리즘
3. H/W적으로 해결 위한 Test-and set 명령
<병행 프로세스 상의 문제점>
1. 상호 배제 문제
: 두 프로세스가 하나의 공유자원을 공동 사용, 동시 사용 불가
2. 동기화 문제
: 두 프로세스가 하나의 기능을 공동 협력하여 수행 시 상호간 동기화 필요
(하나가 끊어줘야 다른 하나 시작하니까 안겹치게)
3. 결정성 문제
: 두개 이상 프로세스가 공동목표 동시수행 할 떄 프로세스 실행 순서와 무관하게 항상 같은 결과가 나와야 함.
4. 의사소통 문제
: 상호배제와 동기화 문제 해결 위해 프로세스 상호관 발생하는 자료 교환 문제 (메세지 전달 방법으로 해결)
5. 외부 스케줄 문제
: 여러 문제들을 직접 해결할 수 있도록 하는 문제
6. 교착 상태 문제
: 프로세스의 상호배제,동기화 문제 해결 못해 아무 일도 처리 불가
7. 동시 처리문제
: 병행 문제, 프로그래밍 언어를 통해서 직접 두개 이상의 프로그램을 동시에 처리
8. 검증
: 올바른 실행을 검증하는 문제