답변:
인쇄 스풀은 효율적으로 프로그램을 제출하고 하나 이상의 프린터에 공급에서 작업을 수신에 대한 책임 프로그램 (스풀러)와 작업에 따라 관리하는 버퍼이다. 스풀의 요점은 속도가 다른 두 시스템 간의 통신을 처리하고 공유 장치에 대한 액세스를 제어하는 것입니다. 전자는 프로그램이 인쇄 작업을 원하는만큼 빨리 제출할 수 있으며 프린터가 처리 할 수있는 속도만큼 (또는 느리게) 처리됩니다. 후자 는 RonJohn이 지적한 것처럼 작업을 일관되게 처리합니다. 따라서 인쇄시 작업이 혼합되지 않습니다.
네트워크 프린터는 자체 스풀을 제공하고 인쇄 서버 (CUPS lpd
등)도 스풀을 구현합니다. 대부분의 인쇄 시스템은 액세스 제어, 할당량, 배너, 인쇄 옵션 등도 처리합니다. 스풀은 다른 상황에서 사용됩니다. 예를 들어, 테이프 기반 백업 서버는 이제 빠른 디스크 기반 스토리지 시스템에서 네트워크로 연결된 호스트의 백업 데이터를 스풀링하여 테이프 슈 광택을 피하는 데 필요한 엄청난 속도로 최신 테이프 드라이브를 공급할 수 있습니다.
주석과 관련하여 스풀의 관련성은 인쇄 작업 제출을 이행에서 장식하는 것입니다. 스풀하지 않으면 제출은 인쇄 작업으로 lpr
만 완료되므로 작업이 완료된 후에 만 명령이 완료됩니다. 프린터 자체도 스풀링 될 수 있으므로 컴퓨터에서 스풀을 제거하면 원하는 결과를 얻지 못할 수 있습니다!
/var/spool/mail
또는 유사한 위치 에서 메일 스풀을 사용합니다 . 이것은 메일 메시지의 비동기 전송에 근접 할 수 있도록하는 "버퍼"이기도합니다. 메일 메시지는 스풀 / 큐되어 있으며 메일 클라이언트는 실제로 메일이 시스템을 떠나기를 기다릴 필요가 없습니다. 인쇄 작업과 매우 유사합니다.
write
. 데이터가 실제로 대상에 도달 한 후가 아니라 사용 된 모든 버퍼 (Linux의 경우 페이지 캐시)에 데이터가 기록 되 자마자 완료됩니다. read
반드시 비차 단일 필요는 없으며 요청한 것보다 적은 데이터를 반환 할 수 있습니다.
lpr
프린터가 작업 수락을 기다릴 때까지 처리가 완료되기 전에 여전히 지연이 발생합니다.
간단히 말해서 스풀러는 다음으로 구성됩니다.
귀하의 경우, 포 그라운드 프로그램 ( lpr
)은 인쇄 작업을 (으 )로 전송하여 cups
저장 작업을 수행 한 다음 직렬, 병렬, USB, 네트워크, ... 통신을 사용하여 실제로 인쇄 프로세스를 시작합니다.
그렇기 때문에 요즘에는 프린터에 용지가 없어도 컴퓨터를 계속 사용할 수 있지만 CP / M을 사용하는 어린 시절에 더 많은 용지를 추가 할 때까지 전체 컴퓨터가 잠겼습니다.
왜 "스풀링"이라고 불리는가?
그 당시에는 큰 컴퓨터가 테이프를 사용하여 디스크가 너무 비싸서 이러한 종류의 파일을 저장했기 때문에 데이터 센터 내부에서 작업 할 때 가장 먼저 들리는 것은 테이프가 회전하기 시작한 것입니다. 3-4 프린터가 인쇄를 시작합니다 (행운이있는 경우). ;-)
참고 1 : "스풀"은 "자기 테이프를 감을 수있는 원통형 장치"를 의미하는 명사이므로 "스풀링"은 테이프를 회전시키고 감는 원통형 장치입니다.
먼저 "스풀링"이라는 용어의 의미로 시작해 봅시다. 때때로 문서의 크기가 프린터의 메모리보다 크므로 "프린터 스풀링"을 사용하면 여러 문서를 프린터로 보내고 모든 문서를 대기열에 넣을 수 있습니다.
이제 Unix에는 두 가지 인쇄 시스템이 있습니다.
lpd
데몬을 사용 하여 인쇄 작업을 예약합니다.lpsched
스케줄러로 사용 합니다.Jeff Lessem의 USAIL : Unix 시스템 관리 독립적 학습 에는 BSD 및 SVR4 시스템에 대한 좋은 개요를 제공하는 Unix 에서 인쇄에 관한 섹션이 있습니다.
BSD 스풀링 시스템
많은 이기종 네트워크로 확장되어 많은 컴퓨터가 프린터를 공유 할 수 있습니다.
BSD 스풀링 시스템에서 프린터에 대한 액세스는
lpd
데몬 및lpr
프로그램에 의해 제어됩니다 .lpr
인쇄를 위해 파일을 대기시킬 수있는 BSD 시스템의 유일한 프로그램입니다.
lpr
인쇄 할 데이터를 받아 스풀링 디렉토리에 넣고lpd
디먼에 알립니다 . 각 인쇄 작업lpr
에 대해 스풀 디렉토리에 제어 파일 (cfxxx)과 데이터 파일 (dfxxx)의 두 파일을 작성합니다. xxx는 고유 한 job-id를 나타냅니다. 제어 파일에는 소유자의 신원을 포함하여 인쇄 작업을 처리하기위한 정보가 들어 있습니다. 데이터 파일에는 인쇄 할 실제 데이터가 포함됩니다.
lpd
데몬은 검사/etc/printcap
대상 프린터를 식별하는 파일을. 대상 프린터가 로컬 장치lpd
인 경우lpd
데몬 의 복사본이 해당 인쇄 대기열에서 실행 중인지 확인하십시오 . 그렇지 않으면lpd
프린터가 연결된 원격 호스트에 대한 연결을 열고 제어 및 데이터 파일을 프린터로 전송합니다.인쇄 작업은
lpd
선입 선출 (FIFO) 기준으로 예약됩니다. 그러나 시스템 관리자는 lpc 명령을 사용하여 인쇄 대기열의 작업 우선 순위를 변경할 수 있습니다.
SVR4 스풀링 시스템 은 Solaris 및 HP-UX에서 사용됩니다. 더 많은 제어 및 유연성을 제공하지만 네트워크 인쇄용으로 설계되지 않았으며 설정하기가 더 복잡합니다.
SVR4 스풀링 시스템에서
lp
명령은 인쇄 될 데이터를 승인하고 대상과 연관된 스풀 디렉토리에 사본을 작성합니다. 대상은 프린터 이름과 프린터가 속하는 클래스의 옵션 사양으로 구성됩니다. 지정된 프린터가 사용 중이면 작업은 같은 클래스의 다른 프린터로 전송됩니다. 스풀 디렉토리는 일반적으로/var/spool/lp/request/printer-name
인쇄 파일에는 작업과 사용자를 모두 식별 할 수있는 고유 한 이름이 지정됩니다.프린터에 대한 액세스는
lpsched
데몬에 의해 제어됩니다 . 스풀 디렉토리에서 작업을 선택하여 사용 가능 해지면 적절한 대상으로 전송합니다. lpsched는 일반적으로에 로그를 유지합니다/usr/spool/lp/log
. 로그 파일은 사용자 이름뿐만 아니라 인쇄 작업을 처리 할 때 발생하는 모든 오류를 나타냅니다.
참조 : 프린터 및 프린터 스풀러 – lp, lpstat 및 cancel 명령 | IT 블로그를위한 팁 및 유용한 정보
잊지 절대 스풀 의 약자 인 S imultaneous P eripheral O perations O N L의 오프라인. 초창기 (최초는 아님) 컴퓨팅 이후 프로세서는 프린터가 인쇄 할 수있는 것보다 빠른 결과를 생성했습니다. 스풀링이 없으면 프로세서는 인쇄 자체가 완료 될 때까지 "인쇄 작업"을 완료 할 수 없습니다. 이로 인해 종종 유휴 프로세서가 발생하여 프린터를 기다립니다.
스풀링의 큰 도약은 미국의 우주 프로그램에서 시작되었습니다. 컴퓨터가 결과를 너무 느리게 생성하여 새로운 스풀링 시스템이 NASA 용으로 만 작성되었습니다 (그러나 모든 IBM 시스템이 가질 때까지 후속 시스템이 인기를 얻었음에도 불구하고). 그것은 호출 된 H ouston 호환성 및 자동 S의 풀링 P의 제작 rogram HASP에게 제를 중첩 약어.
스풀링에 대한 좋은 비유는 스레드 팩토리입니다. 스레드는 빠른 속도로 회전하고 다른 곳에서는 스풀에 저장됩니다. 그런 다음 실의 스풀은 결국 재봉 또는 다른 기계에 놓여져 훨씬 느린 속도로 작동하여 완제품을 만드는 데 사용됩니다.
스풀링은 상당히 오래된 학기입니다. 요즘에는 "인쇄 대기열"이 더 자주 사용되는 것을 볼 수 있습니다.
"대기열"은 "줄을 기다린다"는 영국 말입니다. 따라서 인쇄 작업이 "대기"됩니다. 즉 인쇄 대기 상태입니다.
스풀링이 완료된 후 (인쇄 라인간에 "사고"시간이 길어질 수 있음), 일반적으로 FIFO를 기준으로 인쇄되지만 인쇄 작업 우선 순위가이를 무시할 수 있습니다.
작업자가 용지를 교체 할 수 있도록 인쇄 스풀 및 대기열을 일시 중지 할 수 있습니다. 일부 페이지가 손상된 경우에도 다시 시작할 수 있습니다.