본문 바로가기

운영체제 (이화여대 반효경)

운영체제 강의 17

1. 데이터의 접근

데이터는 연산을 필요로 할 때 다른 공간으로 이동하여 연산 후 결과를 다시 받는다.

 

2. Race Condition

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

 

 

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

1. kernel 수행 중 인터럽트 발생 시

 

2. Process가 system call을 하여 kernel mode로 수행 중인데 context switch가 일어나는 경우

 

3. Multiprocessor에서 shared memory 내의 kernel data

 


 1. 커널모드 running 중 interrupt가 발생하여 인터럽트 처리루틴이 수행

           → 양쪽 다 커널 코드이므로 kernel address space 공유

 

 

 

 

 

 

2. 두 프로세스의 address space 간에는 data sharing이 없음

    그러나 system call을 하는 동안에는 kernel address space의 data를

    access하게 됨

    이 작업 중간에 CPU를 preempt해가면 race condition 발생

 

 

 

3. 어떤 CPU가 마지막으로 count를 store했는가?

    multiprocessor의 경우 interrupt enable/disable로 해결되지 않음

 

    방법1) 한번에 하나의 CPU만이 커널에 들어갈 수 있게 하는 방법

    방법2) 커널 내부에 있는 각 공유 데이터에 접근할 때마다 그 데이터에 대한 lock / unlock을 하는 방법

 

 

 

📌 If you preempt CPU while in kernel mode...

 

 

해결책 : 커널 모드에서 수행 중일 때는 CPU를 preempt하지 않음

             커널 모드에서 사용자 모드로 돌아갈 때 preempt

 

3. Process Synchronization 문제

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

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

Race condition

     ✓ 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황

     ✓ 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라짐

 

• race condition을 막기 위해서는 concurrent process는 동기화(synchronize)되어야 한다

 

4. The Critical-Section Problem

‣ n개의 프로세스가 공유 데이터를 동시에 사용하기를 원하는 경우

‣ 각 프로세스의 code segment에는 공유 데이터를 접근하는 코드인 critical section이 존재

✓ Problem

        - 하나의 프로세스가 critical section에 있을 때 다른 모든 프로세스는 critical section에 들어갈 수 없어야 한다

 

'운영체제 (이화여대 반효경)' 카테고리의 다른 글

운영체제 강의 19  (0) 2021.07.15
운영체제 강의 18  (0) 2021.07.15
운영체제 강의 16  (0) 2021.07.14
운영체제 강의 15  (0) 2021.07.14
운영체제 강의 14  (0) 2021.07.14