Programming/기초

[기초] 프로세스 vs 스레드 ( 동기화란? )

MOONCO 2023. 4. 6. 23:59

프로세스 vs 스레드

( 모든것은 상대적임 ) 프로세스 스레드
크기 작음 ( 프로세스 속에 들어있음 )
에러 발생시 자기만 에러 남들 까지 에러 ( 스레드 )
작업 변경 속도 ( Context Switching ) 느림 빠름
동시 작업 난이도 쉬움 어려움

 

논의할 점

여러개의 스레드를 써야하나,

여러개의 프로세스를 써야 하나?

 

프로세스 동시 작업

OS가 프로세스마다 자원 나눠줌 ( 할당 )

 

근데 나눠주는데 시간 오래걸림 ㅋㅋ ( Context Switching )

그럼 스레드를 써볼까?

 

스레드 동시 작업

하나의 자원에, 여러개의 스레드가 동시에 접근하면 안된다

누가 내 메모리 바꿨어

 

그래서 그런 일이 일어나지 않도록,

한번에 하나의 스레드만 접근가능하도록 제한 하는 것을 

"동기화" 라고 부른다.

근데 접근을 제한한다는 것은 곧, 다른 스레드가 놀고 있다는 뜻이다.

 

노는 스레드가 없어야 한다 ( 병목현상 제거 )

서ㅍ ㅗ ㅅ ㅇ ㅠ ㅁ ㅣ

 

공유 자원에,

1. 들어갈때 잠금, 나올 때 해제 ( Mutex )

2. 동시에 2~3명 씩 정해진 인원(스레드)만 들어가도록 설정 ( Semaphore )

 

근데 얘가 잠가놓고 쳐 나오질 않는 일 발생, 이를 데드락이라고 함

 

남들은 뭐 기다려야지 어떡함

유미 라면먹는다

 

상호배제(Mutual Exclusion), 점유와 대기(Hold and Wait), 비선점(No Preemption), 순환 대기(Circular Wait)

뭐 이런거 쓴댄다. 

 


참고자료

 

 

👩‍💻 멀티 프로세스 vs 멀티 스레드 장단점 💯 완벽 정복

멀티 프로세스와 멀티 스레드는 한 어플리케이션에 대한 처리방식 이라고 보면 된다. 단순히 프로그램을 여러개 띄워놓는 것이 멀티 프로세스가 아니라 이 둘은 언제 어느때에 어떤 방식으로

inpa.tistory.com

 

반응형