위로 아래

프로세스

프로세스 (Process)

  1. 실행 중인 프로그램
  2. 프로세스는 서로 자원을 공유 X
  3. 디스크에 있는 프로그램이 메모리에 적재되어 운영체제의 제어를 받는 상태를 의미
  4. 자신만의 메모리를 가지기 때문에 프로세스끼리는 서로 독립적 (자원 공유 X)

 

멀티태스킹 (multi-tasking)

  1. 대부분의 운영체제는 시스템 자원을 효율적으로 사용할 수 있도록 멀티태스킹 지원
  2. 여러 개의 작업(스레드)를 병렬로 처리하는 것
  3. 멀티 코어 CPU라면 실제로 다수의 작업을 동시에 병렬처리.
  4. 싱글 코어 CPU라면 운영체제가 CPU 시간을 분할해서 교대로 각 작업에 할당해 다수의 작업을 병행처리.
  5. 멀티스레딩 : 하나의 애플리케이션에서 동시에 수행할 수 있는 다수의 코드 블록이 있을 수 있다. 다수의 실행 흐름을 동시에 처리하는 것. 일종의 멀티태스킹이다.

 

 


스레드

스레드 (Thread)

  1. 하나의 작업, 하나의 실행 흐름
  2. 프로세스에 비해 실행 환경에 필요한 자원이 적기 때문에, 경량 프로세스라고도 부른다.
  3. 스레드끼리는 자원을 공유할 수 있다
  4. 프로세스 내부에 존재하며, 프로세스는 적어도 하나 이상의 스레드를 가진다.
  5. 하나의 프로세스에 여러 개의 스레드를 쓸 수 있다
  6. 모든 자바 애플리케이션은 적어도 메인 스레드라는 하나의 스레드를 가진다. 
  7. 하나의 애플리케이션을 다수의 스레드로 실행하려면 메인 스레드, 외에 다른 스레드(작업 스레드)를 별도로 생성해야 한다.

 

메인 스레드와 작업 스레드 

  1. 메인 스레드 : 자바 애플리케이션은 적어도 하나의 메인 스레드를 가진다.
  2. 작업 스레드 : 하나의 애플리케이션이 다수의 스레드를 실행하려면 필요한 메인 스레드 외의 스레드들

 

 

스레드 생성 주기

  1. 생성 -> 준비 -> 실행 -> 보류(입출력 후) 또는 대기 -> 다시 생성 반복
  2. 마지막엔 생성 -> 준비 -> 실행 -> 종료