Home [OS] 운영체제 - 병행제어 2
Post
Cancel

[OS] 운영체제 - 병행제어 2

운영체제 - 병행제어 2

Race Condition

  • S-box를 공유하는 E-box가 여럿 존재하는 경우 Race Condition의 가능성이 존재한다.

    S-box : Memory Address Space

    E-box : CPU Process

  • Multiprocessor system

    • 공유메모리를 사용하는 프로세스들 - 커널 내부 데이터를 접근하는 루틴들 간
    • 예) 커널모드 수행 중 인터럽트로 다른 루틴 수행 시, 문제가 될 수 있다.

OS에서 Race Condition은 언제 발생하는가?

  • Kernel 수행 중 인터럽트 발생 시
  • Process가 System Call을 하여 Kernel Mode로 수행 중인데 Context Switch가 일어나는 경우
  • Multiprocessor에서 Shared Memory 내의 Kernel Data

Preempt CPU

preempt

  • 해결책
    • 커널 모드에서 수행 중일 때는 CPU를 Preempt하지 않는다.
    • 커널 -> 사용자 모드로 바뀔 때 Preempt 한다.

OS에서의 Race Condition - Interrupt v.s. Kernel

  • 커널 수행 중 인터럽트가 들어온다는 것은 중요한 작업을 요청하는 일이지만, 커널 수행 중이므로 CPU를 넘겨주면 문제가 될 수 있다.
  • 커널 수행 중에는 인터럽트를 disable 시킨다.

OS에서의 Race Condition - Multi-Processor

  • Multiprocessor의 경우, 인터럽트를 disable/enable 하는 방법으론 해결되지 않는다.
  • 해결 방법
    1. 한번에 하나의 CPU만이 커널에 들어갈 수 있게 한다. (매우 비효율적이다.)
    2. 커널 내부에 있는 각 공유 데이터에 접근할 때마다 그 데이터에 대한 lock / unlock을 하는 방법이 있다. (효율적 - 사용 중인 공유 데이터만 lock)

Process Synchronization

  • 공유 데이터의 동시 접근은 데이터의 불일치 문제를 발생시킬 수 있다.
  • 일관성 유지를 위해서는 협력 프로세스 간의 실행 순서를 정해주는 매커니즘이 필요하다.

Race Condition

  • 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황
  • 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라진다.
  • Race Condition을 막기 위해서는 동시 접근(concurrent process)이 동기화(synchronize) 되어야 한다.

Critical-Section Problem

  • n 개의 프로세스가 공유 데이터를 동시에 사용하길 원하는 경우, 각 프로세스의 code segment에는 공유 데이터에 접근하는 코드인 Critical Section이 존재한다.
  • 하나의 프로세스가 critical section에 들어가 있을 때, 다른 모든 프로세스는 critical section에 들어갈 수 없다.
This post is licensed under younghwani by the author.

[OS] 운영체제 - 병행제어 1

[OS] 운영체제 - 병행제어 3

Comments powered by Disqus.