프로세스 VS 스레드

Alex·2025년 1월 4일
0

CS를 공부하자

목록 보기
6/74

[10분 테코톡] 🌷 코다의 Process vs Thread

프로세스 VS 스레드

프로그램과 프로세스

프로그램을 실행시키기 전에 단순히 실행 코드일뿐이다.
이걸 실행시키면 프로세스가 된다.

이때 필요한 내용들이 메모리에 올라간다.
해당 프로세스에 대한 정보를 담고 있는 PCB블럭도 생성된다.

사람들은 위처럼 한번에 여러 프로세스를 사용한다.
이때 시분할(짧은텀)로 분할해서 프로세스를 실행한다.

이 작업이 복잡하고 무거우니까
경량화된 프로세스 버전인 스레드가 등장한다.
(스레드는 공유되는 자워이 있다. 프로세스의 코드, 데이터, 힙 영역을 공통된 자원으로 사용한다 각 스레드는 스택자원만 갖는다)

그래서, 공유되는 자원이 있기 때문에 컨텍스트 스위칭이 일어날 때 캐싱 적중률이 올라간다(이미 올라가 있으니까). 모조리 다 빼고 다시 넣을 필요가 없는 것.

TV, 스피커, 리모콘을 설치해두면 모든 팀이 계속 쓸 수 있는 셈(팀이 나갈 때 이 자원들을 다 빼고, 새로운 팀이 들어올 때 새로 설치하고..이러지 않는 것)

멀티 스레드 VS 멀티 프로세스

이건 한 어플리케이션에 대한 처리방식이라고 생각하면 된다.
여러 사용자가 로그인을 요청한다고 해보자.

이때 부모 프로세스가 fork를 해서 자식 프로세스들을 만든다. 모두 별개의 메모리 영역을 확보한다. 이게 멀티 프로세스다.

프로세스 내에서 분리해서 여러 스레드로 나뉘면 그게 멀티 스레드가 된다.

그렇다면, 왜 멀티 프로세스를 이용할까?

이렇게 오류가 나면? 내용이 다 사라짐 -->긴밀하게 연결하게 연결돼 있어서 그렇다. 멀티 스레드를 썼기 때문. 긴밀하게 연결돼서, 한 탭에 문제가 생기면 전체 프로세스에 영향을 준다.

멀티 프로세스를 쓰면 멀티탭 간의 영향을 덜 받는다.

멀티 코어

멀티 코어는 하드웨어 측면에 가깝다.
동시성, 병렬처리가 주요 키워드다.

여러 실행 단위를 번갈아가면서 하는 게 동시성이다. cpu 시간을 분할하는 방식.
멀티 코어는 병렬처리, 여러 코어를 사용해서 다수의 실행단위를 한순간에 동시 처리하는 방식이다.

profile
답을 찾기 위해서 노력하는 사람

0개의 댓글