목차
프로세스? "현재 실행중인" 프로그램
단일 프로세스 : 한번에 하나의 프로그램만 실행된다.
단점 : 크롬을 사용하다가 카카오톡을 사용하려면 크롬을 종료해야한다.
멀티 프로세스 : 여러 프로그램을 번갈아가면서 처리하자 (시간제한 없음, 아직은 동시처리 아님)
여러 프로그램을 메모리에 올려서 동시에 사용할 수 있도록 하였다.
아무래도 CPU의 처리속도가 빠르다보니 번갈아가면서 처리하는 것이 우리 눈에는 "동시에" 처리되는 것으로 보이지만
실제로 "동시에"는 아니다!
단일 프로세스의 단점(크롬을 사용하다가 카카오톡을 사용하려면 크롬을 종료해야한다)을 개선했다.
멀티 프로세스의 단점 : 앞선 프로세스의 CPU사용시간이 길어지면 다른 프로세스는 계속 대기해야한다..
멀티태스킹 : 여러 프로그램을 번갈아가면서 처리하자 (시간제한 있음, 아직은 동시처리 아님)
프로세스가 작업할 수 있는 시간을 쪼개고, 시간이 끝나면 다음 차례가 올때까지 기다린다.
멀티 프로세스의 단점(앞선 프로세스의 CPU사용시간이 길어지면 다른 프로세스는 계속 대기해야한다)을 개선했다.
현재까지의 아쉬운 점 :
- 하나의 프로세스가 동시에 여러작업을 수행하지는 못한다.
- Context Switching은 무거운 작업이다.
- 프로세스끼리의 데이터 공유가 어렵다.
스레드? 프로세스 안에 여러 작업자를 만들어서 동시에 작업하자
1명이 3가지 역할을 가지고 있기보단, 3명이 1가지 역할을 맡는 것 처럼
스레드는 여러 작업 중에 하나를 맡아 할 사람을 추가하는 것이다.
기존의 프로세스 개념만 있었을때는 프로세스 자체가 작업을 처리하는 단위였지만,
이제 프로세스는 스레드를 감싸는 "컨테이너"의 개념이 되었고
스레드가 작업을 처리하는 단위로 바뀌었다.
- 프로세스는 1개 이상의 스레드를 가질 수 있다. (무조건 일꾼은 1명은 있어야지..)
- 스레드들은 자신이 속한 프로세스의 메모리 영역을 공유해서 사용한다.
- 스레드들끼리의 Context Switching은 가볍다
"하나의 프로세스가 동시에 여러작업을 수행하지는 못한다" 를 개선했다.
CPU 1개(코어 1개), Process 1개, Thread 2개인 경우 : 멀티 태스킹처럼 수행한다. (번갈아서 작업)
스레드가 있어도 코어가 1개이면 멀티태스킹처럼 번갈아서 작업이 이루어진다. 동시처리가 아니다!!
멀티 스레딩 : 하나의 프로세스가 여러 스레드로 동시에 작업 실행 (찐❗ 동시에)
코어가 2개인 경우에 스레드가 코어 1개씩 잡아서 작업한다.
이제 진짜 말 그대로의 "동시에"가 가능해진 것!
멀티 프로세싱 : 2개 이상의 코어나 프로세"서"를 활용하는 시스템
프로세"스" 아님!
정리와 비유
카페로 생각해보자.
단일 프로세스 : 종업원 1명
A고객의 주문을 받고 커피를 만들어준다.
A고객의 커피는 24시간 후에 완성되었다.
종업원은 그제서야 B고객의 주문을 받고 커피를 만들어준다.
멀티 프로세스 : 종업원 1명
A고객의 주문을 받고 커피를 만드는 도중에 B고객의 주문을 받는다.
A고객의 커피가 완성되지 않으면 B는 계속 기다려야한다.
A고객의 커피가 24시간 후에 완성되었다면 A고객은 24시간 후에 커피를 마실 수 있고
B고객의 커피는 24시간이 지나서야 만들기 시작한다 (...)
멀티 태스킹 : 종업원 1명
A고객의 주문을 받고 커피를 만드는 도중에 B고객의 주문을 받는다.
A고객의 커피 10초, B고객의 커피 10초씩 번갈아 작업하여 먼저 완성된 커피를 제공한다.
멀티스레딩 : 종업원 2명 이상. 주문받는 사람, 커피만드는 사람으로 역할을 구분했다.
주문받는 사람은 주문만 받는다.
커피만드는 사람은 커피만 만든다.
주문받기와 커피만들기가 동시에 가능해졌다.
이 내용을 공부하다가 좋은 글도 찾았당
https://yozm.wishket.com/magazine/detail/1269/
'Computer Science' 카테고리의 다른 글
Singleton pattern | 싱글톤패턴 (3) | 2022.07.29 |
---|---|
운영체제 개요 (0) | 2022.03.25 |
동적계획법 DP 구현방법 ( + [백준] 11050 이항계수 문제풀이) (0) | 2022.02.13 |
DFS, BFS 구현방법 ( + [백준] 2606 바이러스 문제풀이) (0) | 2022.02.12 |
[JWT] JSON Web Token의 구조, 장점, 한계 (0) | 2022.02.03 |