프로세스 개념

유석현(SeokHyun Yu)·2023년 5월 5일

Linux

목록 보기
5/17
post-thumbnail

1. 프로세스란

  • CPU와 메모리를 할당받아 실행시키는 프로그램

  • 프로세스들마다 고유의 프로세스 ID(PID)를 할당받음

    • 가장 먼저 실행되는 프로세스는 init(PID: 1)

2. 프로세스의 유형

  • 포그라운드 프로세스

    • 사용자와 상호작용하는 프로세스
  • 백그라운드 프로세스

    • 사용자의 입력과 관계없이 에서 실행되는 프로세스

3. inetd vs standalone

  • inetd

    • 필요한 서비스이나 자주 사용하지 않는 서비스들을 관리할 때 유용한 방법으로 특히 메모리 관리에 효율적
    • 보안상의 이유로 리눅스 커널 2.4 버전부터 xinetd가 inetd 역할을 수행
  • standalone

    • 독립적으로 수행되며 서비스 요청에 응답하기 위해 항상 메모리에 상주하는 데몬

4. fork()와 exec()

사용자가 새로운 프로세스를 생성하기 위해 사용하는 시스템 호출 함수

  • fork: 시스템 호출 함수로 새로운 프로세스를 만들때 기본 프로세스를 복제하는 방식

  • exec: 시스템 호출 함수로 호출하는 프로세스가 새로운 프로세스로 변경되는 방식


5. 명령어

  • halt:시스템을 종료하는 명령

  • suspend: 작업중인 프로세스를 일시 중지시키는 명령어


6. NI 값

  • 조정할 수 있는 NI 값 범위: -20 ~ 19

  • -20은 가장 높은 우선권을 가지며 19는 가장 낮은 우선권을 가짐

  • 일반 사용자는 NI 값을 증가시키는 것만 가능, root 사용자만 NI 값을 감소시킬 수 있음


7. 시그널 번호

  • SIGINT

    • 2
    • <CTRL+C>
    • 종료
  • SIGKILL

    • 9
    • 강제종료
  • SIGTERM

    • 15
    • kill 시스템 호출시 가능하면 정상종료 시키는 시그널
    • kill 명령 기본 시그널
  • SIGTSTP

    • 20
    • <Ctrl+Z>
    • 프로세스를 대기(suspend)로 전환

8. 참고

  • /etc/rc.d/init.d/nfs start

  • inetd 기반 방식

    • 클라이언트 서비스가 요청이 있는 경우 메모리에 상주하는 것
    • 운영 빈도수가 낮은 프로세스에 설정하는 것이 효율적 (telnet, pop3, finger 서비스가 이에 해당)
profile
Backend Engineer

0개의 댓글