250x250
기리도
기리도의 개발새발 개발 일지
기리도
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Unity (6)
      • 모듈식 프로그래밍 (1)
    • C# (10)
    • 자료구조,알고리즘 (2)
    • 운영체제 (10)
      • 공룡책 (3)
      • 그림으로 쉽게 배우는 운영체제(인프런 강의) (7)
    • 리팩토링 (1)
    • 네트워크 (13)
      • 네트워크 장비 (13)
    • C, C++ 문법 (1)
      • 기타 (0)
      • C (1)
      • C++ (0)
    • 디자인 패턴 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Unity
  • 네트워크 게임
  • 공부
  • 길찾기
  • 스위치
  • 유니티
  • 개발공부
  • 개발
  • 브릿지
  • 통신
  • 게임개발
  • 프로그래밍
  • C#
  • 네트워킹
  • 네트워크
  • 인프런
  • 운영체제
  • OS
  • 탄환
  • 알고리즘

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
기리도
운영체제/그림으로 쉽게 배우는 운영체제(인프런 강의)

프로세스 동기화

운영체제/그림으로 쉽게 배우는 운영체제(인프런 강의)

프로세스 동기화

2022. 3. 28. 22:32
728x90

https://inf.run/bXfg

 

그림으로 쉽게 배우는 운영체제 - 인프런 | 강의

이 강의를 통해 모든 개발자들이 필수로 알아야하는 운영체제의 원리를 알 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

본 포스팅은 위 링크의 강의를 요약/정리한 것으로, 지식의 공유보다는 개인적으로 공부하고 복습하기 위해 기록한 것입니다.

 

프로세스 간 통신

 

🔗프로세스는 다른 프로세스와 데이터를 주고받으며 통신할 수 있다.

🔗한 컴퓨터 내에서의 통신

  • 파일을 이용하는 방법: 통신하려는 프로세스들이 하나의 파일을 이용해 읽고 쓴다.
  • 파이프를 이용하는 방법: 운영체제가 생성한 파이프를 이용해 데이터를 읽고 쓴다.

🔗프로세스 내 쓰레드끼리의 통신

  • 쓰레드는 코드, 데이터, 힙 영역을 공유하기 때문에 데이터 영역에 있는 전역변수나 힙을 이용하면 통신할 수 있다.

🔗다른 컴퓨터의 프로세스와의 통신(네트워크)

  • 운영체제가 제공하는 소켓통신이나 다른 컴퓨터의 함수를 호출하는 RPC(원격 프로시저 호출)를 이용해 통신하는 방법이 있다.
    • 네트워크 소켓: 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점. 인터넷 프로토콜, 로컬 IP주소, 로컬 포트, 원격 IP 주소, 원격 포트로 구성되어 있다.

공유자원과 임계구역

 

공유자원

🔗프로세스끼리 통신할 때 공동으로 이용하는 변수나 파일.

🔗여러 프로세스가 공유하기 때문에 각 프로세스의 접근 순서에 따라 결과가 달라질 수 있다.

🔗컨텍스트 스위칭으로 시분할 처리를 하기 때문에 어떤 프로세스가 먼저 실행되는지 예측하기 어렵다.

🔗따라서 결과를 예측하기 어렵고 동기화 문제가 발생한다.

🔗이를 방지하기 위해 여러 프로세스가 동시에 사용하면 안 되는 영역을 정의했는데, 이를 임계 구역(Critical Section)이라고 한다.

🔗공유자원을 서로 사용하려고 경쟁하는 것은 경쟁조건(Race Condition)이라고 한다.

 

임계구역 문제의 해결 조건

🔗상호 배제(Mutual Exclusion) 매커니즘

🔗상호 배제의 요구사항

  • 임계영역에는 한 번에 하나의 프로세스만 접근한다.
  • 여러 요청이 있더라도 하나의 프로세스만 접근하도록 허용한다.
  • 임계구역에 들어간 프로세스는 빠르게 나와야 한다.(그렇지 않으면 다른 프로세스가 오래 기다려야 한다.)

세마포어

 

🔗Semaphore

🔗상호배제 메커니즘의 한 가지

🔗공유자원에 대한 접속을 제어하기 위해 정수형 변수를 사용한다.

🔗세마포어 알고리즘은 다음과 같이 작동한다.

  • 프로세스는 공유자원을 쓰려면 권한을 요청해야 하고 다 쓴 뒤에는 권한을 반납해야 한다.
    • 권한 요청과 반납은 비유적인 표현으로, 실제로는 Wait() 함수와 Signal() 함수를 사용한다.
  • 만약 이미 다른 프로세스가 공유자원을 쓰고 있다면 대기 큐에서 대기한다.
  • 먼저 공유자원을 쓰고 있던 프로세스가 권한을 반납하면 대기 큐에 있던 프로세스가 권한을 받아 공유자원을 사용한다.
  • 이때의 '권한'은 정수형 변수로 선언되며 세마포어라고 한다. 세마포어의 값은 공유자원의 숫자로 결정된다.

🔗세마포어 알고리즘의 단점

  • 권한을 요청하는 함수와 반납하는 함수의 호출 순서가 이상하면 제대로 작동하지 않음.

 


모니터

 

🔗세마포어의 단점을 해결한 상호 배제 매커니즘

🔗프로그래밍 언어 차원에서 지원하는 방법

  • 예를 들어 자바에서 'synchronized' 키워드가 붙은 함수는 동시에 여러 프로세스에서 실행할 수 없다.(상호배제)

🔗모니터의 구현만 완벽하다면 프로그래머는 세마포어 알고리즘을 쓰는 것보다 편리하고 안전하게 코드를 작성할 수 있다.

728x90
저작자표시 (새창열림)

'운영체제 > 그림으로 쉽게 배우는 운영체제(인프런 강의)' 카테고리의 다른 글

메모리 종류  (0) 2022.03.29
데드락  (0) 2022.03.29
CPU 스케줄링  (0) 2022.03.25
프로세스와 쓰레드  (0) 2022.03.24
운영체제 들어가기  (0) 2022.03.21
  • 프로세스 간 통신
  •  
  • 공유자원과 임계구역
  • 공유자원
  • 임계구역 문제의 해결 조건
  • 세마포어
  • 모니터
'운영체제/그림으로 쉽게 배우는 운영체제(인프런 강의)' 카테고리의 다른 글
  • 메모리 종류
  • 데드락
  • CPU 스케줄링
  • 프로세스와 쓰레드
기리도
기리도
공부한 내용을 정리해서 올리는 블로그입니다.

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.