유용한 모든 것

리눅스마스터 2급 2차 [프로세스]

뭉지(moonz) 2020. 8. 25. 09:43
반응형

프로세스란! CPU와 메모리를 할당 받아 실행되고 있는 프로그램이다.

프로세스들에게는 고유의 ID를 할당받는데, 이를 PID.

PID가 1인 프로세스는 init, init에 의해 다른 모든 프로세스들이 시작됨.

 

프로세스 유형

# 프로세스 실행 형태

포그라운드 프로세스: 사용자와 상호작용하면서 화면에 실행되는 것이 보이는 프로세스. 그래서 명령 입력 후 수행이 종료될 때까지 기다려야함. ex)응용프로그램, 명령어 등

 

◦백그라운드 프로세스 : 사용자와 직접적인 대화를 하지않고, 뒤에서 화면에 나타나지않고 실해오디는 프로세스. 사용자의 입력에 관계없이 실행됨. ex)시스템 프로그램, 데몬 등

 

(1)데몬(Daemon)

-리눅스 시스템 부팅 시 자동으로 실행되는 background process.

-메모리에 상주하면서 사용자의 특정 요청이 오면 즉시 실행되는 대기중인 서버 프로세스 ( 특정 서비스 실행을 위해 백그라운드 상태에서 동작하는 서버 프로세스)

-사용자들은 이 process를 볼 수 있는 권한x.

-리눅스에서 데몬을 실행하는 방법 세 가지.

[클라이언트] ------------ [서버]

Telnet클라이언트-------- inetd -------Telnet 서버 ------- 로그인

FTP 클라이언트 --------- inetd -------- FTP 서버 --------- 로그인

 

**보통 빈번히 사용하는 데몬을 standalone 방식으로,자주 사용되지 않는 데몬을 super daemon 방식(inetd)으로 실행됨.

 

문제) 하루에 발생하는 서비스별 요청이 많은 httpd의 경우, 데몬 실행을 어떤 방식으로 변경해야 효율적일까?

답) 단독 실행(standalone) : 자주 실행되는 서비스를 클라이언트 요청이 들어오기전에 메모리에 상주시켜 작업 효율성을 높이는 방법.

 

문제) 서비스 데몬을 구성하는 방법으로 틀린 것은?

1 service crond restart

2 /etc/init.d/httpd start

3 /etc/rc.d/nfs start

4 /etc/rc.d/init.d/httpd start

답) 3번./ nfc 구동 방법은 /etc/rc.d/init.d/nfs start

 

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

(하나의 프로세스가 다른 프로세스를 실행하기 위해 fork와 exec 사용.)

◦fork() 함수 (복사 붙이기)

-기존 process를 복제하여 새 process를 형성.

-새 process를 위한 메모리 할당.

-새 process는 원래의 process와 같은 코드.

-원본 process: 부모 process, 복제된 process: 자식 process

 

◦exec() 함수 (덮어 씌우기)

-호출한 process가 새 process로 변경되는 방식.

-새 process를 위한 메모리 할당x.

-호출한 process의 메모리에 새 process의 코드를 덮어씌움.

결국, exec()을 호출한 process는 사라지고 exec()에 의해 호출된 새 process만 메모리에 남게됨.

 

문제) 필요한 서비스이나 자주 사용하지 않는 서비스들을 관리할 때 유용한 방법으로 특히 메모리 관리에 효율적인 것은?

답) inetd

 

# 시그널(Signal)

- 운영체제가 프로세스에게 이벤트 발생(인터럽트, 타이머 종료)을 전달해주는 소프트웨어 인터럽트 (즉, 프로세스끼리 서로 통신할 때 사용.)

- 여러 종류가 있고 각각 고유 번호가 붙어있음. (명령어 'kill -l' 로 확인 가능)

- 프로세스가 시그널을 받았을 때 처리 방법은 4가지.

1.SIG_IGN(SIG_PF)1 : 운영체제에 의해 시그널이 무시됨.

2.SIG_ERR(SIG_PF)-1 : 운영체제가 프로그램을 강제 종료.

3.SIG_DFL(SIG_PF)0 : 지정한 시그널 처리 루틴 실행.

4.SIG_HOLD(SIG_PF)2 : 시그널이 블로킹됨.

반응형