프로세스의 정의

  • 실행중인 프로그램
  • PCB(Process Control Block)를 지닌 프로그램
  • 프로그램 카운터를 지닌 프로그램
  • 능동적 개체로 순차적으로 수행하는 프로그램

프로세스의 생성

  • 시스템 호출 방법
    • fork : 새로운 프로세스 위해 메모리를 할당받아 복사본 형태의 프로세스를 실행하는 형태로 기존의 프로세스는 그대로 실행됨, 새롭게 생성된 프로세스는 원래 프로세스랑 똑 같은 코드를 기반으로 실행됨
      따로 말이 없을 경우 fork형태 수행
    • bash 라는 프로세스를 할당받고 명령내리면 fork형태로 실행
    • exec : 원래의 프로세스를 새로운 프로세스로 대체하는 형태로 호출한 프로세스의 메모리에 새로운 프로세스의 코드를 덮어씌워버린다 새로운 프로세스를 위한 메모리를 할당하지않고 exec에 호출된 프로세스만 메모리에 남겨둔다

프로세스의 종류

  • 포어그라운드 : 보통 셸에서 명령실행시 해당 프로세스가 종료될때까지 기다리는프로세스
  • 백그라운드 : 뒤에서 실행시키는 프로세스 , 다중작업을 수행시 유용, 작업번호[1]로 나타내고 뒤에는 PID가 붙음

멀티태스킹과 작업변환

  • 다수의 프로그램들을 백그라운드 프로세스로 실행시킨 상태에서 추가로 포어그라운드 프로세스로 다른 작업을 수행하는 것
  • [CTRL]+[z] : 포어 프로세스를 백그라운드 프로세스로 전환시키기
  • ”jobs “: 작업상태 확인하기
  • bg : 포그라운드 프로세스를 일시중단된 상태에서 백그라운드 프로세스로 전환
  • fg [%]작업번호 : 백그라운드 프로세스를 포어그라운드 프로세스로 전환하기
  • 나타나는 결과에서 +는 가장늦게 실행한 프로세스 작업번호없이 fg명령수행하면 이 작업이 포어그라운드 프로세스로 전환됨
  • 결과에서 -가 붙으면 +붙은작업 다음우선순위 작업

시그널

  • 특정 프로세스가 다른 프로세스에게 메시지를 보낼 때 시그널이 발생한다
  • kill-l’에서 명령어 확인가능
  • 일반적으로 사용하는 시그널
  • 종류
    이름: 설명
    SIGHUP : 로그아웃과 같이 터미널 접속이 끊겼을때 보냄
    SIGINT: 키보드로부터 오는 인터럽트 시그널로 실행을 중시 [ctrl]+[c]입력시 보냄
    SIGQUIT : 키보드로부터 오는 실행 중지 시그널 [ctrl]+[]입력시 보냄
    SIGKILL : 무조건 종류, 프로세스강제종료할때 보냄
    SIGTERM : 정상종류 시그널로 kill명령의 기본 시그널
    SIGCONT : STOP시그널 등에의해 정지된 프로세스를 다시 실행시킬 때 보냄
    SIGSTOP : 터미널에서 입력된 정지 시그널
    SIGTSTP: 실행정지후 다시 실행을 계속하기위해 대기시키는 시그널 [ctrl]+[z]입력시 보냄

프로세스 관리의 이해

데몬

  • 데몬 - 주기적이고 지속적인 서비스를 요청하기위해 계속 실행되는 프로세스로 백그라운드로 실행된다. 주로 이름에 d를 붙임
  • standalone방식 - 프로세스의 상태를 확인하는 ps명령으로 확안한다. 보통 부팅시실행되어 해당 프로세스가 메모리에 계속 상주하면서 클라이언트의 서비스 요청을 처리하는 방식
  • inet방식: 프로세스가 메모리에 항상 상주하는 것이아니라 클라이언트의 서비스 요청이 들어왔을때 관련 프로세스를 실행 시키고 접속 종료후에는 자동으로 프로세스를 종료시키는 방식

데몬의 실행

  • 주기적이고 지속적인 서비스 요청을 처리하기 위한 프로세스
  • /etc/rc.d/init.d 디렉터리
    • 서비스에 대해 시작과 중지를 시킬수있는 스크립트를 포함하고있다
    • service : /etc/rc.d/init/d 디렉터리에 존재하는 스크립트를 쉽게 시작하거나 중지시킬수 있는 스크립트로 절대경로로 전부 입력하는 대신 간단히 서비스명과 인자값을 지정해 실행가능
  • rc0.d~rc6.d 디렉터리
    • init프로세스가 실행 레벨 n을 시작하면 rcn,d디렉터리에 존재하는 모든 링크를 점검한다
    • 기본형식 : [K|S] [번호] [init.d_이름]
    • 의미
      • K : Kill을 의미하며 실행되지 않을 서비스를 말한다
      • S : Start를 의미하며 해당 실행 레벨에서 실행되어야하는 서비스를 말한다
      • 번호 : 순차적인 번호로 시작이나 중지순서를 나타내는 번호이다
      • init.d_이름 : 관습에 따라 링크가되는 스크립트명을 사용

데몬관련 유틸리티

  • ntsysv
    • 텍스트 환경에서 커서를 이용하여 부팅중 자동으로 실행되는 서비스를 설정할 수 있는 유틸리티
    • 사용법 : #ntsysv[option]
    • 주요옵션
      • level 실행레벨: 특정실행 레벨을 편집 없을 경우 현재 구동중인 레벨 의 서비스 데몬 설정
  • chkconfig
    • 텍스트 기반의 명령 프로그램으로 실행 레벨에 따른 서비스의 on off설정 리스트를 출력하거나 설정
    • 사용법 : #chkconfig option [service]
    • 주요옵션
      • --list : 각실행 레벨에서의 서비스의 설정 상태를 보여준다
      • --add/del 서비스: 서비스를 추가 /삭제
      • -level 레벨서비스 /on/off/reset : 해당레벨에서 특정서비스의 상태를 설정

+ Recent posts