실제 프로세스 관리 응용 프로그램을 살펴보기 전에, 리눅스 프로세스가 무엇이며 어떻게 작동하는지 이해하는 것이 필수적입니다. 이 주제는 세부 사항을 탐색하면서 복잡하게 느껴질 수 있으므로, 필요하다면 나중에 이 강의를 다시 살펴보셔도 좋습니다.
리눅스 프로세스란 무엇인가
프로세스는 실행 중인 프로그램입니다. 더 정확히 말하면, 시스템이 메모리, CPU 시간, I/O 와 같은 리소스를 할당한 실행 중인 프로그램의 인스턴스입니다. 예를 들어, 세 개의 터미널 창을 열고, 그중 두 개에서 인자 없이 cat 명령을 실행한 다음 (표준 입력을 기다리며 프로세스를 활성 상태로 유지함), 세 번째 창을 사용하여 ps aux | grep cat을 실행하면 두 개의 별도 cat 프로세스가 표시됩니다. 각 프로세스는 동일한 프로그램의 별도 인스턴스이며, 고유한 프로세스 ID 와 리소스 할당을 가집니다.
프로세스 관리에 대한 커널의 역할
리눅스 커널은 모든 프로세스 관리를 담당합니다. 프로그램을 실행하면 커널은 해당 코드를 메모리에 로드하고, 필요한 시스템 리소스를 할당하며, 이를 프로세스로 추적하기 시작합니다. 커널은 각 프로세스에 대해 다음을 포함한 상세 정보를 유지 관리합니다.
- 프로세스의 상태
- 프로세스가 사용 중이거나 수신하는 리소스
- 프로세스 소유자
- 시그널 처리 (나중에 자세히 설명)
- 그리고 기본적으로 그 외 모든 것
모든 활성 프로세스는 시스템 리소스를 놓고 경쟁합니다. 커널은 스케줄러 역할을 하여 각 프로세스가 우선순위와 필요에 따라 공정한 리소스 할당을 받도록 보장합니다. 프로세스가 작업을 완료하거나 종료되면 커널은 사용 중이던 리소스를 회수하여 다른 프로세스가 사용할 수 있도록 합니다.