-
[OS] 멀티 태스킹, 멀티 스레딩, 멀티 프로세싱, 멀티프로그래밍 차이점 공부하기OS 2025. 1. 27. 13:34
멀티 태스킹, 멀티 스레딩, 멀티 프로세싱 공부하기
관련 개념정리
1. 프로세스
2.CPU
3.메인메모리
4.I/O
프로세스-컴퓨터에서 실행중인 프로그램
-각각의 프로세스는 독립된 메모리 공간을 할당 받는다.
-각각의 메모리공간에 명령어들과 데이터를 가진다.CPU
-명령어를 실행하는 연산장치
메인메모리
-프로세스가 CPU에서 실행되기 위해 대기하는 곳
IO(input/output)
-파일을 읽고쓰거나 네트워크의 어딘가와 데이터를 주고 받는 것
-입출력 장치와 데이터를 주거나 받는 것단일 프로세스 시스템
-한번에 하나의 프로그램만 실행됨
단일 프로세스 시스템 단점
-CPU 사용률이 좋지 않음
-I/O작업을 할 때 CPU가 가동되지않음.해결책 : 멀티프로그래밍
-여러개의 프로그램을 메모리에 올려놓고 동시에 실행시키자
-I/O작업이 발생하면 다른 프로세스가 CPU에서 실행됨.멀티 프로그래밍
CPU 사용률을 극대화시키는데 목적
멀티프로그래밍의 단점
CPU 사용시간이 길어지면 다른 프로세스는 계속대기
P1의 시간이 계속길어지면 P2는 계속 대기만해야한다.해결책 : 멀티 태스킹
프로세스는 한번 CPU를 사용할 때 아주 짧은 시간(퀀텀(연속적이지않음))만 CPU에서실행되도록 하자
예제)
프로그램 P1,P2과 CPU가 있을때
각 프로세스가 퀀텀(ms)로 매우 짧은 시간동안 실행된다.
각 프로세스들이 최대한의 CPU를 이용할 수 있다.멀티태스킹
동시에 여러 프로그램을 실행시킨다는 면에서 멀티프로그래밍과 유사
CPU타임을 아주아주 짧게 쪼개서 CPU타임마다 프로세스들이 교대로 번갈아가면서 실행된다는 점에서 차이점
그 결과 프로세스의 동작에 대한 반응이 즉각적으로 이뤄진다.목적
프로세스의 응답시간을 최소화 시킨다.
남아있는 아쉬움
1.하나의 프로세스가 동시에 여러작업을 수행하지는 못함
2.프로세스의 컨텍스트 스위칭을 무거운 작업
-> 하나의 프로세스를 여러개의 프로세스로 나눠서 작업하지 않는 이유(컨텍스트 스위칭)
(CPU에서 한 프로세스에서 다른 프로세스로 교체되는 것)
3.프로세스끼리 데이터 공유가 까다로움
->프로세스는 독립된 메모리공간을 할당받기 때문이다.
4.듀얼 코어가 등장했는데 잘 쓰고 싶음
(CPU 제조사에서 하나의 CPU성능을 계속높이는 것이 발열이슈등으로 어려워지자, 하나의 CPU안에 2개의 코어를 둬서 전체의 성능을 높이는 방향으로 전환함. )해결책 : 스레드
스레드가 나온 배경
한 프로세스 안에서 여러 개의 작업들을 동시에 실행하기 위한 목적.
여러개의 작업들을 하나씩 맡는 것이 스레드스레드 특징
1.프로세스는 한 개 이상의 스레드를 가질 수 있다.
2. CPU에서 실행되는 단위.
3. 같은 프로세스의 스레드들끼리 컨텐스트 스위칭은 가볍다.
4. 자신들이 속한 프로세스의 메모리 영역을 공유한다.
-> 스레드들은 각 메모리안에서 힙 메모리는 공유하지만 스택은 공유하지않는다.(스레드마다 별도의 스택이 따로있다. 그리고 각각의 스택을 가리키는 포인터들도 따로있다.)
그러니까 같은 프로세스에 속한 스레드들은 그 프로세스의 메모리 영역을 공유한다. 그렇더라도 스레드만의 고유한 영역도 있다.
예제1) 단일 코어 CPU와 스레드가 2개인 프로세스 1개가 있다.
-> 멀티태스킹처럼 동작
아주 짧은 시간동안 번갈아가면서 동작
예제2) 코어가 2개인 CPU와 스레드가 2개인 프로세스 1개가 있다
-> 각각의 코어에 1개씩 스레드가 실행된다. 진정한 동시. 병렬적으로 실행멀티스레딩
하나의 프로세스가 동시에 여러 작업을 실행하는데 목적
확장된 멀티태스킹 개념
기존 의미
-> 프로세스끼리의 아주 짧은시간 안의 스위칭
새로운 의미
-> 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 CPU time을 할당해서 여러 프로세스가 동시에 실행되는 것처럼 만드는 것(동시성)멀티프로세싱
-> 2개 이상의 코어를 사용해서 여러 프로세스나 스레드가 동시에 실행되도록 하는 시스템 (병렬성)
예제1) 싱글코어 CPU에 싱글스레드 프로세스 2개-> 1개의 코어에 2개의 프로세스 할당
-2개의 프로세스가 1개의 CPU를 나눠서 쓴다 -> 멀티태스킹O
-싱글스레드 -> 멀티스레딩X
-CPU코어 1개 -> 멀티 프로세싱X
(2개이상의 코어에서 여러 프로세스나 스레드가 실행되어야함.)예제2) 싱글코어 CPU에 듀얼스레드 프로세스 1개
->1개의 코어에 2개의 스레드 할당
-CPU 1개로 나눠서 써야된다 -> 멀티태스킹O
-듀얼스레드-> 멀티스레딩O
-CPU코어 1개 -> 멀티프로세싱X예제3.듀얼코어 CPU에 싱글스레드 프로세스 2개
->1개의 코어가 각각 1개의 프로세스를 맡아서 실행
-코어 1개씩 봤을때 경합하는 과정이 없다 -> 멀티태스킹X
-싱글스레드 -> 멀티스레딩X
-CPU 코어2개 ->멀티프로세싱O예제4. 듀얼코어 CPU에 듀얼스레드 프로세스 1개
->코어 1개가 스레드 1개씩 맡아서 동작
-각각의 코어가 1개의 스레드만 맡아 동작하므로 경합하는 것이 없다. -> 멀티태스킹X
-듀얼 스레드 -> 멀티스레딩O
-CPU 코어2개 -> 멀티프로세싱O예제5. 듀얼코어 CPU에 듀얼 스레드 프로세스 2개
예제5-1)각 코어에 듀얼스레드 프로세스 1개씩 할당
-각 코어가 2개이상의 스레드를 경합 -> 멀티태스킹O
-듀얼스레드 -> 멀티스레딩O
-CPU 코어2개 -> 멀티프로세싱O
예제5-2)각 코어에 스레드 1개씩 프로세스 2개할당
-각 코어가 경합하는 과정 -> 멀티 태스킹O
-듀얼 스레드(1개의 프로세스가 2개의 스레드로 동작) -> 멀티 스레딩O
-CPU 코어2개 -> 멀티프로세싱O'OS' 카테고리의 다른 글
[Linux] 리눅스 기본 디렉토리 구조 (0) 2025.02.23 [linux] linux 파일/디렉토리 권한 (1) 2024.12.11 [linux] linux 명령어 팁 (0) 2024.12.11