>  기사  >  운영 및 유지보수  >  리눅스에서 프로세스는 무엇을 의미합니까?

리눅스에서 프로세스는 무엇을 의미합니까?

青灯夜游
青灯夜游원래의
2021-11-30 16:19:144627검색

프로세스는 Linux에서 실행되는 프로그램의 인스턴스이며 트랜잭션을 관리하는 기본 단위입니다. 프로세스에는 자체적인 처리 환경과 시스템 리소스가 있습니다. 프로세스 생성, 예약, 종료 등 프로세스 변경 상태가 변경됩니다.

리눅스에서 프로세스는 무엇을 의미합니까?

이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.

프로세스는 Linux에서 실행되는 프로그램의 인스턴스입니다.

리눅스 시스템에서 운영체제는 프로세스를 통해 작업을 하나씩 완료합니다. 프로세스는 트랜잭션을 관리하는 기본 단위입니다. 프로세스에는 자신만의 독립적인 처리 환경(예: 현재 필요한 환경 변수, 프로그램이 실행 중인 디렉터리는 어디에 있는지, 현재 프로그램을 실행 중인 사용자 등)과 시스템 리소스(예: 프로세서 CPU 점유)가 있습니다. , 메모리, I/O 장치, 데이터, 프로그램).

Linux 시스템에서 프로그램을 실행하면 시스템은 해당 프로그램에 대한 특정 환경을 생성합니다. 이 환경에는 시스템이 프로그램을 실행하는 데 필요한 모든 것이 포함되어 있습니다.

Linux에서 명령을 실행할 때마다 새 프로세스가 생성되거나 시작됩니다. 예를 들어 "ls -l" 명령을 실행하여 디렉터리 내용을 나열하려고 하면 프로세스가 시작됩니다. 화면에 두 개의 터미널 창이 표시되면 동일한 터미널 프로그램을 두 번 실행했을 수 있으며 두 개의 터미널 프로세스가 있게 됩니다.

각 터미널 창은 셸을 실행할 수 있으며, 실행 중인 각 셸은 프로세스입니다. Shell에서 명령을 호출하면 해당 프로그램이 새 프로세스에서 실행됩니다. 프로그램의 프로세스 실행이 완료되면 Shell의 프로세스가 다시 실행됩니다.

운영 체제는 PID 또는 프로세스 ID라는 숫자 코드를 통해 프로세스를 추적합니다. 시스템의 모든 프로세스에는 고유한 PID가 있습니다.

이제 Linux의 프로세스를 이해하기 위해 예를 사용합니다. 셸 명령줄에서 다음 명령을 실행합니다.

$ sleep 10 &
[1] 3324

프로그램이 10초 동안 기다리므로 현재 셸에서 sleep이라는 프로세스를 빠르게 검색합니다.

$ ps -ef | grep sleep
mozhiyan  3324  5712  cons1  17:11:46  /usr/bin/sleep

/usr/bin/sleep라는 프로세스가 실행 중인 것을 볼 수 있습니다. (이전 명령에서 얻은 것과 동일한 PID를 사용하여) 시스템.

이제 위의 sleep 명령을 3개의 서로 다른 터미널 창에서 병렬로 실행하려고 하면 위 명령의 출력은 다음과 유사합니다.

$ ps -ef | grep sleep
mozhiyan  896   5712  cons1  17:16:51  /usr/bin/sleep
mozhiyan  5924  5712  cons1  17:16:52  /usr/bin/sleep
mozhiyan  2424  5712  cons1  17:16:50  /usr/bin/sleep

Sleep 프로그램의 각 인스턴스가 별도의 프로세스를 생성하는 것을 볼 수 있습니다.

각 Linux 프로세스에는 상위 프로세스(ppid)의 ID인 또 다른 ID 번호가 있습니다. 시스템의 모든 사용자 프로세스에는 상위 프로세스가 있습니다.

"ps -f" 명령은 프로세스의 PID와 PPID를 나열합니다. 이 명령의 출력은 다음과 유사합니다.

$ ps -f
   UID     PID   PPID    TTY       STIME      COMMAND
mozhiyan  4124   228    cons0    21:37:09   /usr/bin/ps
mozhiyan   228   1      cons0    21:32:23   /usr/bin/bash

Shell 명령줄 프롬프트에서 실행하는 명령은 현재 Shell 프로세스를 상위 프로세스로 갖습니다. 예를 들어, Shell 명령줄 프롬프트에 ls 명령을 입력하면 Shell은 ls 명령을 실행합니다. 이때 Linux 커널은 Shell의 메모리 페이지를 복사한 다음 ls 명령을 실행합니다.

Unix에서는 모든 프로세스가 포크 및 실행 방법을 사용하여 생성됩니다. 그러나 이 접근 방식을 사용하면 시스템 리소스가 손실됩니다.

Linux에서는 쓰기 중 복사 메모리 페이지를 사용하여 포크 방식을 구현하므로 상위 프로세스의 메모리 페이지 테이블을 복사하는 데 필요한 시간과 메모리 손실만 발생시키고 하위 프로세스에 대한 고유 작업을 생성합니다. 구조.

기록 중 복사 모드는 새 프로세스를 생성할 때 불필요한 구조 복사본 생성을 방지합니다. 예를 들어 사용자가 Shell 명령줄 프롬프트에서 ls 명령을 출력하면 Linux 커널은 Shell 하위 프로세스를 생성합니다. 즉, Shell 프로세스가 상위 프로세스이고 ls 명령 프로세스가 하위 프로세스입니다. 명령 프로세스는 셸과 동일한 메모리 페이지를 가리키며, 하위 프로세스는 쓰기 시 복사 기술을 사용하여 ls 명령을 실행합니다.

프로세스 상태

각 Linux 프로세스에는 생성, 실행, 종료 및 정리와 같은 고유한 수명 주기가 있습니다. 각 프로세스에는 현재 프로세스에서 무슨 일이 일어나고 있는지 보여주는 자체 상태도 있습니다. 프로세스 생성, 예약, 종료 등 프로세스 변경 상태가 변경됩니다.

프로세스의 상태는 다음과 같습니다.

  • D(무중단 절전 상태) - 프로세스가 절전 모드이고 이벤트가 발생할 때까지 재개할 수 없습니다.

  • R(실행 상태) - 프로세스가 실행 중입니다.

  • S(절전 상태) - 프로세스가 실행 중이 아니지만 이벤트나 신호를 기다리고 있습니다.

  • T(중지 상태) - SIGINT 또는 SIGSTOP 신호와 같은 신호에 의해 프로세스가 중지됩니다.

  • Z(좀비 상태) - 21eba13340b1d3a525d7480ca5bbd370로 표시된 프로세스는 좀비 프로세스이며 상위 프로세스가 적절하게 파괴했기 때문에 남아 있습니다. 상위 프로세스가 종료되면 이러한 프로세스는 init 프로세스에 의해 삭제됩니다.

지정된 프로세스의 상태를 보려면 다음 명령을 사용할 수 있습니다.

ps -C processName -o pid=,cmd,stat

예:

$ ps -C sleep -o pid=,cmd,stat
      CMD       STAT
9434 sleep 20    S

관련 권장 사항: "Linux Video Tutorial"

위 내용은 리눅스에서 프로세스는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.