운영체제에서는 CPU에 입력을 주어야 하고, CPU는 명령을 실행하고 최종적으로 출력을 내준다. 하지만 이 접근 방식에는 문제가 있었습니다. 정상적인 상황에서 우리는 많은 프로세스를 처리해야 하며, CPU가 명령을 실행하는 데 걸리는 시간에 비해 I/O 작업에 걸리는 시간이 매우 크다는 것을 알고 있습니다. 따라서 기존 접근 방식에서는 하나의 프로세스가 입력 장치의 도움을 받아 입력을 제공하고 이 시간 동안 CPU는 유휴 상태에 있습니다.
자바 코드 예제
그러면 CPU는 명령을 실행하고 그 출력은 다시 어떤 출력 장치로 주어지는데 이때 CPU도 유휴 상태가 된다. 출력을 표시한 후 다음 프로세스가 실행을 시작합니다. 따라서 대부분의 경우 CPU는 유휴 상태이며 이는 운영 체제에서 가질 수 있는 최악의 상태입니다. 여기서 스풀링(Spooling)의 개념이 적용됩니다.
스풀링이란 무엇입니까?
스풀링은 장치, 프로그램 또는 시스템에서 사용하고 실행하기 위해 데이터를 임시로 보관하는 프로세스입니다. 데이터는 프로그램이나 컴퓨터가 실행을 요청할 때까지 메모리나 기타 휘발성 저장소로 전송되어 저장됩니다.
SPOOL은 다음의 약어입니다. 동시 주변 장치 작업 온라인 . 일반적으로 스풀은 컴퓨터의 실제 메모리, 버퍼 또는 I/O 장치별 인터럽트에서 유지 관리됩니다. 스풀은 FIFO(선입 선출) 알고리즘을 기반으로 작동하여 오름차순으로 처리됩니다.
스풀링은 다양한 I/O 작업의 데이터를 버퍼에 넣는 것을 의미합니다. 이 버퍼는 I/O 장치에 액세스할 수 있는 메모리나 하드 디스크의 특수 영역입니다. 운영 체제는 분산 환경과 관련하여 다음과 같은 활동을 수행합니다.
- 장치마다 데이터 액세스 속도가 다르기 때문에 I/O 장치 데이터 스풀링을 처리합니다.
- 느린 장치가 따라잡는 동안 데이터가 쉴 수 있는 대기 스테이션을 제공하는 스풀링 버퍼를 유지합니다.
- 컴퓨터는 병렬 순서로 I/O를 수행할 수 있으므로 스풀링 프로세스로 인해 병렬 계산을 유지합니다. 컴퓨터가 컴퓨팅 작업을 수행하는 동안 테이프에서 데이터를 읽고, 디스크에 데이터를 쓰고, 테이프 프린터에 기록하는 것이 가능해졌습니다.
운영 체제에서 스풀링이 작동하는 방식
운영 체제에서 스풀링은 다음과 같은 단계로 작동합니다.
- 스풀링에는 SPOOL이라는 버퍼를 생성하는 작업이 포함됩니다. 이 버퍼는 SPOOL이 생성된 장치가 해당 작업을 사용하고 실행하거나 데이터에 대해 작동할 준비가 될 때까지 작업과 데이터를 보류하는 데 사용됩니다.
- 더 빠른 장치가 일부 작업을 수행하기 위해 더 느린 장치로 데이터를 보낼 때 SPOOL 버퍼로 연결된 보조 메모리를 사용합니다. 이 데이터는 더 느린 장치가 이 데이터에 대해 작동할 준비가 될 때까지 SPOOL에 보관됩니다. 느린 장치가 준비되면 필요한 작업을 위해 SPOOL의 데이터가 주 메모리에 로드됩니다.
- 스풀링은 전체 보조 메모리를 많은 작업과 여러 작업에 대한 데이터를 저장할 수 있는 거대한 버퍼로 간주합니다. 스풀링의 장점은 작업을 하나씩 실행하기 위해 FIFO 순서로 실행되는 작업 대기열을 생성할 수 있다는 것입니다.
- 장치는 많은 입력 장치에 연결할 수 있으며, 이를 위해서는 해당 데이터에 대한 일부 작업이 필요할 수 있습니다. 따라서 이러한 모든 입력 장치는 해당 데이터를 보조 메모리(SPOOL)에 저장한 다음 장치에서 하나씩 실행할 수 있습니다. 이렇게 하면 CPU가 언제든지 유휴 상태가 되지 않습니다. 따라서 스풀링은 버퍼링과 큐잉의 조합이라고 말할 수 있습니다.
- CPU가 일부 출력을 생성한 후 이 출력은 먼저 주 메모리에 저장됩니다. 이 출력은 주 메모리에서 보조 메모리로 전송되고, 거기에서 출력이 각 출력 장치로 전송됩니다.
스풀링의 예
스풀링의 가장 큰 예는 인쇄 . 인쇄할 문서는 SPOOL에 저장된 후 인쇄 대기열에 추가됩니다. 이 시간 동안 프린터가 문서에 대한 인쇄 프로세스를 하나씩 실행하는 동안 많은 프로세스가 기다리지 않고 작업을 수행하고 CPU를 사용할 수 있습니다.
인쇄 프로세스가 완료되면 우선 순위를 설정하거나 알림을 보내거나 사용자의 선택에 따라 인쇄할 다양한 유형의 용지를 선택하는 등 많은 기능을 스풀링 인쇄 프로세스에 추가할 수도 있습니다.
스풀링의 장점
운영 체제에서 스풀링을 사용하면 다음과 같은 이점이 있습니다.
Excel에서 첫 번째 문자를 제거하는 방법
- I/O 장치 수나 작업 수는 중요하지 않습니다. 많은 I/O 장치는 서로 간섭이나 중단 없이 동시에 작동할 수 있습니다.
- 스풀링에서는 I/O 장치와 CPU 사이에 상호 작용이 없습니다. 이는 CPU가 I/O 작업이 수행될 때까지 기다릴 필요가 없음을 의미합니다. 이러한 작업은 실행을 완료하는 데 오랜 시간이 걸리므로 CPU는 작업이 완료될 때까지 기다리지 않습니다.
- 유휴 상태의 CPU는 그다지 효율적인 것으로 간주되지 않습니다. 대부분의 프로토콜은 최소한의 시간에 CPU를 효율적으로 활용하도록 만들어졌습니다. 스풀링에서 CPU는 대부분의 시간 동안 바쁜 상태로 유지되며 대기열이 모두 소모된 경우에만 유휴 상태로 전환됩니다. 따라서 모든 작업이 대기열에 추가되고 CPU는 해당 작업을 모두 마친 다음 유휴 상태로 전환됩니다.
- 이를 통해 애플리케이션은 CPU 속도로 실행되는 동시에 I/O 장치를 해당 최고 속도로 작동할 수 있습니다.
스풀링의 단점
운영 체제에서 스풀링에는 다음과 같은 단점이 있습니다.
- 스풀링에는 입력 요청 수와 연결된 입력 장치 수에 따라 많은 양의 저장 공간이 필요합니다.
- SPOOL은 보조 저장소에 생성되므로 많은 입력 장치가 동시에 작동하면 보조 저장소에서 많은 공간을 차지하여 디스크 트래픽이 증가할 수 있습니다. 이로 인해 트래픽이 점점 더 증가함에 따라 디스크 속도가 점점 느려집니다.
- 스풀링은 느린 장치에서 빠른 장치로 데이터를 복사하고 실행하는 데 사용됩니다. 느린 장치는 큐에 작업할 데이터를 저장하기 위해 SPOOL을 생성하고 CPU는 이에 대해 작업합니다. 이 프로세스 자체는 CPU의 실시간 결과가 필요한 실시간 환경에서 스풀링을 사용할 수 없게 만듭니다. 이는 입력 장치가 더 느리기 때문에 더 느린 속도로 데이터를 생성하는 반면 CPU는 더 빠르게 작동할 수 있으므로 대기열의 다음 프로세스로 이동하기 때문입니다. 이것이 최종 결과나 출력이 실시간이 아닌 나중에 생성되는 이유입니다.
스풀링과 버퍼링의 차이점
스풀링과 버퍼링은 I/O 하위 시스템이 주 메모리나 디스크의 저장 공간을 사용하여 컴퓨터의 성능과 효율성을 향상시키는 두 가지 방법입니다.
스풀링과 버퍼링의 기본적인 차이점은 스풀링이 한 작업의 I/O를 다른 작업의 실행과 겹친다는 것입니다. 이에 비해 버퍼링은 한 작업의 I/O와 동일한 작업의 실행을 겹칩니다. 다음은 스풀링과 버퍼링의 몇 가지 차이점입니다.
자귀 | 스풀링 | 버퍼링 |
---|---|---|
정의 | SPOOL(Simultaneous Peripheral Operation Online)의 약어인 스풀링은 데이터를 임시 작업 영역에 저장하여 다른 프로그램이나 리소스에서 액세스하고 처리할 수 있도록 합니다. | 버퍼링은 버퍼에 데이터를 임시로 저장하는 행위입니다. 이는 송신자와 수신자 간의 데이터 스트림 속도를 일치시키는 데 도움이 됩니다. |
자원 요구 사항 | 스풀링에는 서로 다른 리소스가 특정 작업에 대한 프로세스를 관리하므로 리소스 관리가 덜 필요합니다. | 버퍼링은 동일한 리소스가 동일하게 분할된 작업의 프로세스를 관리하므로 더 많은 리소스 관리가 필요합니다. |
내부 구현 | 스풀링은 한 작업의 입력 및 출력을 다른 작업의 계산과 겹칩니다. | 버퍼링은 한 작업의 입력과 출력을 동일한 작업의 계산과 겹칩니다. |
효율적인 | 스풀링은 버퍼링보다 효율적입니다. | 버퍼링은 스풀링보다 효율성이 떨어집니다. |
프로세서 | 스풀링은 원격 사이트의 데이터도 처리할 수 있습니다. 스풀러는 원격 사이트에서 프로세스가 완료될 때만 알려 다음 프로세스를 원격 측 장치에 스풀링하면 됩니다. | 버퍼링은 원격 처리를 지원하지 않습니다. |
메모리 크기 | 디스크를 거대한 스풀이나 버퍼로 간주합니다. | 버퍼는 메인 메모리의 제한된 영역입니다. |