[CS] 프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍

조진우·2023년 4월 18일
0

Computer Science

목록 보기
2/7
post-thumbnail

프로그램 : 컴퓨터가 실행할 수 있는 명령어들의 집합
프로세스 : 컴퓨터에서 되는 or 실행중인 프로그램 (각각의 독립된 메모리 공간을 할당)
“컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램”

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

CPU : 명령어들을 처리하는 연산장치
Main Memory : 프로세스가 CPU에서 실행되기 위해 대기하는 장소

단일 프로세스 프로그램 : 한 번에 하나의 프로그램만 실행됨

멀티프로그래밍 (multi-programming)

멀티태스킹 (multi-tasking)
프로세스의 응답 시간을 최소화 시키는데 목적
But...
단점1 : 하나의 프로세스가 동시에 여러 작업을 수행하지는 못함
단점2 : 프로세스의 컨텍스트 스위칭은 무거운 작업
단점3 : 프로세스끼리의 데이터 공유가 까다로움 (독립된 메모리 공간을 할당받기에..)

=========> 그래서 '스레드(Thredad)'가 나왔음 <=============

스레드 (Thread)
특징1 : 프로세스는 하나 이상의 스레드를 가질 수 있음.
특징2 : CPU에서 실행되는 단위 (=프로세스는 하나 이상의 스레드를 가짐)
특징3 : 같은 프로세스의 스레들끼리 컨텍스트 스위칭은 가볍다.
특징4 : 같은 프로세스에 속한 스레드들은, 그 프로세스의 메모리 영역을 공유함. => 데이터 공유가 쉬움

Heap : 공유
Stack : 독립
Pointer : 독립
Program counter : 별도
=> 메모리 영역은 공유하지만, 별도의 고유한 영역도 있다.

멀티태스킹 : 하나의 cpu에 2개 이상의 프로세스 or 스레드를 실행
멀티스레딩 : 하나의 프로세스에 2개 이상의 Thread (Thread들을 통해서 실행)
멀티프로세싱 : 두개 이상의 cpu를 활용하는 시스템

예시 1: 싱글 코어 CPU에 싱글-스레드 프로세스 2개

예시 2: 싱글 코어 CPU에 듀얼-스레드 프로세스 1개

예시 3: 듀얼 코어 CPU에 싱글-스레드 프로세스 두개

예시 4: 듀얼 코어 CPU에 듀얼-스레드 프로세스 1개

예시 5: 듀얼 코어 CPU에 듀얼-스레드 프로세스 2개

참고
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

profile
The Top of Iceblog

0개의 댓글