TechY

Process Synchronization 1 본문

[개발 정리]/[OS]

Process Synchronization 1

hskimim 2024. 12. 5. 23:32

kocw 강의 : 이화여자대학교 반효경 교수님의 운영 체제 강의,12강 process syncrhonization

 

프로세스 안에서 데이터를 접근하는 경로

Storage-box (ex. memory) -연산할 데이터-> Execution box (ex. cpu)

Execution box (ex. cpu) -연산 결과-> Storage box (ex. memory)

 

S-box 를 공유하는 E-box 가 여러 개 있는 경우 Race condition 의 가능성이 있음

 

이런 경로로 데이터를 읽고 수정하는 과정으로 인해, 누가 먼저 읽었냐에 따라 결과가 달라질 수 있기에,

이를 해결하기 위해 나온 토픽이 process syncrhonization 이다.

 

Process Synchronization

공유 데이터의 동시 접근은 데이터의 불일치 문제를 발생시킬 수 있다 (race condition)

일관성 유지를 위해서는 협력 프로세스 간의 실행 순서를 정해주는 메커니즘이 필요

 

OS에서 race condition 은 언제 발생하는가?

  • kernel mode running 중 interrupt 가 발생하여, interrupt 처리 루틴이 수행
    • kernel mode 코드 실행 중에는 interrupt 를 받지 않는 식으로 대응

kernel 에서 1.load 에서 count -- 값을 갖고 2.inc 를 실행하기 때문에, count-- 는 반영이 안된다.

  • process 가 system call 을 하여 kernel mode로 수행 중인데 context switch 가 일어남
    • kernel mode 실행 중에는 cpu 를 preempt 하지 않음. user mode 로 돌아갈 때 preempt

P_A에서 커널 모드에서 메모리를 load 하고 P_B로 context switch 가 발생한 경우, context 는 P_B의 count++ 전의 값을 load 하고 있는 것으로 갖고 있기 때문에, P_B에서 진행한 count++는 무시된다 (race condition)

  • multiprocessor 에서 shared memory 내의 kernel data
    • 한번에 하나의 cpu 만이 커널에 들어갈 수 있게 하는 방법 -> 전체 커널에 대한 lock, 비효율
    • 커널 내부에 있는 각 공유 데이터에 접근할 때마다 그 데이터에 대한 lock/unlock 을 하는 방법 -> 특정 데이터에 대한 lock

multiprocessor 상태

'[개발 정리] > [OS]' 카테고리의 다른 글

Process Synchronization 2  (2) 2024.12.11
CPU Scheduling 3  (0) 2024.12.05
CPU Scheduling 2  (0) 2024.12.03
CPU Scheduling 1  (0) 2024.11.27
Process Management 2  (0) 2024.11.27