프로세스와 스레드

Yiseul·2022년 1월 6일
0

조각지식

목록 보기
7/20
  • 프로세스와 스레드의 차이?
    프로세스는 운영체제로부터 시스템 자원을 할당받는 작업의 단위이고 스레드는 할당받은 자원을 이용하는 실행 단위며 프로세스 내에서 여러 개 생길 수가 있다.

프로세스

  • 운영체제로부터 시스템 자원을 할당받는 작업의 단위
  • 컴퓨터에서 연속적으로 실행되고 있는 프로그램
  • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스

스레드

  • 한 프로세서 내의 주소 공간이나 자원들을 대부분 공유
  • 기본적으로 하나의 프로세스가 생성되면 하나의 메인 스레드가 생성되고 스레드를 추가로 생성하지 않는 한 모든 프로그램 코드는 메인 스레드에서 실행
  • 하나의 프로세스가 가지는 여러 개의 스레드 => 멀티 스레드

어플리케이션이 실행될 때 여러 프로세스가 실행되고 있다.(e.g 게임)
한 번의 사건이 발생해서 여러 가지 프로세스들이 실행될 때
우리 눈에는 동시에 진행되는 것처럼 보이지만,
실제로는 cpu는 프로세스 1을 어느 정도 하고 저장하고 프로세스 2를 진행하고 다시 돌아가며 여러 프로세스를 왔다 갔다 하는 콘텍스트 스위칭(Context Switching)이 일어난다.

반복이 많아지게 되면 CPU의 부담이 늘어나고, 중복된 자원들이 비효율적으로 관리된다. 그럴 때 사용하는 것이 바로 멀티스레드라고 할 수 있다.


장점단점
멀티프로세스안정적(독립된 구조)작업량 많을수록 오버헤드 발생. Context Switching로 인한 성능 저하
멀티스레드시스템 자원소모 감소, 실행속도 향상, 스레드간 자원공유디버깅 어려움, 동기화 이슈 발생, 하나의 스레드오류로 전체 프로세스에 문제가 발생한다.

  • 스레드 세이프?
    멀티스레드 환경에서 동작을 해도 원래의 의도대로 동작하는 코드를 스레드 세이프라고 말한다. 여러 스레드에서 함수를 호출해도 하나의 스레드에서 호출한 것처럼 같은 결과로 동작을 해야한다는 뜻
    함수가 전역변수를 참조한다면 스레드 세이프하지 않은 결과가 나올 수 있다.

  • 여러 개의 스레드를 이용하는 경우, 미묘한 시간차나 잘못된 변수를 공유함으로써 오류 발생 가능

👉🏼 스레드 간에 통신할 경우에는 충돌 문제가 발생하지 않도록 동기화 문제를 해결해야 한다.




프로세스(Process)와 스레드(Thread)의 차이
Process, Thread 차이가 뭐예요?
동기? 비동기? 쓰레드? 멀티 쓰레드?
비동기처리? 그래도 싱글스레드인 것이 함정인 자바스크립트

profile
즐거운 도전중입니다:)

0개의 댓글