프로그램: 어떤 작업을 위해 운영체제 위에서 실행할 수 있는 파일
프로세스: 운영 체제 위에서 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것
프로세서: 프로세스가 동작될 수 있도록 하는 하드웨어(=CPU 코어)
메모리에는 4가지 영역이 있다.
여기서 PCB(Process Control Block)란
특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조이다.
프로세스는 CPU를 할당 받아 작업을 처리하다가도 프로세스 전환이 발생하면 진행하던 작업을 저장하고 CPU를 반환해야 하는데, 이 때 작업의 진행 상황을 모두 PCB에 저장하게 된다.
그리고 다시 CPU를 할당받게 되면 PCB에 저장되어 있던 내용을 불러와 이전에 종료됐던 시점부터 다시 작업을 수행한다.
- 프로세스 식별자(Process ID, PID) : 프로세스 식별번호
- Process State : new, ready, running, waiting, terminated 등의 상태를 저장
- Program Counter : 프로세스가 다음에 실행할 명령어의 주소
- CPU 레지스터
- CPU 스케쥴링 정보 : 프로세스의 우선순위, 스케줄 큐에 대한 포인터 등
- 메모리 관리 정보 : 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함
- 입출력 상태 정보 : 프로세스에 할당된 입출력 장치들과 열린 파일 목록
- 어카운팅 정보 : 사용된 CPU 시간, 시간제한, 계정번호 등
: CPU가 한 프로세스에서 다른 프로세스로 전환할 때 발생하는 일련의 과정
(CPU는 한 번에 하나의 프로세스만 실행할 수 있다.)
- 프로세스 1이 실행상태에 있으며 cpu에 적재되어 있다.
프로세스2는 준비상태- 프로세스 2를 실행하기 위해서는 프로세스1을 준비상태로 내리고 프로세스2를 cpu에 적재한다.
해당 과정 반복...
: 프로세스의 실행 단위
- 프로세스 내의 주소 공간이나 자원을 공유할 수 있다.
- 하나의 프로세스 안에 다수의 스레드가 있을 때 공유되는 자원이 있기 때문에 경량화된 프로세스이다.
공유되는 자원이 있기 때문에 컨텍스트 스위칭이 일어날 때 캐싱 적중률이 올라간다.
쉽게 말해 모조리 다 빼고 다시 다 넣을 필요가 없다.
멀티 프로세스와 멀티 스레드는 모두 처리 방식의 일종이다.
한 어플리케이션에 대한 두 가지 다른 처리방식
동시성 - 하나의 코어에서 짧은 순간에 cpu 시간을 분할하여 동시에 하는 것처럼 보이게 한다.
병렬 처리 - 물리적으로 여러 코어를 사용해서 다수의 실행 단위를 한순간에 처리할 수 있게 해준다.
- 프로세스는 프로그램이 실행된 것이다.
- 스레드는 한 프로세스 내에서 나뉘어진 하나 이상의 실행 단위이다.
- 한 어플리케이션에 대한 작업을 동시에 하기 위해서는 2가지 처리 방식(멀티 프로세스, 멀티 스레드)이 있다.
- 동시에 실행이 되는 것처럼 보이기 위해서 실행 단위는 시분할로 cpu를 점유하며 context switching을 한다.
- 멀티 프로세스는 독립적인 메모리를 가지고 있지만 멀티 스레드는 자원을 공유한다. 그것에 따른 각각의 장단점이 있다.
- 멀티 코어는 하드웨어 측면에서 실행 단위를 병렬적으로 처리할 수 있도록 여러 프로세서가 있는 것이다.