7. 프로세스 동기화

수진·2021년 12월 7일
0

컴퓨터시스템

목록 보기
4/10

01 프로세스 간 통신

프로세스 내부 통신: 스레드끼리. 전역 변수, 파일
프로세스 간 통신: 프로세스끼리. 공용 파일, 파이프
네트워크를 이용한 통신: 네트워크로 컴퓨터끼리. 소켓

통신 방향에 따른 분류
기본적으로 일방통행
양방향, 반양방향, 단방향

전역변수 = 단방향 통신
데이터가 덮어써져서 어느 데이터가 어디로 가야하는지 알 수 없음

02 공유 자원과 임계구역

2-1 공유 자원의 접근

공유 자원
여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등
누가 언제 데이터를 읽거나 쓰느냐에 따라 그 결과가 달라질 수 있음

경쟁 조건
2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황
경쟁 조건 발생 -> 공유 자원 접근 순서에 따라 실행 결과가 달라질 수 있음

2-2 임계 구역

공유자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역
동시에 접근 불가

2-3 생산자-소비자 문제

2-4 임계구역 해결 조건

임계구역은 짧고 공평하게!

  1. 상호배제: 임계구역에는 한 프로세스만
  2. 한정대기: 무한 대기하지 않아야함
  3. 진행의 융통성: 한 프로세스가 다른 프로세스의 진행을 방해해서는 안됨

03 임계구역 해결 방법

전역 변수로 잠금 구현(lock): 잠궜다고 생각했는데 안잠기는 경우 있어서 전역으로 구현 어려움

상호배제 조건을 충족(lock1, lock2): 서로가 서로를 잠궈 무한 루프에 빠짐

상호배제 + 한정 대기 조건 충족:

임계구역 문제의 하드웨어적인 해결방법
검사와 지정 코드: while(lock==true);lock=true;를 한번에 실행
명령어 실행 중간에 타임아웃이 걸려 임계구역을 보호하지 못하는 문제 X

3-5 세마포어

임계구역이 사용중임을 알림

Semaphore(n): 전역변수 RS를 n으로 초기화, RS에는 현재 사용 가능한 자원 수 저장
P(): 잠금 수행 코드. RS>0 이면 1 감소 후 임계구역 진입, RS<0이면 0보다 커질 때까지 대기
V(): 잠금 해제 + 동기화. RS를 1 증가. 세마포어에서 기다리는 프로세스에게 임계구역에 진입해도 좋다는 wake_up 신호 보냄

세마포어를 사용하지 않고 바로 임계구역에 들어간 경우, 입계구역 보호X

공유자원 여러 개일 때

3-6 모니터

공유 자원에 접근하기 위한 인터페이스만 제공 -> 자원 보호, 프로세스 간에 동기화
(은행; 대기표 보고 창구 가기)

프로세스가 직접 P(), V()를 사용하지 않고 모니터에 작업 요청
모니터 큐에 작업 저장후 순서대로 처리, 결과만 프로세스에 알려줌

04 파일, 파이프, 소켓 프로그래밍

파일
1. 순차 파일: 파일 내의 데이터는 개념적으로 한 줄
2. 파일 기술자: open -> 포인터 (커서)
3. 파일을 이용한 통신: read() write()

파이프
1. 파이프를 이용한 통신: 파이프; fd[2](2개 원소를 가진 배열. 읽기용, 쓰기용)

네트워킹
1. 소켓을 이용한 네트워킹: 클라이언트/서버의 통신절차

profile
끄적끄적

0개의 댓글