CS지식/운영체제

TIL 정리_84

ran4 2022. 5. 11. 13:16

http://www.kocw.net/home/m/search/kemView.do?kemId=1046323

운영체제 강의를 듣고 정리한 내용입니다

 

Process Synchronization

프로세스 동기화

 

데이터의 접근패턴

어떤 위치에 있던 간에 저장되어 있는 위치를 읽어와서 연산 후

다시 저장하는 방식으로 데이터를 접근한다

 

S-box

-> Memory Address Space

-> 디스크, 프로세스의 메모리 주소 공간

E-box

-> CPU Process

-> CPU, 컴퓨터 내부, CPU 프로세스

 

s-box를 공유하는 e-box가 여러 개 존재하는 경우 Race Condition의 가능성이 있다

-> 경쟁상태

 

race condition이 발생하는 경우

  • kernel 수행 중 인터럽트 발생 시
  • 프로세스가 시스템 콜을 하여 커널 모드로 수행 중일 때 문맥 교환이 일어나는 경우
  • Multiprocessor에서 공유 메모리 내의 커널 내부 데이터를 접근하는 루틴들 간에 발생한다

 

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

-> 양쪽 다 커널코드이기 때문에 커널 주소 공간을 공유한다

-> 작업이 끝나기 전까지 인터럽트 처리를 허용하지 않는다

 

해결책 : 커널모드에서 수행 중일 때는 CPUpreempt하지 않는다

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

 

multiprocessor에서의 race condition

어떤 CPU가 마지막으로 countstore를 했는가를 의미한다

이 경우에는 interrupt 처리로 해결할 수 없다

 

해결 방법

  • 한 번에 하나의 CPU만이 커널에 들어갈 수 있게 하는 방법
  • 커널 내부에 있는 각 공유 데이터에 접근할 때마다 그 데이터에 대한 lock/unlock을 하는 방법

 

Process Synchronization 문제 정리

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

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

 

Race condition

여러 프로세스들이 동시에 공유 데이터를 접근하는 상황을 의미한다

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

-> 이를 막기 위해서는 concurrent process가 동기화 되어야 한다

 

The Critical-Section Problem

공유 데이터를 접근하는 코드를 의미한다

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

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

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

'CS지식 > 운영체제' 카테고리의 다른 글

TIL 정리_86  (0) 2022.05.13
TIL 정리_85  (0) 2022.05.12
TIL 정리_83  (0) 2022.05.10
TIL 정리_82(운영체제)  (0) 2022.05.09
TIL 정리_77  (0) 2022.05.04