[Linux10] PCB(Process Control Block)

Sinaenjuni·2023년 7월 8일
0

Linux

목록 보기
11/11

proc (process information pseudo-filesystem)

프로세스 정보를 담고있는 FS인척 하는 가짜 파일시스템이다. 프로세스와 관련된 시스템 하드웨어, 커널 등의 광범위한 정보를 가지고 있다.

PCB(Process Control Block)은 프로세스 관리를 위한 메타 정보를 가지고 있다.

  • proc이 마운트 되어있는 것을 확인할 수 있다.

  • /proc 디렉터리 안을 확인하면 숫자로 된 디렉터리들을 확인할 수 있으며, 이는 PID에 해당하며 해당 프로세스의 정보들을 가지고 있는 것이다. 그 외 영문으로 된 파일들은 시스템과 관련된 프로세스의 정보들을 가지고 있는 파일들이다.

  • /proc 디렉터리 바로 아래에 있는 파일들의 이름과 역할을 나타낸다.

process

프로세스는 첫 번째 프로세스를 제외하고는 모두 fork로 생성된다. 이 과저에서 복제를 수반한다. 또한 프로세스는 실행 코드(기계어)에 해당하는 실행 이미지와 프로세스를 관리하기 위한 정보인 메타 정보로 구성된다. 메타 정보는 PCB에 저장된다.

PCB에는 프로세스 아이디, 날짜, 시간, 권한, 우선순위 등의 정보를 가지고 있다

systemctl

systemctl은 systemd를 관리하는 매니저 프로그램으로 service 및 resource의 상태를 확인하거나 변경할 수 있다. systemd는 service, socket, busname. t arget, device, path 등의 unit으로 관리한다.

systemctl -t(type) help (unit의 종류를 확인하는 명령)

systemctl [command] [options…]

systemctl -t service —all

systemctl -t service —all —state=dead

systemctl <command> [arg…]

  • systemctl status [NAME …] : 유닛의 상태를 출력한다.

  • systemctl start [NAME …] : 유닛을 시작한다.
  • systemctl stop [NAME …] : 유닛을 정지한다.
  • systemctl is-active [NAME …] : 유닛의 active 상태를 출력한다.
  • systemctl is-failed [NAME …] : 유닛의 failed 여부를 확인한다.
  • systemctl kill [NAME …] : 종료 시그널을 보낸다.
  • systemctl reset-failed : 잘못 종료된 프로세스의 경우 무한 재시작을 막기위해 해당 명령을 통해 조치를 취해야 한다.

  • systemd의 설정을 바꾸고 나면, daemon-reload를 꼭 해야한다.

target unit

unit들을 논리적으로 묶어놓은 그룹이라고 볼 수 있다. 시스템 시작 후 단계별로 기능을 묶어놓은 것이 대표적인데, 예를들어 1단계에서 시스템 초기화, 2단계는 네트워크 초기화, 3단계는 데스크탑 시스템 시작 등이 될 수 있다.

또한, 동적 상태를 기준으로 하기 때문에 현재 동작중인 상태와 의존성에 따라 실행 순서가 생략되거나 변경될 수 있으며, parallel하게 동작하는 것이 큰 특징이다.

systemctl isolate <target>

target을 변경하는 명령이다.

  • systemctl isolate graphical.target
  • systemctl isolate multi-user.target
  • systemctl isolate poweroff.target
  • systemctl set-default graphical.target : 시작시 기본 설정을 바꾸는 명령이다.
  • systemctl set-defualt multi-user.target
  • systemctl get-default : 현재 설정된 기본값을 확인하는 명령이다.

systemd-analyze [options] [command]

systemd의 구동을 분석하는 명령으로 각 서비스의 시간을 분석 및 시각화한다.

  • 시스템 부팅에 걸린 시간을 알려준다.

  • 서비스별로 작업 시간을 알 수 있다. 오래걸린 서비스를 확인하거나 문제가 있는 서비스를 찾을 수 있다.

  • default target을 시작으로 시스템을 실행하는데 들어간 시간이 가장 오래 걸린 target들만 모아서 보여준다.

  • target의 수행 시간들을 그림으로 출력해서 확인할 수 있다.

systemctl-analyze set-log-level <loglevel>

  • systemctl LogLevel show (현재 지정된 로그 수준을 출력한다.)
  • loglevel = emeg, alert, crit, err, warning, notice, info, debug

0개의 댓글