Skip to content

Latest commit

 

History

History
80 lines (73 loc) · 3.27 KB

File metadata and controls

80 lines (73 loc) · 3.27 KB

4. 시스템 기본 프로그래밍 - 2

1. 프로세스

  1. 프로세스 vs 바이너리
  • 코드 이미지 또는 바이너리 : 실행파일
  • 실행 중인 프로그램 : 프로세스
    • 가상 메모리 및 물리 메모리 정보
    • 시스템 리소스 관련 정보
    • 스케줄링 단위
  1. 다양한 프로세스 실행 환경
  • 리눅스는 기본적으로 다양한 프로세스가 실행
    • 유닉스 철학
    • 여러 프로그램이 서로 유기적으로 각자의 일을 수행하면서 전체 시스템이 동작하도록 하는 모델

2. foreground & background 프로세스

  1. foreground process
  • Shell 에서 해당 프로세스 실행을 명령한 후 해당 프로세스 수행 종료까지 사용자가 다른 입력을 하지 못하는 프로세스
  1. background process
  • 사용자 입력과 상관없이 실행되는 프로세스
    • shell 에서 해당 프로세스 실행시 맨뒤에 & 를 붙여줌
    # find / -name '*.py' > list.txt &
    [1] 57 <- process id
    
  1. foreground process 제어
  • [ctrl] + z
    • foreground 프로세스를 실행 중지 상태(suspend 모드)로 변경
  • 맨 마지막 [ctrl] + z 로 중지된 프로세스는 bg 명령으로 background 프로세스로 실행될 수 있음
  • bg (job_number) -> 해당 프로세스 백그라운드로 동작
  • jobs 명령어
    • 백그라운드로 진행 또는 중지된 상태로 있는 프로세스를 보여줌
  • [ctrl] + c
    • 프로세스 작업 취소(해당 프로세스는 완전히 종료)

    운영체제 소프트웨어 인터럽트가 해당 프로세스에 보내져서 프로세스 제어가 가능

3. 프로세스 상태 확인 - ps 명령어

  • 사용법 : ps [option(s)]
    # ps -al
    # ps aux
    # ps aux | more
    
  • option(s)
-a : 시스템을 사용하는 모든 사용자의 프로세스 출력 (보통 aux 와 같이 u, x 옵션과 함께 사용)
-u : 프로세스 소유자에 대한 상세 정보 출력
-l : 프로세스 관련 상세 정보 출력
-x : 터미널에 로그인한 후 실행한 프로세스가 아닌 프로세스들로 출력
    주로 데몬 프로세스(daemon process) 까지 확인하기 위해 사용
    본래 ps 명령은 현재 shell 에서 실행한 프로세스들만 보여주기 떄문에 이 옵션을 사용
-e : 해당 프로세스와 관련된 환경 변수 정보도 함께 출력
-f : 프로세스 간 관계 정보도 출력
  • daemon process

    • 사용자 모르게 시스템 관리를 위해 실행되는 프로세스로 보통 시스템이 부팅될 때 자동 실행(예: ftpd, inetd 등)
  • 프로세스 출력 정보

USER : 프로세스를 실행시킨 사용자 ID
PID : 프로세스 ID
%CPU : 마지막 1분 동안 프로세스가 사용한 CPU 시간의 백분율
%MEM : 마지막 1분 동안 프로세스가 사용한 메모리 백분율
VSZ : 프로세스가 사용하는 가상 메모리 크기
RSS : 프로세스에서 사용하는 실제 메모리 크기
STAT : 프로세스 상태
START : 프로세스가 시작한 시간
TIME : 현재까지 사용된 CPU 시간(분:초)
COMMAND : 명령어

4. 프로세스 중단 - kill 명령어

  • 사용법
# kill % 작업번호(job number)
# kill 프로세스ID (pid)
# kill -9 pid
  • 작업 강제 종료 옵션 : -9