멀티태스킹
CPU가 매우 빠르게 두 프로그램의 코드를 번갈아 수행
>> 두 프로그램이 동시에 실행되는 것처럼 느낌

각 프로그램의 실행 시간을 분할해서 마치 동시에 실행되는 것처럼 하는 기법
>> 시분할(Time Sharing, 시간 공유) 기법
하나의 컴퓨터 시스템이 동시에 여러 작업을 수행하는 능력
>> 멀티 태스킹
CPU에 어떤 프로그램이 얼마만큼 실행될지는 운영체제가 결정
>> 스케쥴링
멀티 프로세싱

컴퓨터 시스템에서 둘 이상의 프로세서(CPU 코어)를 사용해서 여러 작업을 동시에 처리하는 기술
프로세스

프로그램을 실행하면 프로세스가 만들어지고 프로그램이 실행됨
>> 운영체제 안에서 실행중인 프로그램을 프로세스
프로세스
>> 실행 중인 프로그램의 인스턴스
>> 서로 격리되어 관리
>> 다른 프로세스에 영향 x
프로세스의 메모리 구성
>> 코드 섹션 : 실행할 프로그램의 코드가 저장되는 부분
>> 데이터 섹션 : 전역 변수 및 정적 변수가 저장되는 부분
>> 힙 : 동적 할당 메모리 영역
>> 스택 : 메서드 호출 시 생성되는 지역 변수와 반환 주소가 저장되는 영역
스레드(Thread)
메모리 구성
>> 공유 메모리 : 같은 프로세스의 코드 섹션, 데이터 섹션, 힙은 프로세스 안의 모든 스레드가 공유
>> 개별 스택 : 각 스레드는 자신의 스택을 가짐
프로그램 실행?
>> 운영체제는 먼저 디스크에 있는 파일인 프로그램을 메모리로 불러오면서 프로세스 만듦
>> 프로세스 안에 있는 코드가 한 줄씩 실행되는 것
>> 프로세스의 코드를 실행하는 흐름을 스레드라 함
프로세스 내에서 실행되는 작업의 단위
>> 하나의 프로세스 안에는 최소 하나의 스레드 존재
컨텍스트 스위칭
멀티스레드인 경우 한 스레드를 실행하다가 다른 스레드를 실행하기 위해 멈추는 시점에
CPU에서 사용하던 값들을 메모리에 저장하고 이후 다시 실행할 때 CPU에 다시 불러와야 함
멀티스레드는 대부분 효율적이지만 컨텍스트 스위칭 과정이 필요해서 항상 효율적이진 않음
출처 : 김영한, 김영한의 실전 자바 - 고급 1편
'Java' 카테고리의 다른 글
Java / 스레드 제어와 생명 주기 (0) | 2025.05.15 |
---|---|
Java / 스레드 생성과 실행 (0) | 2025.05.12 |
Java / 컬렉션 프레임워크 - 순회, 정렬 (0) | 2025.03.11 |
Java / 컬렉션 프레임워크 - Map, Stack, Queue (0) | 2025.03.09 |
Java / 컬렉션 프레임워크 - Set (0) | 2025.03.08 |