본문 바로가기

면접/cs

쓰레드, 멀티쓰레드

/*

 

프로세스: 운영체제로 부터 자원을 할당받는 작업의 단위

디스크로부터 메모리에 적재되어 운영체제로부터 주소 공간, 파일, 메모리 등을 할당 받으며

이것들을 총칭하여 프로세스라고 함

 

임시변수(함수의 매개변수, 복귀주소, 로컬 변수) 를 저장하는 프로세스 '스택'과 

전역변수들을 저장하는 데이터 섹션,

프로세스 실행중에 동적으로 할당되는 메모리인 힙을 포함

 

쓰레드: 프로세스가 할당받은 자원을 이용하는 실행의 단위(얼만큼)

한 프로세스 내에서 동작되는 여러 실행 흐름으로 프로세스 내의 heap, data, code 영역을 공유

 

*/

 

 

싱글스레드 

공유되는 자원접근에 대한 동기화(접근 통제), 작업전환(시간과 노력이 든다)를 신경쓰지 않아도 되지만

 

여러개의 CPU를 활용하지못한다 -> 최대한 활용하려면 cluster? 모듈을 사용하거나, 외부에서 여러개의 프로그램 인스턴스를 실행시키는 방법을 사용해야한다(like, js -> 웹의 비동기처리)

 

 

멀티스레드

프로그램을 다수의 실행단위로 나누어 실행

자원을 공유하여 자원 생성과 관리의 중복을 최소화

서버가 많은 요청을 효율적으로 수행할수있는 환경을 제공

각각의 스레드가 고유의 레지스터와 스택으로 표현됨

 

싱글보다 시간이 지연될수도 있고, 멀티 스레딩을 위한 운영체제의 지원이 필요하고, 스레드 스케쥴링(관리)에 신경써야한다.

 

'면접 > cs' 카테고리의 다른 글

vpn.. 그리고 터널링  (0) 2022.02.12
동시성처리  (0) 2022.02.12
동기 vs 블로킹, 비동기 vs 논블로킹  (0) 2022.02.12
브라우저와 스크립트 엔진  (0) 2022.02.12
주절주절 IT  (0) 2022.02.12