어떤 작업을 실행할 수 있는 파일
파일이 저장장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태 ⇒ 즉 사용자가 눌러서 실행하기 전의 파일. 코드 덩어리
운영체제로부터 시스템 자원을 할당받는 작업의 단위
프로그램을 실행하는 순간 파일은 컴퓨터 메모리에 올라가게 되고(⇒ 동적인 상태). 이 실행중인 프로그램을 프로세스라고 한다.
운영체제는 프로그램을 실행하기 위해 프로그램을 메모리의 적당한 위치로 가져온다. 그리고, 운영체제는 프로세스를 관리하기 위해 PCB(Process Control Block)를 생성한다.
생성 상태 : 프로그램을 메모리에 가져와 실행 준비가 완료된 상태, PCB가 생성된다.
준비 상태 : 실행을 기다리는 모든 프로세스가 자기 순서를 기다리는 상태
실행 상태 : 선택된 프로세스가 CPU를 사용하는 상태
대기 상태 : 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 때 까지 기다리는 상태
완료 상태 : 프로세스가 종료된 상태, PCB가 삭제된다.
프로세스는 운영체제로부터 시스템 자원을 할당받는 작업의 단위가 프로세스라고 했다.
프로세스는 각각 별도의 독립된 주소공간 할당 . 독립된 메모리 영역 할당받는다
프로세스가 할당받은 자원을 이용하는 실행의 단위.
스레드는 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 한다.
프로세스는 단순한 껍데기일 뿐, 실제 작업은 스레드가 담당한다. 프로세스 생성 시 하나의 주 스레드가 생성되어 대부분의 작업을 처리하고 주 스레드가 종료되면 프로세스도 종료된다.
모든 프로세스는 한 개 이상의 스레드(메인 스레드)가 존재한다.
이때 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스라고 한다.
스레드는 프로세스 내에서 각각 Stack만 따로 할당받는다. 각각의 스레드는 별도의 Register 와 Stack 을 갖고 있지만, Code, Data, Heap 영역은 공유한다. 따라서 어떤 스레드에서 오류가 발생한다면 같은 프로세스 내의 다른 스레드 모두가 강제로 종료된다. 또한 한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드(Sibling Thread)도 그 변경 결과를 즉시 확인할 수 있다.
Context Switching : 프로세스의 상태 정보를 저장하고 복원하는 일련의 과정
동작 중인 프로세스가 대기하면서 해당 프로세스의 상태를 보관하고, 대기하고 있던 다음 순번의 프로세스가 동작하면서 이전에 보관했던 프로세스 상태를 복구하는 과정을 말함
→ 프로세스는 각 독립된 메모리 영역을 할당받아 사용되므로, 캐시 메모리 초기화와 같은 무거운 작업이 진행되었을 때 오버헤드가 발생할 문제가 존재함