본문 바로가기

컴퓨터 기본/Linux

[Linux] 프로세스 관리

프로세스 호출

fork() vs exec()

시스템 호출 함수
새로운 프로세스를 생성시 사용한다.

참고로 fork, exec 는 함수이므로 명령어 뒤에 () 붙여야 함

 

fork()

  • 기존 프로세스를 복사해 새로운 프로세스 생성
  • 프로세스를 새로 만드니까 메모리가 새로 할당됨
  • 새로운 프로세스는 기존 프로세스와 코드가 동일함

exec()

  • 호출하는 프로세스가 새로운 프로세스로 변경됨
  • 새로 만들지 않고 변경하니까 메모리 할당은 필요없음
  • 대신 메모리에 새로운 코드가 덮어쓰기 된다

 

Daemon

  • 리눅스 부팅시 자동으로 실행되는 background 프로세스
  • 메모리에 상주하면서 요청을 받으면 즉시 실행된다
  • 메모리에 상주한다? -> 주기적이고 지속적인 프로세스를 처리하기 위함
  • 사용자들은 이 프로세스를 볼 수 없다

 

데몬을 실행하는 방법 3가지

standalone daemon

  • 항상 메모리에 상주하는 단독 실행 방식
  • 메모리 점유율이 크다
  • 작업 효율성이 좋다
  • 실행 스크립트 위치: /etc/inetd.d/
  • 종류: http, mysql, sendmail, nameserver

inetd daemon(=super daemon)

  • 다른 데몬들의 상위에 존재하는 standalone daemon
  • 다른 서비스들을 제어, 관리하는 역할
  • 리눅스 커널 2.4부터 xinetd(=extended inetd)가 inetd 역할을 수행함(보안상 이슈 때문)

inetd type daemon

  • idetd 데몬이 활성화 되어야 가동되는 데몬
  • 독립적이지 않고 종속적이다
  • inetd 서비스가 종료되면 함께 종료됨
  • 요청시에만 메모리에 올라가게 된다
  • 요청이 많지 않은 프로세스 전용
  • 실행 스크립트 위치: /etc/xinetd.d/
  • 종류: telnet, pop3, finger

 

Signal

시그널은 프로세스에 이벤트 발생을 전달해주는 소프트웨어 인터럽트이다.

 

시그널 동작 종류

번호 signal 조건 동작
1 SIGHUP 터미널과 연결 끊어짐 종료 후 재시작
2 SIGINT ctrl + c 종료
3 SIGQUIT ctrl + / 코어덤프
9 SIGKILL 프로세스 강제 종료 종료
15 SIGTERM kill 명령어 호출 종료
18 SIGCONT 프로세스 재시작 무시
19 SIGSTOP SIGCONT 시그널 호출시까지 종료
20 SIGTSTP ctrl + z 프로세스 대기