CS/OS

[Linux] 프로세스

창문닦이 2020. 5. 23. 20:18

[프로세스의 정의]

프로세스는 여러가지 형태로 정의할 수 있다. 

  1. 실행중인 프로그램(컴파일 및 링크가 모두 완료된 실행 프로그램 또는 실행 파일과 실행에 필요한 입럭데이터를  총칭)
  2. 커널에 등록되고 커널의 관리하에 있는 작업
  3. 컴퓨터 시스템 내의 각종 자원들을 요청하고 할당받을 수 있는 개체
  4. 프로세스 관리 블록을 할당받는 개체

[프로세스 자원의 개념]

커널에 의해 다른 주체에게 할당되고 사용이 끝날 경우 다시 반납되는 피동적인 개체

  • 하드웨어 자원 : 기억장치나 프로세서, 하드디스크, 자기테이프, 단말기, 모니터, 키보드 등의 장치
  • 소프트웨어 자원 : 메세지, 시그널, 파일, 각종 공유 소프트웨어 등

[프로세스 관리 블록 : PCB, Process Control Block]

컴퓨터 시스템 내의 프로세스들은 모두 커널 공간에 자신의 PCB를 하나씩 가진다.

PCB에 저장되는 대표적 정보들은 다음과 같다. (운영체제마다 저장되는 정보들은 다르다!) 

  • 프로세스 고유 번호 : 프로세스 관리의 편의성을 위해 유니크하게 부여되는 번호
  • 프로세스 우선순위 : 프로세스 스케줄링을 위해 사용. 커널은 이 우선순위를 참조해서 프로세서를 할당할 프로세스를 결정한다.
  • 프로세스 현재 상태 : 프로세스가 각각 어떤 자원들을 할당받고 있고 어떠한 상황에 있는가에 따라 상태를 구분
  • 프로세스가 하당받은 자우너들의 리스트 또는 이들에 대한 포인터
  • 문맥 저장 영역

유닉스 운영체제에서는 PCB 영역을 프로세스 테이블 슬롯 영역과 u-area로 나누어 운영하고 있다. 

 

> 커널의 PCB영역 참조 및 갱신 속도를 빠르게 하는 것은 시스템 전체의 성능에 많은 영향을 미친다.

 

[프로세스 식별자: PID]

유닉스 커널과 같은 운영체계에서 각 프로세스나 서비스를 식별하기 위해 할당되는 고유한 번호.

 

[시그널]

리눅스는 사용자 또는 프로그램이 프로세스를 제어할 수 있도록 시그널을 지원한다

 

[부모와 자식 프로세스]

특정한 프로세스에 종속된 프로세스는 해당 프로세스의 자식 프로세스라 한다.

부모 프로세스가 종료된 후에도 자식 프로세스가 아직 남아있는 경우가 있는데 이런 상태의 프로세스를 좀비 프로세스라 한다. 시스템이 느려지는 원인이 될수 있다. 시스템 재부팅 시에는 이런 좀비 프로세스는 자동 제거된다.

 

[프로세스 상태]

  • 활동상태 : 기억장치를 할당받은 상태
    • 실행 : 프로세서를 할당받은 상태
    • 준비 : 필요한 자원을 모두 소유하고 프로세서를 요청하고 있는 상태
    • 대기 : 프로세서 외 다른 자원이 없는상태
  • 지연상태 : 기억장치를 잃은 상태
    • 지연준비 : 프로세서를 요청하고 있는 상태
    • 지연대기 : 프로세서와 다른 자원이 모두 없는 상태 

[데몬]

데몬이란 시스템에서 네트워크를 통해 특정한 서비스를 제공하기 위해 특정 포트를 열어두고 연결 요청이 들어오길 기다리는 프로그램이다. 데몬 포트를 지키고 있다가 연결이 들어오면 임의의 포트로 연결을 리다이렉트라고 자신은 계속 대표 포트를 지키고 있는 것이다.

 

  • 슈퍼데몬 ?
    • 슈퍼데몬은 메모리에 상주하면서 슈퍼데몬이 관리하는 데몬이 호출될 경우 그 데몬을 잠깐 올렸다가 처리가 끝나면 다시 종료 시킨다. 
    • standalone 방식 : 시스템에 독자적으로 프로세스가 구동되어 서비스를 제공하는 데몬을 의미한다. 웹서버, DB서버, 샌드메일 서버등이 있다. 메모리상에 항상 구동되어야 하기 떄문에 자주 호출되는 서비스(데몬)의 경우 이 타입으로 사용하면 사용되지 않는 시간에도 항상 메모리상에 구동되어 있어 시스템 자원의 낭비를 가져온다.
    • xinetd 방식 : 다른 하위의 데몬을 지배하는 상위 데몬을 의미한다. xinted 데몬 자체는 항상 가동되고 있지만 직접 서비스를 하는 것이 아니라 외부에서 특정 서비스를 요청할 경우에 자신에게 종속된 하위 데몬을 구동 시키고 그 서비스로 연결시켜주는 역할을 한다. 서비스 요청이 종료되면 하위 데몬도 자동적으로 종료한다. 대표적인 예로 텔넷 서버가 있다. 
    • FTP 서버의 경우 주용도로 사용할 경우에는 standalone 타입의 데몬으로, 간헐적으로 FTP 서비스를 사용할 경우에는 xinetd 타입의 데몬으로 설정을 변경할 수 있다. 
  • 네트워크 서비스 포트 설정 파일 /etc/services
    • /etc/services 파일은 리눅스 서버에서 사용하는 모든 포트들에 대한 정의가 설정되어 있다.
    • 기록양식 : 서비스이름    포트/프로토콜    aliases
  • 데몬의 시작과 종료

 1. xinetd 의 시작

 – /etc/rc.d/init.d/xinetd start

 – xinetd 스크립트에 start 옵션을 주면 됨.

 2. xinetd 의 종료

 – /etc/rc.d/init.d/xinetd stop

 – xinetd 스크립트에 stop 옵션을 주면 됨.

 3. xinetd 의 재시작

 – /etc/rc.d/init.d/xinetd restart

 – xinetd 스크립트에 restart 옵션을 주면 됨.

 4. xinetd 의 상황점검

 – /etc/rc.d/init.d/xinetd status

 – xinetd 스크립트에 status 옵션을 주면 됨.

 5. xinetd 실행 프로세스 확인

 – ps -ef|grep xinetd

 


출처: https://ssh8931.tistory.com/entry/리눅스linux-Standalone데몬과-Xinetd-데몬 [Find a Position]

출처: http://pchero21.com/?p=44

'CS > OS' 카테고리의 다른 글

[OS] DMA  (0) 2021.06.20
[Linux] 쉘 스크립트 기초 문법  (1) 2020.05.23
[OS] 윈도우 부팅 디스크 버전 확인하기  (0) 2020.03.07
[OS] 운영체제 기초  (0) 2020.02.29
[Linux] 생활코딩 리눅스 강좌 (5)  (0) 2019.10.08