-
[Jungle] Week08 Pintos_Project1_Threads: 멀티 프로세스 / 멀티 쓰레드 / 멀티 코어 / 동시성 / 세마포어Pintos 2023. 5. 26. 15:18
출처: 유튜브 우아한테크 - [10분 테코톡] 코다의 Process vs Thread Multi-Process 멀티 프로세스
- 각 프로세스는 독립적
- IPC를 사용한 통신
- 자원 소모적, 개별 메모리 차지
- Context Switching 비용이 큼
- 동기화 작업이 필요하지 않음
* 멀티프로세싱(multiprocessing): 두 개 이상의 프로세서나 코어를 활용하는 시스템
출처: 유튜브 우아한테크 - [10분 테코톡] 코다의 Process vs Thread Multi-Thread 멀티 쓰레드
- Thread끼리 긴밀하게 연결되어 있음
- 공유된 자원으로 통신 비용 절감
- 공유된 자원으로 메모리가 효율적임
- Context Switching 비용이 적음
- 공유 자원 관리를 해야함
* Context Switching: CPU에서 하나의 프로세스에서 다른 프로세스로 교체되는 것
Multi-Core 멀티 코어
: 하드웨어 측면에서 실행 단위를 병렬적으로 처리할 수 있도록 여러 프로세서가 있는 것
Concurrency 동시성
: 동시성이란 한 순간에 여러가지의 일들이 일어나는 것이 아니라, 짧은 순간에 cpu의 시간을 분할해서 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것이다.
-> 즉, 하나의 코어에서 하나 이상의 프로세스(혹은 쓰레드)가 번갈아가면서 진행되지만 동시에 진행되는 것처럼 보이는 것
Parallelism 병렬처리
둘 이상의 코어에서 동시에 하나 이상의 프로세스(혹은 스레드)가 한꺼번에 진행되는 것
Semaphore 세마포어란
: semaphore는 깃발이라는 뜻으로, 옛날에는 기찻길에서 깃발 표식으로 파란색이 걸려있으면 지나가고 빨간색이 걸려있으면 섰다가 다른 기차가 지나가면 지나가게끔 하는 용도로 깃발을 사용했다고 한다. 이 깃발을 semaphore라고 한다.
겹치는 기찻길 부분이 두 기차가 공유하는 critical section인 것이다. 기찻길에서도 critical section을 지나가도 된다 안 된다를 알려주는 용도로 쓰인다.
운영체제에서 세마포어는 shared data 개수를 의미한다. 따라서 0또는 1또는 2와 같은 값이 될 수 있다.
기차 예시에서는 겹쳐지는 기찻길(공유 자원)이 한 개이므로 semaphore의 값은 0 또는 1일 것이다.
어떤 기차가 지나가고 있으면 내가 사용할 수 없으니 0이고 비어있으면 1의 값을 가지는 것이다.
(이렇게 0또는 1의 값만 갖는 세마포어를 binary semaphore라고 한다.)
binary semaphore는 Lock과 작동 원리가 반대다. 0과 1을 왔다갔다 하는 것은 똑같지만
세마포어는 초기화가 1이고 누가 사용하면 0이다.
Lock은 누가 사용했을 경우 1이다.
semaphore의 값을 0과 1뿐만 아니라 2, 3, 4 등의 값들 또한 가질 수 있는, 즉 도메인이 제한 없는 세마포어를
counting semaphore라고 한다.
동시성 프로그래머의 개척자인 Edsger Dijkstra는 서로 다른 실행 쓰레드를 동기화하는 문제에 대한 고전적인 해답을 세마포어라고 부르는 특별한 타입의 변수에 기초하여 제안하였다.
세마포어 s는 비음수 정수 값을 갖는 전역 변수로 두 개의 특별한 연산인 P, V를 통해서만 조작할 수 있다.
- P(s): s가 0이 아니면 P는 s를 감소시키고 즉시 리턴한다. 만일 s가 0이면 이 쓰레드는 s가 0이 아닌 값을 가지고, 쓰레드가 V 연산에 의해 재시작될 때까지 정지된다. 재시작 후에 P연산은 s를 감소시키고 제어를 호출자에게 돌려준다.
- V(s): V연산은 s를 1 증가시킨다. 만일 s가 0이 아닌 값이 되는 것을 기다리면서 P연산에서 멈춰 있는 쓰레드가 있다면, V연산은 이 중에서 정확히 한 개의 쓰레드를 시작하고, 그 후에 s를 감소시켜서 자신의 P 연산을 완료한다.
참고
- https://jhnyang.tistory.com/101
[운영체제]세마포어(semaphore) 완전 쉬운 이해! wait(), signal(), 이진, 계수형
운영체제 완전 정복 목차~! semaphore의 유래~! 세마포어란? Semaphore는 깃발이라는 뜻입니다. 옛날에는 기찻길에서 깃발 표식으로 파란색이 걸려있으면 지나가도 되고 빨간색이 걸려있으면 섰다가
jhnyang.tistory.com
- Computer System - A programmer's Perspective
- 우아한테크 - [10분 테코톡] 코다의 Process vs Thread
https://www.youtube.com/watch?v=1grtWKqTn50
'Pintos' 카테고리의 다른 글