본문 바로가기

Til

Til 24.03.19 - 컴퓨터 사이언스 / 프로세스와 쓰레드

프로그램을 실행해 주는 주체 - 프로세스
프로세스는 최소 하나의 쓰레드를 보유 /각각별도로 주소공간을 독립적으로 할당

 

 - 프로세스 만으로 작업을 처리할때의 문제점

     프로세스 생성에 큰 오버헤드가 있음 - 많은시간소요

 - 프로세스 컨텍스트 스위칭의 비효율성, 오버헤드가 큼

 - 프로세스 사이에 통신이 어렵다 - IPC 로 통신하는데 비쌈

 

 

다른 쓰레드와 공간과 자원을 공유 - 쓰레드

 프로세스 안에서 작업을 처리하는 주체 

 자원중 스텍만 따로 할당 받고 나머지는 쓰레드 끼리 서로 공유

 

이로 인해 해결되는 문제

:  프로세스보다 크기가 작은 실행단위로 구현

 오버헤드 감소

 자원공유로 빠른 컨텍스트 스위칭

 통신시간 / 방법이 어려움등을 해소

 

 

비교

 

프로세스 - 코드 데이터 스텍 힙 다 할당해야함 -> 다른프로세스의 변수나 자료접근 못함

쓰레드 - 메모리 공유 가능 ->스텍만 할당이 되고 나머지는 메모리 영역 공유

 

프로세스 특징

 

코드영역 : 작성된 프로그램이 저장되는영역

데이터 영역 : 코드 실행되며 사용한 환경이나 데이터들

스텍영역 : 호출한 함수가 종료되면 되돌아올 메모리주소나 지역변수등 저장

힙 영역  : 동적으로 할당되는데이터

 

-최소 1개 이상의 스레드를 가지고 있음(마지막 남은 스레드를 삭제하면 메인이 삭제된것이므로 프로그램이 안됨)

 

스레드의 주소공간 

- 프로세스내 실행되는 여러 흐름의 단위

- 프로세스의 특정한 수행경로

- 프로세스가 할당을 받는 자원을 이용하는 최소 실행단위

 

멀티 프로세스  : 하나의 운영체제 안에서 여러 프로세스가 실행 -하나의 프로세스 죽어도 갠춘 //오버헤드 우려

멀티 스레드 : 하나의 프로세스가 여러작업을 여러 쓰레드를 통해 동시에 처리 -자원효율적 , 문맥교환 빠름//프로그램디버                         깅 어려워, 하나의 쓰레드 문제는 전체의 문제 ,단일프로세스에서 효과 ㄴㄴ, 다른프로세스에서 스레드 제                           어  불가

 

 

 

쓰레드풀

 : 프로그램이 작업을 동시에 실행할수 있도록 여러 스레드를 미리생성하고 유지함

   쓰레드를 제한갯수만큼 정해두고 작업큐에 들어오는 작업을 하나씩 맡아 처리

 

<사용이유>

프로그램 성능저하 방지

다수의 사용자의 요청을 방지하기 위해

 

쓰레드 의 동시성

: 멀티테스킹을 위해 여러개의 스레드가 번갈아가면서 실행되는성질

 

쓰레드의 병렬성
:각 코어들이 동시에 실행 되는 성질