본문 바로가기
CS/OS

[OS] 공유 자원 접근 문제

by 원만사 2021. 12. 22.
반응형
공유 데이터의 동시 접근은 데이터의 불일치를 발생시킬 수 있다. 

 

Race Condition

 Race Condition이란 두 개 이상의 concurrent한 프로세스(혹은 스레드)들이 하나의 공유 자원에 접근할 때 입력 또는 조작의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태를 말한다.

 

Critical Section

 임계 영역이란 공유 데이터를 접근하는 코드 영역을 의미한다. 이러한 임계 영역에 여러 프로세스가 동시에 접근한다면 위와 같은 race condition이 발생할 수 있다. 이를 방지하기 위해 둘 이상의 프로세스가 동시에 critical section에 진입하지 못하게 막아야 하는데 이를 Mutual exclusion(상호배제)라고 한다.

 

 

Race Condition 해결을 위한 충족 조건 3가지

Mutual Exclusion (상호배제)

 Critical Section(CS)에 프로세스가 있으면, 다른 프로세스의 진입을 금지한다.

 

Progress (진행)

 임계영역에 들어간 프로세스가 있지 않은 상태에서 임계 영역에 들어가려는 프로세스가 있으면 들어가게 해주어야 한다. CS 안에 있는 프로세스 외에는, 다른 프로세스가 CS에 진입하는 것을 방해하면 안된다.  

 

Bounded Waiting (한정 대기)

 임계 영역에 진입하기 위해 기다리는 프로세스에게 기아 현상이 발생하지 않도록 하기 위한 조건. 프로세스의 임계 영역 진입은 유한시간 내에 허용되어야 한다.

 

 

 다음 포스팅에서 상호배제에 사용되는 스핀락, 뮤텍스, 세마포어에 대해서 알아보자.

 

References

- https://zangzangs.tistory.com/115?category=458016

- https://stage-diary.tistory.com/272?category=1007144

- https://www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN

 

반응형

'CS > OS' 카테고리의 다른 글

[OS] 06. CPU 스케줄링  (0) 2021.12.26
[OS] 스핀락, 뮤텍스, 세마포어  (0) 2021.12.22
[OS] 05. 프로세스 관리  (0) 2021.12.21
[OS] 04. 프로그램의 구조와 실행  (0) 2021.12.20
[OS] 03. 컴퓨터 시스템의 동작 원리  (0) 2021.12.14

댓글