[운영체제] Chapter 6. 프로세스 동기화 & 상호배제

Lil_Young·2022년 11월 5일
0

운영체제

목록 보기
6/11

동기화 (Process Synchronization)

  • 다중 프로그래밍 시스템

    • 여러 개의 프로세스들이 존재

    • 프로세스들은ㅇ 서로 독립적으로 동작

    • 공유 자원 또는 데이터가 있을 때, 문제 발생 가능

  • 동기화 (Synchronization)

    • 프로세스들이 서로 동작을 맞추는 것

    • 프로세스들이 서로 정보를 공유하는 것

비동기 and 병행성 (Asynchronous and Concurrent)

  • 비동기적 (Asynchronous)

    • 프로세스들이 서로에 대해 모름

  • 병행적 (Concurrent)

    • 여러 개의 프로세스들이 동시에 시스템에 존재

  • 병행 수행중인 비동기적 프로세스들이 공유자원에 동시 접근할 때 문제가 발생할 수 있음

용어 (Terminologies)

  • 공유 데이터 (Shared data/Critical data)

    • 여러 프로세스들이 공유하는 데이터

  • 임계 영역 (Critical section)

    • 공유 데이터를 접근하는 코드 영역 (code segment)

    • 프로세스들이 동시에 작업하면 안 됨

    • 어떤 프로세스가 임계영역에 들어가면 다른 프로세스는 임계영역 밖에서 기다려야하며 임계영역의 프로세스가 나와야 들어갈 수 있음

  • 상호배제 (Mutual exclusion)

    • 둘 이상의 프로세스가 동시에 임계영역에 진입하는 것을 막는 것

  • 한정대기

    • 어떤 프로세스도 무한 대기하지 않아야 함

  • 진행의 융통성

    • 한 프로세스가 다른 프로세스의 진행을 방해해서는 안됨

세마포어 (Semaphore)

  • 세마포어

    • 임계구역에 진입하기 전에 스위치를 사용 중으로 놓고 임계구역으로 들어감

    • 이후에 도착하는 프로세스는 앞의 프로세스가 작업을 마칠 때까지 기다림

    • 프로세스가 작업을 마치면 다음 프로세스에 임계구역을 사용하라는 동기화 신호를 보냄

  • 세마포어 내부 코드

    • Semaphore(n) : 전역 변수 RS를 n으로 초기화, RS에는 현재 사용 가능한 자원의 수가 저장

    • P() : 잠금을 수행하는 코드로 RS가 0보다 크면(사용 가능한 자원이 있으면) 1만큼 감소시키고 임계구역에 진입, 만약 RS가 0보다 작으면(사용 가능한 자원이 없으면) 0보다 커질 때까지 기다림

    • V() : 잠금 해제와 동기화를 같이 수행하는 코드로, RS 값을 1 증가시키고 세마포어에서 기다리는 프로세스에게 임계구역에 진입해도 좋다는 wake_up 신호를 보냄

  • 공유자원이 여러개 일때 세마포어 사용 예

[출처] https://drive.google.com/file/d/1WoDL7Slth2sN2_Qzj6Oij0ZddU6dkAht/view

profile
Beginner_Developer

0개의 댓글