본문 바로가기
CONCEPT/OS

[OS] 동기화 (프로세스, 스레드)

by 1005 2025. 3. 16.

프로세스라고만 말했지만 정확히는 프로세스와 스레드임. "자원의 일관성을 보장한다"는 말은 "동기화를 고려한다"는 말과 같음.

 

* 동기화: 공동의 목적을 위해 동시에 수행되는 프로세스 즉, 프로세스들의 수행 시기를 맞추는 것을 의미함.

e.g. 워드 프로세서 프로그램: 맞춤법 검사 프로세스, 입력 내용을 화면에 출력하는 프로세스 등등


실행의 문맥을 갖는 모든 대상은 동기화 대상이기에 스레드도 동기화 대상이다.

 

 

 

 

* 실행 순서 제어: 프로세스를 올바른 순서대로 실행하기

 

고전적인 문제) reader writer problem

: reader와 writer프로세스는 무작정 아무렇게나 실행되어선 안된다. 실행의 순서가 있기 때문.

  reader 프로세스는 'Book.txt 안에 값이 존재한다'는 특정 조건이 만족되어야만 실행 가능하다.

  따라서 writer가 먼저 선행되어야함.

- writer: Book.txt 파일에 값을 저장하는 프로세스   - reader: Book.txt 파일에 저장된 값을 읽어들이는 프로세스

 

 

 

 

* 상호 배제: 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기

 

고전적임 문제1) Bank accont problem

한번에 하나의 프로세스만 접근해야 하는 자원(=공유가 불가능한 자원)

 

동기화가 제대로 이루어지지 않은 경우

 

동기화가 정상적으로 이루어진 경우

 

 

고전적임 문제2) Producer & Consumer problem

Pseudocode 예시 (어떤 프로그래밍 언어든 동기화를 위한 도구를 제공함.)
공유자원 shared resource / 임계구역 critical section

 

 

개발자가 작성한 고급언어(1줄)도 컴퓨터상에서 돌아갈 때는 저급언어(3줄)로 변형되어 실행됨.
저급언어가 실행되는 과정에서 문맥교환이 발생하면 자원의 일관성이 깨져 레이스 컨디션이 발생할 수 있음.

 

댓글