혼자 공부하는 컴퓨터구조 + 운영체제

프로세스 동기화

단점이없어지고싶은개발자 2022. 10. 27. 22:50
반응형

동기화 : 실행 순서와 자원의 일관성을 보장

  • 프로세스들간의 수행 시기를 맞추는 것
    • 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기
      • 동시에 실행되는 프로세스를 올바르게 순서대로 실행하지 않으면 값이 꼬이기 때문에 실행 순서 제어를 해줘야 한다.
    • 상호 배제 : 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기
      • A, B 프로세스가 D = 10이라는 자원에 접근을 하는데 A는 2를 더해주고, B는 10을 더해준다고 생각해보자
      • A = D + 2, B = D + 10 을 해주는데 순서대로허면 10 -> 12 -> 22가 된다.
      • 하지만 동시에 접근하면 10 -> 12 -> 20 이렇게 D에 동시에 접근하게 되서 이상한 값이 된다.
      • 그래서 다른 프로세스가 접근하면 또 다른 프로세스는 대기 해야 한다.
      • 이러한 자원 하나에 접근하는 것, 전역 변수를 부르는 말은 공유 자원이라고도 한다.
      • 공유자원은 전역변수, 파일, 입출력장치, 보조기억장치 등이 될 수 있다.
    • 임계 구역 : 동시에 실핼하면 문제가 발생하는 자원에 접근하는 코드 영역
      • 임계 구역의 코드를 실행하여 문제가 발생하는 경우를 레이스 컨디션이라고 한다.

대표적인 도구 3가지

  1. 뮤텍스 락 : 임계구역을 자물쇠로 잠궈두고, 다른 프로세스가 접근하려고 할 때 잠겨 있으면 대기하고, 잠겨있지 않다면 임계구역에 접근하는 법
  2. 세마포 : 뮤텍스 락과 비슷하지만 잠궈야 할 문이 여러개라면? 프로세스는 임계구역에 들어가기 전 signal을 받아서 제어를 한다.
  3. 모니터 : 인터페이스(통로)를 묶어 관리한다. 모니터를 통해 자원에 접근하고자 하는 프로세스를 큐에 삽입하고, 큐에 삽입된 순서대로 하나씩 공유 자원을 이용하도록 한다. 세마포와 마찬가지로 일시 중단하기 위한 조건 변수를 사용해 프로세스나 스레드의 실행 순서를 제어한다.
반응형

'혼자 공부하는 컴퓨터구조 + 운영체제' 카테고리의 다른 글

파일시스템  (1) 2022.11.10
교착 상태  (0) 2022.10.29
CPU 스케줄링  (0) 2022.10.27
프로세스와 스레드  (0) 2022.10.22
운영체제 시작  (0) 2022.10.20