멀티프로세싱
컴퓨터 시스템에서 둘 이상의 프로세서(CPU 코어)를 사용하여 여러 작업을 처리하는 기술이며 동시에 많은 작업을 처리
멀티태스킹
동시에 여러 작업을 수행하는 것
이를 위해 운영체제는 스케줄링 기법을 사용하며, 스케줄링은 CPU 시간을 여러 작업에 나누어 배분하는 방법
멀티프로세싱 / 멀티태스킹
멀티프로세싱
- 여러 CPU를 사용하여 동시에 여러 작업을 수행
- 하드웨어 기반으로 성능 향상 (CPU니깐)
멀티태스킹
- 단일 CPU가 여러 작업을 동시에 수행
프로세스
프로그램이 실행되면 프로세스가 만들어지며 프로그램이 실행 (클래스를 인스턴스 했을때를 생각하면됨)
실행 중인 프로그램의 인스턴스
하나의 스레드를 반드시 포함
각 프로세스는 독립적인 메모리 공간을 가지며, 운영체제에서 독립된 실행 단위로 취급
스레드
프로세스 내에서 실행되는 단위
여러 스레드는 프로세스 내의 자원을 공유
(* 유튜브 영상을 실행시키면 영상을 보면서 댓글도 남길수 있고, 다른 유튜브영상 리스트를 보고 목록 최 하단까지 내리면 다음 목록이 나오는게 하는 작업을 스레드의 작업 -> 여기서 유튜브 영상이 딱 실행됨은 프로세스이고, 실행 후 영상 재생, 댓글, 목록 리스트 추가는 스레드)
컴퓨터의 멀티태스킹
단일 코어에서 스레드A, 스레드B가 있다고 가정하고 진행 방법을 정리해보겠다.
스레드A를 실행 > 스레드A 멈춤(멈추기 전까지의 데이터를 메모리에 저장)
> 스레드B 실행 > 스레드B 멈춤(멈추기 전까지의 데이터를 메모리에 저장)
> 스레드A 시작(저장해놓은 데이터 메모리에서 가져옴)
위의 과정을 컨텍스트 스위칭(Context Switching) 이라고 함
실행중인 작업이 멈추면 메모리에 저장하고 다시 시작될때 메모리에서 가져와야한다. (cost 발생)
멀티스레드가 대부분 효율적이지만, 컨텍스트 스위칭 작업이 빈번하게 발생한다면 효율적이지 않을수 있다.
아래는 공부한걸 이해한걸 그림으로 나타내봤다.
core는 두개일 경우이고 요즘 pc는 core의 수가 6개정도 되니깐 아래에서 core가 4개 더있으면 6core인것 같다.
'공부 > Java' 카테고리의 다른 글
메모리 가시성 (0) | 2024.09.20 |
---|---|
스레드 기본 정보 (1) | 2024.09.18 |
스레드 생성과 실행 (0) | 2024.09.16 |
래퍼, Class 클래스란 (0) | 2024.05.30 |
String이란 (0) | 2024.05.29 |