그림으로 쉽게 배우는 운영체제 - 인프런 | 강의
이 강의를 통해 모든 개발자들이 필수로 알아야하는 운영체제의 원리를 알 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
본 포스팅은 위 링크의 강의를 요약/정리한 것으로, 지식의 공유보다는 개인적으로 공부하고 복습하기 위해 기록한 것입니다.
프로세스 간 통신
🔗프로세스는 다른 프로세스와 데이터를 주고받으며 통신할 수 있다.
🔗한 컴퓨터 내에서의 통신
- 파일을 이용하는 방법: 통신하려는 프로세스들이 하나의 파일을 이용해 읽고 쓴다.
- 파이프를 이용하는 방법: 운영체제가 생성한 파이프를 이용해 데이터를 읽고 쓴다.
🔗프로세스 내 쓰레드끼리의 통신
- 쓰레드는 코드, 데이터, 힙 영역을 공유하기 때문에 데이터 영역에 있는 전역변수나 힙을 이용하면 통신할 수 있다.
🔗다른 컴퓨터의 프로세스와의 통신(네트워크)
- 운영체제가 제공하는 소켓통신이나 다른 컴퓨터의 함수를 호출하는 RPC(원격 프로시저 호출)를 이용해 통신하는 방법이 있다.
- 네트워크 소켓: 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점. 인터넷 프로토콜, 로컬 IP주소, 로컬 포트, 원격 IP 주소, 원격 포트로 구성되어 있다.
공유자원과 임계구역
공유자원
🔗프로세스끼리 통신할 때 공동으로 이용하는 변수나 파일.
🔗여러 프로세스가 공유하기 때문에 각 프로세스의 접근 순서에 따라 결과가 달라질 수 있다.
🔗컨텍스트 스위칭으로 시분할 처리를 하기 때문에 어떤 프로세스가 먼저 실행되는지 예측하기 어렵다.
🔗따라서 결과를 예측하기 어렵고 동기화 문제가 발생한다.
🔗이를 방지하기 위해 여러 프로세스가 동시에 사용하면 안 되는 영역을 정의했는데, 이를 임계 구역(Critical Section)이라고 한다.
🔗공유자원을 서로 사용하려고 경쟁하는 것은 경쟁조건(Race Condition)이라고 한다.
임계구역 문제의 해결 조건
🔗상호 배제(Mutual Exclusion) 매커니즘
🔗상호 배제의 요구사항
- 임계영역에는 한 번에 하나의 프로세스만 접근한다.
- 여러 요청이 있더라도 하나의 프로세스만 접근하도록 허용한다.
- 임계구역에 들어간 프로세스는 빠르게 나와야 한다.(그렇지 않으면 다른 프로세스가 오래 기다려야 한다.)
세마포어
🔗Semaphore
🔗상호배제 메커니즘의 한 가지
🔗공유자원에 대한 접속을 제어하기 위해 정수형 변수를 사용한다.
🔗세마포어 알고리즘은 다음과 같이 작동한다.
- 프로세스는 공유자원을 쓰려면 권한을 요청해야 하고 다 쓴 뒤에는 권한을 반납해야 한다.
- 권한 요청과 반납은 비유적인 표현으로, 실제로는 Wait() 함수와 Signal() 함수를 사용한다.
- 만약 이미 다른 프로세스가 공유자원을 쓰고 있다면 대기 큐에서 대기한다.
- 먼저 공유자원을 쓰고 있던 프로세스가 권한을 반납하면 대기 큐에 있던 프로세스가 권한을 받아 공유자원을 사용한다.
- 이때의 '권한'은 정수형 변수로 선언되며 세마포어라고 한다. 세마포어의 값은 공유자원의 숫자로 결정된다.
🔗세마포어 알고리즘의 단점
- 권한을 요청하는 함수와 반납하는 함수의 호출 순서가 이상하면 제대로 작동하지 않음.
모니터
🔗세마포어의 단점을 해결한 상호 배제 매커니즘
🔗프로그래밍 언어 차원에서 지원하는 방법
- 예를 들어 자바에서 'synchronized' 키워드가 붙은 함수는 동시에 여러 프로세스에서 실행할 수 없다.(상호배제)
🔗모니터의 구현만 완벽하다면 프로그래머는 세마포어 알고리즘을 쓰는 것보다 편리하고 안전하게 코드를 작성할 수 있다.
'운영체제 > 그림으로 쉽게 배우는 운영체제(인프런 강의)' 카테고리의 다른 글
메모리 종류 (0) | 2022.03.29 |
---|---|
데드락 (0) | 2022.03.29 |
CPU 스케줄링 (0) | 2022.03.25 |
프로세스와 쓰레드 (0) | 2022.03.24 |
운영체제 들어가기 (0) | 2022.03.21 |