티스토리 뷰
728x90
병행성(concurrency):
여러 개의 프로세스 혹은 스래드들이 동시에 실행되는 것
결정성(determinacy):
동일한 입력에 대한 프로세스 혹은 스래드의 실행 결과는 항상 일정하다. 하지만 상호 영향을 주고 받으면서 자원을 공유하고 병행적으로 실행될 경우 실행 결과가 달라질 수 있다. (=결정성이 보장되지 않는다.) 즉, 결정성 보장을 위한 운영체제의 기능이 요구된다.
생산자 프로세스: 데이터를 생산하여 공유버퍼에 저장한다.
소비자 프로세스: 공유 버퍼에 저장된 데이터를 가져와 소비한다.
- 두 프로세스는 상호 영향을 주고 받는다.
- 두 프로세스에 대한 결정성 보장이 요구됨. (동기화 필요)
경쟁 조건(race condition): 다수의 프로세스들이 공유 메모리를 병행적으로 접근할 때, 그 공유 메모리에 대한 접근이 발생하는 특별한 순서에 따라 프로세스들의 실행 결과가 달라질 수 있는 것.
ex) 프로세스는 비동기적으로 실행되므로, 생산자 프로세스에서 명령을 처리하는 도중에 소비자 프로세스로 문맥교환이 일어나는 원하는 결과값이 나오지 않는 경우
ex) 10개의 스래드가 공유 메모리를 사용하면서 병행적으로 실행되는 경우
-> 결정성이 보장되지 않음/경쟁 조건 발생/동기화 기법 요구
728x90
'cs > operating system' 카테고리의 다른 글
[운영체제/OS] 스레드 동기화 기법 뮤텍스(mutex)/세마포어(semaphore) (0) | 2021.04.16 |
---|---|
[운영체제/OS] 임계 영역(critical section) (0) | 2021.04.02 |
[운영체제/OS] 리눅스 프로세스 (0) | 2021.03.28 |
[운영체제/OS] 프로세스 스케줄링 (선점/비선점) (0) | 2021.03.28 |
[운영체제/OS] 스래드 정의, 단일/다중 스래딩, 프로세스와 비교, 스래드 생성 (0) | 2021.03.26 |