본문 바로가기
IT 및 프로그래밍

프로세스와 스레드 중 프로세스의 관리에 대하여 - 2

by 데이터 석사 2024. 10. 22.

이번 글은 저번 글에 이어서 프로세스의 관리에 관한 것을 계속 알아볼 것이다. 프로세스의 제거와 프로세스의 중단과 재시작 등을 살펴볼 것이며 이 글이 프로세스의 관리에 관한 글의 마무리를 지을 것이다.

프로세스와 스레드의 프로세스의 관리에 대하여 - 2

프로세스 제거

프로세스 제거는 프로세스를 소멸 혹은 파괴하는 것이다. 자식 프로세스는 부모 프로세스를 제거하면 자동으로 삭제된다. 프로세스를 제거하면 이용하던 자원을 시스템에 돌려주고, 해당 프로세스는 시스템 리스트나 테이블에서 없어져 프로세스 컨트롤 블록을 회수한다. 그러나 프로그램을 여전히 디스크에 지니게 한다.

프로세스의 중단과 재시작

시스템의 유휴시간 문제는 프로세스 중지 상태를 사용하여 해결할 수 있다. 운영체제는 새로운 프로세스를 만들어 수행하거나 실행 중인 프로세스를 중지했다가 다시 수행하여 이용할 수 있다. 그리고 후자의 방법을 사용하면 시스템 전체의 부하를 증가시키지 않으면서 프로세스에 서비스를 줄 수 있다. 실행에서 대기가 아닌 중지 상태를 더하면 특정 이벤트의 생성을 기다리면서 대기 상태가 된다. 그러면 해당 이벤트가 발생할 때 즉시 수행 상태로 교환할 수 있는 이점이 있다.

 

앞서 살펴본 프로세스의 준비, 실행, 대기 상태만 이용하면 입출력 동작이 보통 계산보다 느려 시스템이 대다수 유휴 상태이다. 다중 프로그래밍 환경에서도 프로세서의 동작시간이 입출력보다 적어 프로세스 문맥 교환이 발생한 후에도 기다리게 되므로 대다수 유휴시간이 된다. 이것은 윈도우에서 다수의 응용 프로그램을 수행할 때 현재 사용 중인 윈도우 외에는 기다리는 상황이 되어서 비활성화 상태가 되는 것과 같다.

 

다중 프로그래밍에서 중지는 프로세스 입출력 요청 외에 다른 원인으로 프로세스가 실행을 중지한 상태, 곧 자원 부족 상태를 뜻하기도 한다. 물론 중지된 프로세스는 대기하던 이벤트(예시로 입출력 완료, 인터럽트가 발생)가 일어나면 중단 이전의 상태로 복구할 수 있다. 프로세스를 중지한 원인을 삭제하여 다시 수행하는 것을 재시작이라고 한다. 프로세스 중지와 재시작은 시스템 부하를 조절하는 데 꽤 중요하고, 다음 상황에서 주로 일어난다.

 

- 시스템에 장애가 생성되면 수행 중인 프로세스는 잠시 중지했다가 시스템이 기능을 복구할 때 다시 재시작할 수 있다.

 

- 프로세스에 의심스러운 부분이 존재하면 수행 중인 프로세스를 중지하여 검사한 후 재시작하거나 종료할 수 있다.

 

- 처리할 일이 너무 많아 시스템에 부담이 되면 프로세스 몇 개를 중지했다가 시스템이 정상 상태로 다시 돌아왔을 때 재시작할 수 있다.

 

중지는 매우 중요한 작업이다. 일반적으로 적은 시간에 너무 많은 프로세스를 요구하면 프로세스 몇 개가 중지된다. 장시간 중지할 때는 해당 프로세스에 나누어준 자원을 다시 돌려주어야 하는데, 자원의 성질에 따라서 돌려줄 자원을 선택한다. 예시를 들면, 메인 메모리는 프로세스를 중지하자마자 돌려주어야 하지만, 보조 메모리는 중지 시간을 예측할 수 없거나 너무 길 때 돌려주어야 한다. 중단된 대기 상태는 프로세스가 보조 메모리에 있고 이벤트를 대기 중인 상태이다. 중지된 중단 준비 상태는 프로세스가 보조 메모리에 있지만 바로 메인 메모리로 적재하여 실행할 수 있는 상황이다. 물론 중단한 프로세스는 중지된 지점부터 다시 시작한다.

 

대부분 시스템은 프로세스를 수행하기 전에 자원을 나눠 받고 수행을 시작하지만, 다중 프로그래밍 환경에서는 자원의 사용률과 시스템 효율을 높이려고 자원을 동적으로 나눠준다. 이때 자원을 나눠 받으려고 기다리는 상태가 '대기'이고, 나눠 받은 자원을 기다리는 상태가 '중단'이다. 예시를 들면, 프로세스는 더 많은 저장장치를 요청하는데, 이용 가능한 저장장치가 부족하면 대기 상태가 된다. 대기 상태는 대부분 시간이 지나면 요구한 자원을 이용할 수 있어 준비 상태가 된다. 하지만 하드웨어가 고장 나거나 다른 프로세스가 해당 자원을 돌려줄 수 없는 상태, 즉 교착 상태가 되면 문제가 생겨난다.

 

중단은 프로세스 자신이나 다른 프로세스로 가능한데, 단일 처리 시스템에서는 해당 프로세스 스스로 중지해야 한다. 반면에 다중 처리 시스템에서는 다른 프로세서가 수행 중인 프로세스를 중지할 수 있다. 중단된 프로세스는 다른 프로세서가 재시작하기 전에는 수행할 수 없다.

프로세스의 우선순위 변경

프로세스 스케줄러는 프로세스 컨트롤 블록에 있는 우선순위를 사용하여 준비 리스트의 프로세스를 처리한다. 입출력 중심 프로세스는 프로세스를 짧게 자주 이용하도록 하고, 프로세서 중심 프로세스는 프로세스를 길게 이용하되 이용 횟수를 줄여서 균형을 유지할 수 있다. 준비 리스트의 프로세스는 프로세서 중심 프로세스와 입출력 중심 프로세스로 구별할 수 있다. 입출력 중심 프로세스는 속도가 느리면서 빠른 반응을 요청하는 단말기 입출력 프로세스에 높은 우선순위를 주고, 속도가 빠른 디스크 입출력 프로세스에는 낮은 우선순위를 준다. 이때 우선순위가 낮은 프로세스에는 시간을 많이 나눠주고, 우선순위가 높은 프로세스에는 시간을 적게 나눠준다.

프로세스의 문맥 교환

일반적으로 인터럽트가 생겨나면 인터럽트 처리 루틴으로 컨트롤이 넘어간 후에도 시스템 관리와 연관된 기본 작업을 하고는 인터럽트 유형에 따라 루틴으로 분기한다.

 

- 입출력 인터럽트는 입출력 동작이 일어났음을 체크하고 이벤트를 기다리는 프로세스를 준비 상태로 변환 후 실행할 프로세스를 선택한다.

 

- 클록 인터럽트는 현재 수행 중인 프로세스의 할당 시간을 추적하여 수행 중인 프로세스를 준비 상태로 바꾸고, 다른 프로세스를 실행 상태로 바꾼다.

 

현재 실행하는 프로세스와 별도로 밖에서 이벤트가 발생하면 인터럽트가 생겨난다.

요약 및 결론

• 프로세스 제거는 프로세스를 파괴하는 것이며, 프로세스를 제거하면 이용하던 자원을 시스템에 돌려주고 해당 프로세스는 시스템 리스트나 테이블에서 없어져 프로세스 제어 블록을 회수한다.

• 프로세스 중지와 재시작은 시스템 부하를 조절하는 데 중요하며, 시스템에 장애가 발생하거나 프로세스에 의심스러운 부분이 있거나 처리할 작업이 너무 많아 시스템에 부담이 될 때 주로 일어난다.

• 프로세스의 우선순위 변경은 프로세스 스케줄러가 프로세스 제어 블록에 있는 우선순위를 이용하여 준비 리스트의 프로세스를 처리하는 것을 말한다.

• 프로세스의 문맥 교환은 일반적으로 인터럽트가 생겨나면 인터럽트 처리 루틴으로 제어가 넘어간 후에도 시스템 관리와 연관된 기본 작업을 하고는 인터럽트 유형에 따라 루틴으로 분기하는 것을 말한다.