티스토리 뷰
* 멀티태스킹
- 단일 CPU가 여러 작업을 동시에 수행하는 것처럼 보이게 하는 것
- 소프트웨어 기반으로 cpu 시간을 분할하여 각 작업에 할당
- ex) 여러 애플리케이션이 동시에 실행되는 환경
* 스케줄링
- cpu에 어떤 프로그램이 얼마만큼 실행될지 운영체제가 결정하는 것
- 이때 단순 시간이 아닌 우선순위와 최적화 기법을 사용한다.
* 멀티프로세싱
- 여러 CPU코어(프로세서)를 사용하여 동시에 여러 작업을 수행
- 하드웨어 기반으로 성능 향상
- ex) 다중 코어 프로세서를 사용하는 현대 컴퓨터 시스템
* 프로세스
- 운영체제 안에서 실행중인 프로그램의 인스턴스
- 각 프로세스는 독립적인 메모리 공간을 갖고 운영체제에서 별도의 작업 단위로 분리해서 관리된다.
- 프로세스가 서로의 메모리에 직접 접근할 수 없다. 따라서 특정 프로세스에 심각한 문제가 발생하면 해당 프로세스만 종료되고 다른 프로세스에 영향을 주지 않는다.
- 메모리 구성: 코드섹션, 데이터섹션, 힙, 스택
- 프로세스는 하나 이상의 스레드를 반드시 포함한다.
- 실행환경과 자원을 제공하는 컨테이너 역할
* 스레드
- 프로세스 내에서 실행되는 작업의 단위, 프로세스의 코드를 실행하는 흐름(Thread)
- 프로세스가 제공하는 동일한 메모리 공간을 공유
- 단순하고 생성 및 관리가 단순하고 가볍다.
- 공유 메모리와 개별 스택을 갖는다.
- CPU를 사용해서 코드를 하나하나 실행
* 컨텍스트 스위칭
- CPU코어는 1개인데 스레드는 2개인 경우 연산하면 중간중간 스위칭 비용 발생
- CPU 바운드 작업: 연산 능력을 많이 요구하는 작업
- *I/O 바운드 작업: 디스크, 네트워크, 파일 시스템 등과 같은 입출력 작업을 많이 요구하는 작업
=> I/O 작업이 완료될 때까지 대기 시간 많이 발생
=> CPU는 상대적으로 대기 상태에 있는 경우가 많고 스레드가 CPU를 사용하지 않음
ex) 데이터베이스 쿼리, 파일 읽기/쓰기, 네트워크 통신, 사용자 입력 처리
=> 최적화: CPU 코어 수 보다 많은 스레드를 생성하고 CPU를 최대한 사용할 수 있는 숫자까지 스레드를 생성
출처: 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 인프런 강의
'JAVA' 카테고리의 다른 글
[멀티스레드와 동시성] - 2. 스레드 생성과 실행 (0) | 2024.07.25 |
---|---|
자바 채팅 프로그램 (0) | 2024.05.29 |
다형성2 (0) | 2024.01.15 |
다형성1 (0) | 2024.01.07 |
1. JDK, JRE, JVM (0) | 2023.11.29 |