정보보안기사

정보보안기사 - 유닉스/리눅스 서버보안(2)

망망2핫딜 2023. 5. 30. 00:00

프로세스 응용

첫 번째 프로세스

어떤 프로그램 OO을 실행하는 새로운 프로세스를 생서하는 시스템 호출은 없다. 대신 유닉스에서 기존의 프로세스를 복제하여야 함. 그리고 새로 생성된 자식 프로세스를 실행 파일 OO과 연관 시킵니다.

 

프로세스 id(PID)가 0인 swapper라는 첫 번재 프로세스는 부팅 시간 동안 운영체제에 의해서 생성 됩니다. 이 프로세스는 즉시 PID 1과 2를 가지는 2개의 프로세스 init와 pagedaemon을 만들기 위하여 fork / exec 를 두 번 실행한다.

 

스와퍼(swapper)와 페이지 데몬(pagedaemon)과 같은 프로세스는 그 중요성 때문에 커널 모드에서 영구적으로 실행되며 이들을 커널 프로세라고 합니다.

시스템 내의 모든 다른 프로레스들은 init프로세스의 자손들이 됩니다.

 

프로세스의 생성 및 종료와 관련된 두 가지 규칙

1. PID가 0인 프로세스를 제외한 모든 프로세스는 실행 중에 부모 프로세스를 갖게 됩니다.

  만일 부모 프로세스가 자식 프로세스보다 먼저 종료될 경우 자식 프로세스는 고아 프로세스가 되지만, UNIX 시스템의 규칙에 따라 PID가 1번인 init프로세스가 고아 프로세스(Orphan process)의 대리모 역할을 하게 됩니다.

 

2. 프로세스 종료 시 자신을 생성한 부모 프로세스에게 자신의 종료를 알립니다.

  프로세스가 종료되었지만 부모 프로세스가 이를 확인하지 않았다면(즉, 부모가 살아있으면서) 종료된 자식 프로세스는 부모 프로세스의 확인이 있을 때까지 좀비 프로세스로 남게 됩니다.

 시스템/커널 입장에서 프로세스는 제한된 자원이므로 좀비 프로세스가 과도하게 많아지면 더 이상 프로세스를 생성하지 못하는 문제가 발생할 수 있습니다.

 

* 좀비 프로세스(Zombie process)

실제로 실행되진 않지만, 프로세스 목록을 차지하고 있습니다. 만약 잘못 작성된 프로그램 때문에 좀비 프로세스가 증가한다면 프로세스 테이블이 꽉 차 다른 정상 프로세스를 실행할 수 없게 됩니다. 좀비 프로세스는 kill 명령어로 제거할 수 없습니다. 부모프로세스에게 SIGCHILLD 시그널 보내서 종료 혹은 부모 프로세스가 종료되면 좀비 프로세스는 고아 프로세스가 되고, init 프로세스는 자식 프로세스의 종료 정보를 주기적으로 확인하고 종료하게 됩니다.

 

시스템 시작과 종료

부팅 관련 용어 정의

 

시스템 종료

UNIX 시스템 종료할 때 주의사항

접속 중인 사용자에게 시스템의 종료를 공지하여 작업을 마무리 해야 합니다.

운영 중인 서비스(프로세스)를 안전하게 종료해야 합니다.

하드디스크를 갱신하여 파일 시스템의 무결성을 유지해야 합니다.

 

하드디스크 동기화(sync)

UNIX 시스템은 하드디스크의 입 출력에 대한 효율성을 높이기 위하여 버퍼를 운영합니다.

만일 시스템이 비정상적으로 종료되면 버퍼에 있는 데이터가 하드디스크에 반영되지 않아서 파일시스템에 무결성 문제가 생기게 됩니다. 따라서 하드디스크 동기화는 시스템을 종료하는 중에 해야 할 가장 중요한 작업니다.