프로세스

자료구조

data structure 자료 구조 검색해보기

자원을 어떻게 효율적으로 관리하는지 알아둬야 함

프로세스 관리

프로세스 상태

생성 실행 준비 대기 종료


Process status - 프로세스 상태 전이 3가지

  • 프로세스 상태 전이 1) 디스패치(dispatch)⭐ 준비 리스트의 맨 앞에 있던 프로세스가 CPU를 점유하게 되는 것 즉, 준비 상태에서 실행 상태로 바뀌는 것
    dispatch(processname) : ready → running
    2) 보류(block) 실행 상태의 프로세스가 허가된 시간을 다 쓰기 전에 입출력 동작을 필요로 하는 경우 프로세스는 CPU를 스스로 반납하고 보류 상태로 넘어간다.
    block(processname) : running → blocked
    3) 깨움(wakeup)⭐ 입출력 작업 종료 등 기다리던 사건이 일어났을 때, 보류 상태에서 준비 상태로 넘어가는 과정
    wakeup(processname) : blocked → ready
    4) 시간제한(timeout) 운영체제는 프로세스가 프로세서를 독점해서 사용하지 못하게 하기 위해 clock interrupt를 두어서 프로세스가 일정 시간 동안만 프로세서를 점유할 수 있게 한다.
    timeout(processname) : running → ready



프로세스와 서비스

범위 2가지

  • 포그라운드 & 백그라운드 프로세스

    • 포그라운드 프로세스
      • 화면에서 프로그램이 실행되고 있는 것을 눈으로 직접 확인할 수 있는 상태의 프로세스 구동을 의미함
      • 즉, 사용자와 상호작용으로 작업을 수행하도록 해주는 프로세스를 포그라운드 프로세스라 함
    • 백그라운드 프로세스
      • 프로세스가 실행되었지만 직접 눈으로 확인되지 않는 프로세스를 의미함
      • 예) 백신 프로그램, 서버 데몬 등과 같이 화면에 나타나 눈에 보이지는 않지만 실행되는 프로세스를 백그라운드 프로세스라 함
  • 부모 프로세스와 자식프로세스

    • 부모 프로세스
      • 먼저 실행한 메인 프로그램
      • PPID(Parents Processor ID)를 가지고 있다.
      • 부모 프로세스를 종료하게 되면 종속된 자식 프로세스 또한 강제 종료됨.
    • 자식 프로세스
      • 나중에 메뉴에서 선택하여 실행한 프로그램을 라고 한다.
      • 자식 프로세스는 PID(Processor ID)를 가지고 있어 서로 구분 가능하다.
  • 좀비 프로세스

    • 자식 프로세스가 종료하였음에도 불구하고 PCB목록에 남아 있어 마치 살아 있는 프로세스인 것처럼 간주되는 프로세스
    • 좀비 프로세스가 발생하게 되는 이유
      • 부모 프로세스가 자식 프로세스의 종료를 기다린 뒤에 종료를 처리해 주는 정상적인 과정을 거치지 않고 부모 프로세스를 종료할 경우에 발생하게 된다.



프로세스 명령어

ps

현재 실행 중인 프로세스의 상태 확인

ps [옵션]

  • 옵션

    -a : 터미널에서 실행한 프로세스의 정보 출력

    -e : 시스템에서 실행 중인 모든 프로세스의 정보 출력

    -f : 프로세스에 대한 상세한 정보 출력

    -r : 현재 실행 중인 프로세스의 정보 출력

    -ef

    -au

    -aux

  • |로 연결해서 관련 정보 추출가능

    ps -ef | grep sshd   # sshd를 포함하고 있는? 어떤 프로세스가 실행중인지 여부 확인
                         # pid를 보기 위해
  • ps -aux 출력 정보

    -aux 옵션으로 확인할 수 있는 프로세스 정보의 각 필드

  • 패턴을 bash로 지정하여 프로세스의 정보를 검색하기 위해서는 ps 명령과 pgrep 명령을 옵션과 함께 선언하여 명령을 수행한다.
    ps -fp $(grep -x bash)  → 시스템에 접속된 모든 사용자 검색됨
    ps -fp $(grep -x cake bash) → cake 계정에 대한 정보만 검색
    ps -fp $(pgrep -x bash)


프로세스 종료

Kill 명령으로 프로세스 종료

프로세스를 종료하는 Kill 명령은 종료할 프로세스 인자에 지정한 숫자 메시지를 시그널로 보내 해당 프로세스를 종료한다. 프로세스에게 보내는 시그널은 인트럽트, 프로세스 종료, 강제 종료 등의 숫자로 기능이 지정되어 있으며 사용형식은 다음과 같다.

kill

프로세스 종료를 위해 지정한 시그널을 해당 프로세스에 전달

kill [시그널] PID

  • [시그널]

    -2 : 인터럽트 시그널 전송 (Ctrl + C) ⭐

    -9 : 프로세스 강제 종료 ( -1 : 강제종료 / -3 : 강제종료 quit ) 💥주의!

    -15 : 프로세스가 관련 파일을 정리 후 종료 (종료되지 않은 프로세스도 있음)⭐


top

시스템의 상태를 전반적으로 가장 빠르게 파악 가능 (CPU, Memory, Process)

ps와 top의 차이점


ptree

프로세스 간의 계층 구조를 출력하는 명령어

ptree -p           # 각 프로세스의 PID를 함께 출력

free

jobs

fg

나가기 : Ctrl + C

nohub



서비스

서비스와 프로세스의 차이

프로세스

  • 어떤 결과를 위해 프로그램을 실행하는 것을 의미
    • 포그라운드 프로세스
      • 인터넷, 카카오톡, 메모장, 그림판 등 눈에 보이는 프로세스
    • 백그라운드 프로세스
      • 백신 프로그램, 서버 데몬 등 - 직접 눈에 보이지는 않지만 실행되는 프로세스

서비스

  • 백그라운드에서 동작하는 기능을 관리하며 사용자가 명시적으로 시작하지 않아도 자동으로 실행된다.




응급복구🚨 ❤️‍🩹

[GRUB]

  • 리눅스 계열에서 가장 많이 사용하는 부트로더

[복구과정]

Virtual Box 부팅 화면에서 e 입력

ro를 rw로 변경

rhgb~ 삭제 후

init=/bin/sh
-> # whoami : root

→ # passwd : root

[부팅 설정 값?]

vi /etc/default/grub

설정값이 어디에 위치해 있는지 알기 !!

[부팅 설정 값을 변경하고 나면?]

grub2-mkconfig -o /boot/grub2/grub.cfg

[부트로더 계정 설정?]

vi /etc/grub.d/00_header

맨 밑줄에 추가

cat << EOF
set superusers="busan"
passwd grubuser 123456
EOF

grub2-mkconfig -o /boot/grub2/grub.cfg

다시 응급 복구 모드로 실행

사용자가 입력한 명령어를 터널에 전달한다 : 쉘 : 사용자와 가까이 있다.

하드웨어와 가까이 있는 것 : 터널






profile
개발자를 꿈꾸며

0개의 댓글