원자성(Atomicity)의 의미
- 사전적 의미: 어떤 것이 더 이상 쪼개질 수 없는 성질
- 컴퓨터 과학에서 사용되는 의미: 어떠한 작업이 실행될 때 언제나 완전하게 진행되어 종료되거나, 그럴 수 없는 경우 실행을 하지 않는 경우를 의미
원자성이란?
원자성을 설명할때 같이 나오는 단어가 동시성이다.
동시성이란? A와 B라는 일이 동시에 발생하는 것으로, 이때 A와 B가 일을 처리하기 위해 어떤 요소에 동시에 접근하는 과정에서 A가 해당 요소를 먼저 선점한 경우, A가 해당 요소에서 일을 다 처리할 때 까지 방해받지 않고 일을 처리하는 것을 원자성이 보장된다고 한다.
원자성을 이해하기 위해 사람이 화장실을 가서 볼일 보는 행위의 순서를 나열한다.
- 우리 몸에서 화장실을 가고 싶어 하는 생체 신호를 받는다. (시작)
- 화장실로 이동한다.
- 노크를 한다. (내부에 사람이 있는지 없는지 확인 절차) → 화장실이라는 자원의 선점 여부 조사
- 진입을 한다. (내부에서 혼자서 일을 시작하는 단계) → Lock (선점 시작)
- 볼일을 보고 물을 내린다.
- 손을 씻는다. (혼자서 일을 끝내고 나가는 단계) → Unlock (선점 끝)
- 화장실에서 나온다. (끝)
- 3번 → 4번 = 화장실에 노크하는 행위는 화장실이란 자원의 선점 여부를 조사하는 것이다.
- 4번 = 화장실 진입 후 Lock을 걸어 화장실을 선점
- 5번 = 볼일 보기 = 해당 자원에서 내가 진행해야 할 일을 처리
- 6번 = 손 씻기 = 할 일을 다 처리하고 나가기 전 단계 (Unlock)
4번 ~ 6번 과정은 원자성이 보장된다고 할 수 있다.
만약 3번 과정에서 노크를 했는데 내부에 사람이 있다면 기다려야 한다. → Wait
만약 집에서 혼자 자취하는 상황이라면 3번의 노크하는 과정은 없을 것이다. 즉, 원자성은 동시성이 발생되지 않았을 때 항상 보장받으므로 이런 경우는 신경쓰지 않아도 된다.
동기화
- 여러 프로세스/스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것
- 신호등과 잠금장치의 필요성과 유사하다.
- 교통정리 (차가 가야할지 안 가야할지 신호등으로 판별)
- 잠금장치 (화장실에 들어갈지 안 들어갈지 잠금여부로 판별)
- 운영체제(OS)에서 보통 제공한다.
교착상태(DeadLock)
- 휴지가 없어서 화장실을 못 나가는 자, 화장실에서 나와야 들어가는 휴지 든 자
- 외부자원에 무언가를 요구하는 과정에서 양단간의 의존성이 존재하는 프로세스의 충돌로 인해 발생
- A가 화장실에 들어가서 Lock을 걸고 볼일을 다 본후 나가려는데 휴지가 없어서 나가지 못한다. → Wait for 휴지
- B가 화장실에 들어가기 위해 휴지를 들고 기다리고 있다. → Wait for Unlock
이러지도 저러지도 못하는 상태를 바로 교착상태(DeadLock)라고 한다.
이런 경우를 논리적인 하자, 오류로 인해 발생하는 것으로 전형적인 S/W 오류로 볼 수 있으며, 프로그램 2개가 동시성 이슈가 터지면서 시스템이 무너지는 현상이 발생할 수 있다.
여러 연산 주체가 자원에 동시에 접근해서 문제가 발생하는 것을 방지하기 위해 Lock과 동기화를 한다.
참고
'IT 지식 > CS 기초' 카테고리의 다른 글
컴퓨터의 구성 요소 (H/W, User mode, Kernel mode) (0) | 2024.08.08 |
---|---|
컴퓨터의 구성 요소 및 프로그램, 프로세스, 스레드 (0) | 2024.08.07 |
동시성(Concurrency)과 병렬성(Parallelism) (0) | 2024.08.05 |
HDD, SSD와 파일 시스템 (1) | 2024.08.04 |
컴퓨터가 기억 공간을 관리하는 방법 (0) | 2024.08.03 |