프로세스 (process)

컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
태스크(task)와 같은 의미로 사용
프로그램과 프로세스는 혼용되어 사용된다.
  -프로그램은 하드디스크 등에서 저장되어 있는 실행코드의 성격이 강함
  -프로세스는 프로그램을 구동하여 메모리에 적재된 상태로 실행되는 하나의 작업 단위

멀티프로세싱 - 여러 개의 프로세서를 사용하는 것
멀티태스킹    - 같은 시간에 여러 개의 프로그램을 띄우는 시분할 방식

프로세스의 상태

생성(new): 프로세스가 생성되고 있는 상태

실행(runnig):프로세스가 CPU를 통해 명령어가 실행되는 상태

준비(ready):프로세서가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태
      CPU가 할당되기를 기다리고 있는 상태

대기(waiting):어떤 사건을 기다리고 있는 상태

종료(terminated):프로세스의 실행이 종료



스레드(thread)

프로세스 내에서 실행되는 흐름의 단위
일반적으로 한 프로그램은 하나의 스레드를 가지고 있다.
 

멀티스레드 - 둘 이상의 스레드를 동시에 실행

플로세스와 스레드의 차이 

메모리 공유 
 - 멀티프로세스에서 각 프로세스는 독립적으로 실행되며 각각 별개의 메모리를 차지
 - 멀티스레드는 프로세스 내의 메모리를 공유해 사용 가능 

전환 속도
 - 프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠르다.