
멀티태스킹과 멀티 프로세싱
멀티태스킹
프로그램의 실행
프로그램을 구성하는 코드를 순서대로 CPU에서 연산(실행)하는 일이다.
코어가 하나있어도, 실행 시간을 분할하여 마치 동시에 실행되는 것 처럼 하는 기법을 시분할 기법이라고한다.
: 실제로 동시에 실행되는게 아니라 일정한 원리를 통해서 번갈아가 면서 실행한다.
이것을 운영체제가 결정하는(스케줄링) 이라고 한다.
멀티프로세싱
코어가 여러개일때?
cpu안에는 실제 연산을 처리할 수 있는 코어라는 것이있다.
tip. 요즘은 cpu안에 2개이상의 코어가 들어가있다.
2개가 일정한 원리를 가지고 수행하면 더 빠르다.

멀티 프로세싱:
- cpu를 사용하여 동시에 여러가지 작업을 수행.
- 하드웨어 기반으로 성능 향상
- 다중 코어 프로세서를 사용하는 현대 컴퓨터 시스템
멀티 테스킹:
- 단일 CPU가 여러작업을 동시에 수행하는 것처럼 보이게 하는 것
- 소프트웨어 기반으로 CPU 시간을 분할하여 각 작업에 할당한다.
절차:
- 프로그램은 실행하기 전까진 파일이다.
- 실행하면 프로세스가 만들어지고 프로그램이 실행된다.
- 운영체제 안에서 실행중인 프로그램을 프로세스.
- 프로세스는 실행중인 프로그램의 인스턴스
- in java 클래스는 프로그램이고, 인스턴스는 프로세스이다.
구조
코드, 데이터(전역 정적변수), 힙(동적), 스택(주소)
쓰레드
프로세스는 하나 이상의 스레드를 포함한다.
단순하고 가볍다.
프로세스의 코드, 데이터, 힙은 공유메모리이다.
스택영역은 개별로 가져간다.
프로세스
실행환경과 자원을 제공하는 컨테이너 역할
스레드
cpu를 사용하여 한줄 한줄 실행
ex) 하나의 프로그램도 여러개의 동시작업이 필요하다.
워드 프로그램 무서를 편집하면서 문서가 자동으로 저장되고 맞춤법 검사도 함께 수행된다.
여러 스레드가 스케줄링 큐안에 들어가서 cpu코어에 들어가기전에 대기를 한다.
컨텍스트 스위칭
이전에 실행하던 작업을 메모리에 저장시킨 후 작업을 변경
tip. 멀티스레드는 대부분 효율적이지만, 컨텍스트 스위칭 과정을 고려해야한다.
ex)
- cpu 4개 스레드 2개 -> cpu를 100% 활용할 수 없지만, 스레드가 몇 개 없어서 컨텍스트 스위칭 비용이 준다.
- cpu 4개 스레드 100개 -> cpu를 100% 활용할 수 있지만, 컨텍스트 스위칭 비용이 늘어난다.
- 4개 4개
가장 이상적이다 cpu를 100% 활용 할 수 있고, 컨텍스트 스위칭 비용도 자주 발생하지않는다.

그럼 cpu와 스레드를 일치시켜야하는가?
cpu 바운드 작업 vs I/O 바운드 작업을 고려해야한다.
각각의 스레드가 하는 작업은 크게 2가지로 구분할 수 있다.
일반적인 웹서버는 IO작업이 훨신 많다. ex) DB기다리고, 요청 기다리고 등등
즉
CPU- 바운드 작업이 많은지 I/O-바운드 작업이 많은지 확인하고, I/O-바운드 작업이 많다면 성능 테스트를 통해서 CPU 갯수보다 더 많게하고 쓰레드를 몇개를 설정할지 판단해야한다.

'JAVA' 카테고리의 다른 글
태태코딩 - 김영한 자바 고급[스레드] (1) | 2025.02.08 |
---|---|
태태개발일지 - 멀티쓰레드 (1) | 2025.02.05 |
태태개발일지 - 레코드 (1) | 2024.12.25 |
태태개발일지 - equals and hashcode 동시 재정의? (1) | 2024.12.05 |
태태개발일지 - Exception (2) | 2024.10.14 |