위로
아래
프로세스
프로세스 (Process)
- 실행 중인 프로그램
- 프로세스는 서로 자원을 공유 X
- 디스크에 있는 프로그램이 메모리에 적재되어 운영체제의 제어를 받는 상태를 의미
- 자신만의 메모리를 가지기 때문에 프로세스끼리는 서로 독립적 (자원 공유 X)
멀티태스킹 (multi-tasking)
- 대부분의 운영체제는 시스템 자원을 효율적으로 사용할 수 있도록 멀티태스킹 지원
- 여러 개의 작업(스레드)를 병렬로 처리하는 것
- 멀티 코어 CPU라면 실제로 다수의 작업을 동시에 병렬처리.
- 싱글 코어 CPU라면 운영체제가 CPU 시간을 분할해서 교대로 각 작업에 할당해 다수의 작업을 병행처리.
- 멀티스레딩 : 하나의 애플리케이션에서 동시에 수행할 수 있는 다수의 코드 블록이 있을 수 있다. 다수의 실행 흐름을 동시에 처리하는 것. 일종의 멀티태스킹이다.
스레드
스레드 (Thread)
- 하나의 작업, 하나의 실행 흐름
- 프로세스에 비해 실행 환경에 필요한 자원이 적기 때문에, 경량 프로세스라고도 부른다.
- 스레드끼리는 자원을 공유할 수 있다
- 프로세스 내부에 존재하며, 프로세스는 적어도 하나 이상의 스레드를 가진다.
- 하나의 프로세스에 여러 개의 스레드를 쓸 수 있다
- 모든 자바 애플리케이션은 적어도 메인 스레드라는 하나의 스레드를 가진다.
- 하나의 애플리케이션을 다수의 스레드로 실행하려면 메인 스레드, 외에 다른 스레드(작업 스레드)를 별도로 생성해야 한다.
메인 스레드와 작업 스레드
- 메인 스레드 : 자바 애플리케이션은 적어도 하나의 메인 스레드를 가진다.
- 작업 스레드 : 하나의 애플리케이션이 다수의 스레드를 실행하려면 필요한 메인 스레드 외의 스레드들
스레드 생성 주기
- 생성 -> 준비 -> 실행 -> 보류(입출력 후) 또는 대기 -> 다시 생성 반복
- 마지막엔 생성 -> 준비 -> 실행 -> 종료