프로세스 관리하기

Yeongsan Son·2021년 7월 15일
0

리눅스에서 프로세스 관리가 어떻게 이루어지는지 살펴보자.

먼저, 프로그램과 프로세스, 스레드의 용어를 다시 정리해 보겠다.

  • 프로그램:
    • 바이너리
    • 코드 이미지
    • 응용 프로그램
    • Appication
    • 실행 파일
  • 프로세스: 현재 실행중인 프로그램을 지칭
    • 메모리에 올리고 프로세스 상태 정보(PCB) 저장
  • 스레드: 프로세스 내에서 실행되는 흐름의 단위
    • 싱글스레드 프로세스: 단일 스레드
    • 멀티스레드 프로세스: 다중 스레드

프로세스 ID

프로세스 ID는 pid라 불리며, 프로세스는 각각의 특별한 pid를 가진다.

리눅스 환경에서 다음과 같이 명령어를 입력하면, pid의 최대값을 확인할 수 있으며, pid 값의 최대는 32768이다.

프로세스 계층

하나의 프로세스는 다른 프로세스의 공간을 복사해서 해당 공간에 실행 이미지를 덮어 씌우는 방식으로 프로세스를 생성한다.

  • parent process: 부모 프로세스
  • child process: 자식 프로세스
  • ppid: 부모 프로세스의 pid 값
    • ppid 값 확인

최초의 프로세스는 초기 프로세스로, pid 값은 1을 갖는다.

프로세스와 소유자 관리

리눅스 운영체제는 프로세스를 관리할 때, 권한 정보 때문에 소유자(UID)와 사용자의 그룹 정보(GID)를 매칭하고 파일은 inode로 프로세스는 pid로 구분해 관리한다.

  • sudo vi /etc/passwd: 소유자 목록을 확인할 수 있다

    • 연두색: 사용자의 홈 디렉토리
    • 노란색: 실행 쉘 프로그램의 종류
  • sudo vi /etc/shadow: 암호화된 password 확인

profile
매몰되지 않는 개발자가 되자

0개의 댓글