프로세스란??
프로세스는 실행중인 프로그램입니다. 또한 운영체제에서 기본적인 스케쥴링 단위이기도 합니다.
일반적으로 프로세스는 아래의 5개의 원소로 구성된 실행중인 프로그램입니다.
- 프로그램의 현재 context, 즉 프로그램의 현재 실행 상태.
- 프로그램의 현재 작업중인 디렉토리(pwd)
- 프로그램이 접근할수 있는 파일과 디렉토리들.
- 프로그램의 credential 또는 접근 권한(파일 모드, ownership 등)
- 프로세스에 할당된 메모리와 다른 시스템 리소스들
리눅스도 기본적인 스케쥴링 단위는 프로세스입니다. 커널은 프로세스를 사용해 CPU나 다른 시스템 리소스에 접근하는 것을 통제합니다. 리눅스 프로세스는 어떤 프로그램이 CPU에서 동작할지, 어떠한 특성을 가지고 얼마나 오래 동작할지를 결정합니다. 커널의 스케쥴러는 time slice라고 불리는 CPU execution time을 프로세스들에게 할당하여 time slice가 끝나면 차례로 프로세스들이 선점할 수 있도록 합니다.
time slice는 작아서 하나의 프로세서만 존재하는 시스템에서 여러개의 프로세스가 동시에 동작하는 것처럼 보이게 합니다. 각각의 프로세스는 또한 스스로에 대한 충분한 정보를 가지고 있어, 커널이 필요에 따라 프로세스들을 교체할 수 있습니다.