Threads & Concurrency

차희선·2023년 5월 12일
0

백엔드 로드맵

목록 보기
10/10

스레드와 병행성

스레드

CPU 이용의 기본 단위
스레드 ID, 프로그램 카운터(PC), 레지스터 집합, 스택으로 구성
같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 그리고 열린 파일이나 신호와 같은 운영체제 자원들을 공유

단일 스레드 프로세스

다중 스레드 프로세스

동기(Motication)

다중스레드

만약 웹 서버가 전통적인 단일 스레드 프로세스로 작동한다면, 자신의 단일 프로세스로 한 번에 하나의 클라이언트만 서비스할 수 있게 되어 클라이언트는 자신의 요구가 서비스되기까지 매우 긴 시간을 기다려야 합니다.
하나의 해결책은 서버가 요청을 받아들이는 하나의 프로세스로 동작하게 하는 것입니다. 즉, 서버에게 서비스 요청이 들어오면, 프로세스는 그 요청을 수행할 별도의 프로세스를 생성하는 것입니다.
하지만 프로세스 생성 작업은 매우 많은 시간을 소비하고 많은 자원을 필요로 하는 일입니다. 그래서 프로세스 안에 여러 스레드를 만들어 나가는 것이 더 효율적입니다.

예시로 운영체제 커널도 다중 스레드입니다. 리눅스 시스템에서 각 스레드는 장치관리, 메모리 관리 또는 인터럽트 처리 같은 자겁을 수행할 수 있습니다.

장점

  • 응답성(responsiveness)
  • 자원 공유(resource sharing)
  • 경제성(economy)
  • 규모 적응성(scalability)

다중코어

단일 cpu -> 다중 cpu로 발전
단일 컴퓨팅 코어가 있는 시스템에서는 단지 처리 코어가 한 번에 하나의 스레드만 실행할 수 있기 때문에 병행성(Concurrent)은 시간이 지남에 따라 스레드 실행이 인터리브 됨을 의미합니다.

그러나 여러 코어가 있는 시스템에서 병행성은 시스템이 각 코어에 별도의 스레드를 할당할 수 있기 때문에 일부 스레드가 병렬(Parallel) 로 실행될 수 있음을 의미합니다.

0개의 댓글