[운영체제] 동기와 비동기 및 프로세스 동기화

한상진·2022년 8월 4일
0

운영체제

목록 보기
4/4




📕 동기와 비동기

📌 동기 (Synchronous)

요청과 그 결과가 동시에 일어나는 것
요청 후 결과가 와야만이 그 다음 작업이 이루어지는 방식

특징

  • 간단하고 직관적
  • 어떠한 일을 처리하는 동안 다른 일을 하지 못함
  • 작업 완료 여부를 호출한 쪽에서 신경 씀

📌 비동기 (Asynchronous)

요청과 그 결과가 동시에 일어나지 않는 것
요청 후 결과가 오는 동안 그 다음 작업이 이루어지는 방식

특징

  • 동기보다 복잡함
  • 어떠한 일을 처리하는 동안 다른 일을 할 수 있어 자원을 효율적으로 사용
  • 작업 완료 여부를 호출된 쪽에서 신경 씀



📕 Blocking과 Non-Blocking

Blocking/Non-Blocking는 Synchronous/Asynchronous와 관점이 다르고, 제어권이 어디에 있느냐에 대한 관점이다.

📌 Blocking

호출된 함수가 자신의 작업을 모두 끝날 때 까지 제어권을 갖고 있어 호출한 함수가 대기하도록 함

📌 Non-Blocking

호출된 함수가 바로 return 해서 호출한 함수에게 제어권을 주어 다른 일을 할 수 있게 함




📕 프로세스 동기화

📌 임계 영역 (Critical Section)

임계 영역이란 멀티 스레딩에 문제점에서 나오듯, 동일한 자원에 동시에 접근하는 작업을 실행하는 코드 영역을 뜻한다.

공유되는 자원, 즉 동시에 접근하려고 하는 자원에서 문제가 발생하지 않게 독점을 보장해줘야 하는 영역을 임계 영역이라고 한다.

📌 임계 영역을 해결하기 위한 방법

  • 상호 배제 : 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없음.
  • 한정 대기 : 특정 프로세스가 영원히 임계 영역에 들어가지 못하면 안 됨.
  • 진행 : 임계 구역에 들어간 프로세스가 없는 상태에서, 들어가려고 하는 프로세스가 여러 개 있다면 어느 것이 들어갈지를 적절히 결정해주어야 한다.

📌 해결책

📍 Mutex Lock

동시에 공유 자원에 접근하는 것을 막기 위해 Critical Section 에 진입하는 프로세스는 Lock 을 획득하고 Critical Section 을 빠져나올 때, Lock 을 방출함으로써 동시에 접근이 되지 않도록 한다.

한계 : 다중처리기 환경에서는 시간적인 효율성 측면에서 적용할 수 없다.


📍 Semaphores

소프트웨어상에서 Critical Section 문제를 해결하기 위한 동기화 도구이다.

OS 는 Counting/Binary 세마포를 구분한다

  • 카운팅 세마포

    가용한 개수를 가진 자원 에 대한 접근 제어용으로 사용되며, 세마포는 그 가용한 자원의 개수 로 초기화 된다.
    자원을 사용하면 세마포가 감소, 방출하면 세마포가 증가 한다.

  • 이진 세마포

    MUTEX 라고도 부르며, 상호배제의 머릿글자를 따서 만들어졌다.
    이름 그대로 0 과 1 사이의 값만 가능하며, 다중 프로세스들 사이의 Critical Section 문제를 해결하기 위해 사용한다.

단점

  • Busy Waiting(바쁜 대기)

  • Deadlock(교착상태)

    일련의 프로세스들이 서로가 가진 자원을 기다리며 block 되어 더 이상 진행이 될 수 없는 상태를 말한다. 

  • 모니터
    고급 언어의 설계 구조물로서, 개발자의 코드를 상호배제 하게끔 만든 추상화된 데이터 형태이다.

    공유자원에 접근하기 위한 키 획득과 자원 사용 후 해제를 모두 처리한다. (세마포어는 직접 키 해제와 공유자원 접근 처리가 필요하다. )


이미지 출처 : Link

profile
공부방

0개의 댓글