프로그램을 실행해 주는 주체 - 프로세스
프로세스는 최소 하나의 쓰레드를 보유 /각각별도로 주소공간을 독립적으로 할당
- 프로세스 만으로 작업을 처리할때의 문제점
프로세스 생성에 큰 오버헤드가 있음 - 많은시간소요
- 프로세스 컨텍스트 스위칭의 비효율성, 오버헤드가 큼
- 프로세스 사이에 통신이 어렵다 - IPC 로 통신하는데 비쌈
다른 쓰레드와 공간과 자원을 공유 - 쓰레드
프로세스 안에서 작업을 처리하는 주체
자원중 스텍만 따로 할당 받고 나머지는 쓰레드 끼리 서로 공유
이로 인해 해결되는 문제
: 프로세스보다 크기가 작은 실행단위로 구현
오버헤드 감소
자원공유로 빠른 컨텍스트 스위칭
통신시간 / 방법이 어려움등을 해소
비교
프로세스 - 코드 데이터 스텍 힙 다 할당해야함 -> 다른프로세스의 변수나 자료접근 못함
쓰레드 - 메모리 공유 가능 ->스텍만 할당이 되고 나머지는 메모리 영역 공유
프로세스 특징
코드영역 : 작성된 프로그램이 저장되는영역
데이터 영역 : 코드 실행되며 사용한 환경이나 데이터들
스텍영역 : 호출한 함수가 종료되면 되돌아올 메모리주소나 지역변수등 저장
힙 영역 : 동적으로 할당되는데이터
-최소 1개 이상의 스레드를 가지고 있음(마지막 남은 스레드를 삭제하면 메인이 삭제된것이므로 프로그램이 안됨)
스레드의 주소공간
- 프로세스내 실행되는 여러 흐름의 단위
- 프로세스의 특정한 수행경로
- 프로세스가 할당을 받는 자원을 이용하는 최소 실행단위
멀티 프로세스 : 하나의 운영체제 안에서 여러 프로세스가 실행 -하나의 프로세스 죽어도 갠춘 //오버헤드 우려
멀티 스레드 : 하나의 프로세스가 여러작업을 여러 쓰레드를 통해 동시에 처리 -자원효율적 , 문맥교환 빠름//프로그램디버 깅 어려워, 하나의 쓰레드 문제는 전체의 문제 ,단일프로세스에서 효과 ㄴㄴ, 다른프로세스에서 스레드 제 어 불가
쓰레드풀
: 프로그램이 작업을 동시에 실행할수 있도록 여러 스레드를 미리생성하고 유지함
쓰레드를 제한갯수만큼 정해두고 작업큐에 들어오는 작업을 하나씩 맡아 처리
<사용이유>
프로그램 성능저하 방지
다수의 사용자의 요청을 방지하기 위해
쓰레드 의 동시성
: 멀티테스킹을 위해 여러개의 스레드가 번갈아가면서 실행되는성질
쓰레드의 병렬성
:각 코어들이 동시에 실행 되는 성질
'Til' 카테고리의 다른 글
Til 24.03.20 프로그래머스 파이썬(startswith() 함수) (1) | 2024.03.20 |
---|---|
Til 24.03.24 프로그래머스 파이썬 기초 (0) | 2024.03.19 |
Til 24.03.18 프로그래머스 파이썬 - 코딩테스트 입문 (0) | 2024.03.18 |
Til 24.03.15 파이썬 코딩테스트 기초 (0) | 2024.03.15 |
Til 24.03.14 알고리즘 파이썬(strip(), split(),max()) (1) | 2024.03.14 |