상세 컨텐츠

본문 제목

운영체제 - 프로세스 동기화 및 임계구역

공부

by myeongjaechoi 2024. 4. 20. 20:31

본문

프로레스 간 통신(IPC)

  • pipe
  • named pipe
  • socket

Pipe

  • 프로세스 간 단방향 통신
  • 양방향 통신 - Pipe 2개 이용
  • 부모 프로세스와 자식 프로세스 사이에서만 통신 가능

named pipe

  • 단방향 통신에 사용
  • 서로 독립된 프로세스간 통신 가능(부모 -> 자식X)
  • FIFO라는 파일을 거쳐야 프로세스 간 통신 가능

Socket

  • 양방향 통신 가능(카카오톡)
  • UNIX 도메인 소켓
    • 한 컴퓨터 내의 프로세스 간 양방향 통신을 위해 사용
  • BSD 소켓
    • TCP/IP 모델을 이용하여 서로 다른 컴퓨터 내의 프로세스간 양방향 통신을 위해 사용
    •  프로세스 간의 통신을 위해 호스트 IP 주소와 프로세스의 포트 번호 사용
    • 네트워크 프로그래밍 == 소켓 프로그래밍

경쟁상태

  • 공유자원
    • 여러 프로세스들 또는 스레드들이 공유하는 자원
  • 경쟁상태
    • 여러 프로세스들 또는 스레드들이 공유자원에 동시에 접근하여 읽거나 쓸 때 발생
    • 공유자원에 접근하는 순서에 따라 공유자원에 저장되는 값이 달라질 수 있음(병렬 프로그래밍)

임계영역

  • 경쟁상태가 발생하는 영역
  • 경쟁상태를 막기 위해 한 번에 한 프로세스 또는 스레드가 임계영역에 접근해야 함

임계영역(경쟁상태) 문제 해결

  • 상호배제
    • 한 번에 한 프로세스 또는 스레드가 임계영역에 접근해야 함
    • 비선점 - 실행 중일 경우 다른 프로세스는 해당 임계영역 실행X
  • 한정 대기
    • 무한정 대기X
  • 진행의 융통성
    • 임계영역에서 실행 중이지 않을 경우 다른 프로세스는 임계영역에서 실행 가능

프로세스 동기화(상호배제)

  • 공유자원에 저장되는 값의 일관성 보장

 

세모포어

  • 임계영역 문제 해결을 위한 조건이 모두 보장
  • busy waiting이 없음
  • 상호 배제와 프로세스 동기화를 위해 P(), V()의 내부 코드는 실행 중 다른 코드가 실행되지 않도록 test-and-set 명령어 사용하여   분리되지 않고 실행
  • GNU C library를 통해 구현 가능
  • Binary semaphore - S의 초기값 =1, S = 0,1
    • 임계영역에서 동시에 실행가능한 프로세스 또는 스레드는 1개
    • 상호 배제와 프로세스 동기화를 위해 사용
  • Counting semaphore - S의 초기값 1이상이며 S는 0이상
    • 임계영역에서 동시에 실행가능한 프로세스 또는 스레드 수는 1개 이상

'공부' 카테고리의 다른 글

운영체제 - 물리 메모리 관리  (0) 2024.05.01
운영체제 - 프로세스  (0) 2024.04.21
운영체제 - 교착 상태  (0) 2024.04.20
인공지능 - 지식표현과 추론  (0) 2024.04.18
인공지능 - 오토마톤 및 탐색  (0) 2024.04.18

관련글 더보기