(임계영역)
Syncroniztion(동기화): events 혹은 프로세스의 수행에 관한 순서지정을 위한 제약사항들의 집합니다. 동기화 기법들이 동기화를 위해서 사용되는데, 결국 이는 주어진 순차를 위한 제약사항들을 만족시키기 위해 프로세스 수행을 지연시키는 것이라 할 수 있다.
동기화를 위한 조건 두가지가 있다.
1. 순차제어(sequence control)
event혹은 프로세스의 수행이 올바른 순서로 일어나도록 제약을 가한다.
-조건동기화, 활동동기화
2. 상호배제(mutual exclusion)
공유자원에 대한 배타적인 접근. 즉, 어떤 프로세스가 자원을 액세스하고 있으면 다른 프로세스는 그 자원을 액세스할 수 없다. 이것으로 race condition을 해결할 수 있다.
Critical Section은 프로세스가 실행하고 있는 프로그램의 일부로, 다른 프로세스들과 공유하고 있는 데이터(변수, 테이블, 파일쓰기 등)를 수정 혹은 변경하는 프로그램의 부분을 critical section이라 한다. 그러므로, 모든 프로그램은 critical section과 non-critical section으로 나뉘어진다고 할 수 있다.
위와 같은 P1과 P2가 동시에 공유자원에 접근하는 경우가 생기면 안된다.
이러한 임계영역 문제를 해결하기 위해서는 세가지 조건이 있다.
실제적인 프로그램 구조는 이러하다.
program
EachProcess(i:integer)
{
while(True)
{
entry_protocol(R);
[critical_section];
exit_protocol(R);
[non-critical_section];
}
}
main
{
parallel
EachProcess(1);
EachProcess(2);
.
.
EachProcess(n);
end;
}