컴퓨터 프로세스 또는 프로그램이 주로 CPU의 처리 능력에 의해 성능이 제한되는 상황을 의미한다.
여기에서 CPU는 다른 자원보다 더 빨리 작업을 처리해야 하는데, 그런 자원이 부족하면 병목 현상이 발생한다.
CPU-bound 프로세스는 계산이 많은 작업을 하고, 다른 자원(디스크, 메모리, 네트워크)을 별로 사용하지 않는다. 이런 상황을 해결하려면 알고리즘을 개선하거나 병렬 처리를 사용하거나, 더 좋은 CPU로 업그레이드를 해야한다. 그러므로 프로그래머는 코드 작성시에 성능 관련 요소를 고려해야 하는 것이다.
프로그램이나 시스템의 성능이 입력과 출력 작업에 의해 제한되는 상태를 더 자세히 이해하기 위해서는, 컴퓨터 시스템의 여러 구성요소와 상호 작용에 대해 알아봐야 한다. 컴퓨터 시스템은 크게 CPU, 메모리, 스토리지 및 입출력 장치로 구성되어 있다.
I/O-bound 상태에서는 CPU의 처리 능력과 메모리의 속도가 충분히 빠르더라도 입출력 작업이 느리기 때문에 전체 시스템 성능이 제한된다. 이는 다음과 같은 상황에서 발생할 수 있다.
1. 디스크에서 데이터를 읽거나 쓰는 작업이 느릴때
2. 네트워크를 통해 데이터를 전송하는 작업이 느릴 때
3. 사용자 입력(키보드, 마우스)처리가 느릴 때
I/O 스케줄링 및 우선순위 관리는 전체 시스템 성능을 최적화하기 위해 I/O 작업의 순서와 우선순위를 조절하는 방법입니다. 이는 운영 체제 수준에서 I/O 스케줄링 알고리즘을 사용하거나, 애플리케이션에서 요청에 대한 우선순위를 조절하는 방법으로 구현할 수 있습니다.
운영 체제 수준의 I/O 스케줄링 알고리즘 예:
FCFS (First-Come, First-Served): I/O 요청이 도착한 순서대로 처리하는 가장 단순한 방식입니다. 하지만, 이 방식은 특정 요청이 긴 시간 동안 대기할 수 있어 성능이 저하될 수 있습니다.
SSTF (Shortest Seek Time First): 현재 디스크 헤드 위치에서 가장 가까운 요청부터 처리하는 방식으로, 탐색 시간을 최소화합니다. 이 방식은 대체로 성능이 좋지만, 헤드 위치에 따라 일부 요청이 계속 대기할 수 있는 "기아" 현상이 발생할 수 있습니다.
SCAN (Elevator Algorithm): 디스크 헤드가 한 방향으로 움직이면서 차례대로 요청을 처리하고, 끝에 도달하면 다시 반대 방향으로 움직이면서 요청을 처리하는 방식입니다. 이 알고리즘은 균일한 처리 시간을 보장하며, 기아 현상을 예방할 수 있습니다.
C-SCAN (Circular SCAN): SCAN과 유사하지만, 끝에 도달한 후 처음으로 돌아가며 요청을 처리하는 방식입니다. 이 알고리즘은 처리 시간의 분산을 줄이고, 모든 요청에 대해 공평한 처리 기회를 제공합니다.
애플리케이션 수준의 우선순위 관리 예:
QoS (Quality of Service) 기반 우선순위 관리: 네트워크 트래픽에서 특정 서비스나 요청에 대해 보장된 성능을 제공하기 위해 우선순위를 조절합니다. 예를 들어, 실시간 음성 통화나 비디오 스트리밍과 같은 민감한 작업에 높은 우선순위를 부여할 수 있습니다.
사용자 정의 우선순위: 애플리케이션에서 사용자가 직접 설정할 수 있는 우선순위를 제공하는 방식입니다. 사용자는 중요한 작업에 높은 우선순위를 할당하고, 상대적으로 중요도가 낮은 작업에 낮은 우선순위를 할당할 수 있습니다. 예를 들어, 대용량 파일 다운로드보다 웹 브라우징이나 이메일 작업에 우선순위를 높게 설정할 수 있습니다.
동적 우선순위 조절: 시스템의 상태에 따라 자동으로 우선순위를 조절하는 방식입니다. 예를 들어, 시스템이 과부하 상태에 이르면, 비판적인 작업에 높은 우선순위를 할당하고, 비판적이지 않은 작업을 일시 중단하거나 낮은 우선순위로 조절할 수 있습니다.
어플리케이션 기반 우선순위: 애플리케이션 자체에서 중요한 작업에 대한 우선순위를 높게 설정할 수 있습니다. 예를 들어, 데이터베이스 시스템에서 긴급한 트랜잭션 처리를 위해 일반적인 조회 작업보다 높은 우선순위를 부여할 수 있습니다.
I/O 스케줄링 및 우선순위 관리는 시스템의 성능과 안정성을 최적화하는 데 중요한 역할을 합니다. 이를 통해 전체 시스템의 효율성을 높이고 사용자의 경험을 개선할 수 있습니다. 각각의 방법은 상황과 요구에 따라 적절하게 선택되어야 하며, 때로는 여러 기법이 결합되어 사용되기도 합니다.