Spool có nghĩa là gì để in?


18

Mark đã viết bình luận cho tôi

Tôi không biết cách làm cho cốc không bị hỏng, nghĩa là làm thế nào để lệnh lpr chỉ thoát sau khi trình điều khiển máy in đã chạy.

"Spool" để in có nghĩa là gì?

Google cho biết đây là một động từ có nghĩa là "gửi (dữ liệu được dùng để in hoặc xử lý trên thiết bị ngoại vi) đến một cửa hàng trung gian". Cửa hàng trung gian mà in ống chỉ đại diện là gì, ví dụ, khi in bằng lprlệnh

Mark dường như liên quan đến ý nghĩa của spool với chặn. Nhưng tôi không thể tìm ra điều đó bằng cách xem định nghĩa do Google đưa ra.

Cảm ơn.

Câu trả lời:


12

Một bộ đệm in thực sự là một bộ đệm, được quản lý theo từng công việc, với một chương trình (bộ đệm) chịu trách nhiệm nhận công việc từ việc gửi chương trình và đưa chúng đến một hoặc nhiều máy in. Điểm quan trọng của một ống chỉ là xử lý giao tiếp giữa hai hệ thống với tốc độ khác nhau và kiểm soát truy cập vào các thiết bị dùng chung. Điều này có nghĩa là các chương trình có thể gửi các công việc in nhanh như họ muốn và các công việc đó được xử lý nhanh (hoặc chậm) như máy in có thể xử lý. Cái sau (như được chỉ ra bởi RonJohn ) đảm bảo rằng các công việc được xử lý mạch lạc: do đó, khi in, các công việc không bị lẫn lộn.

Các máy in được nối mạng cung cấp các cuộn chỉ riêng và các máy chủ in (CUPS, lpdv.v.) cũng thực hiện các cuộn. Hầu hết các hệ thống in cũng xử lý kiểm soát truy cập, hạn ngạch, biểu ngữ, tùy chọn in, vv Ống cuốn được sử dụng trong các bối cảnh khác; ví dụ, các máy chủ sao lưu dựa trên băng hiện lưu trữ dữ liệu sao lưu từ các máy chủ được nối mạng trên hệ thống lưu trữ dựa trên đĩa nhanh, để sau đó chúng có thể cung cấp các ổ đĩa băng hiện đại với tốc độ cực lớn mà chúng cần để tránh bóng băng.

Trong bối cảnh của bình luận, sự liên quan của một ống chỉ là nó giải mã việc gửi công việc in từ sự hoàn thành của nó. Không lưu đệm có nghĩa là việc gửi sẽ chỉ hoàn thành với lệnh in và do đó lprlệnh của bạn sẽ chỉ hoàn thành sau khi công việc hoàn thành. Việc xóa ống chỉ trên máy tính của bạn có thể không có kết quả mong muốn mặc dù bản thân máy in cũng có thể bị hỏng!


1
Phần nào trong ý nghĩa của "spool" làm cho nó không áp dụng được cho bộ đệm IO của nhân Linux?
Tim

3
Hệ thống thư thường sử dụng một hộp thư dưới /var/spool/mailhoặc vị trí tương tự. Đây cũng là một "bộ đệm" để cho phép gửi tin nhắn thư không đồng bộ. Thông điệp thư được lưu trữ / xếp hàng và ứng dụng thư khách không phải đợi thư thực sự rời khỏi hệ thống. Rất giống như một công việc in ấn.
Kusalananda

1
@Tim nó không thực sự là một câu hỏi về việc nó có được áp dụng hay không, nó chỉ không được gọi là một ống chỉ. Các bộ đệm thường dẫn đến các hoạt động nạp vào bộ đệm là không chặn: writehoàn thành ngay khi dữ liệu được ghi vào bất kỳ bộ đệm nào được sử dụng (trong Linux, bộ đệm trang), không phải một khi dữ liệu thực sự đến đích. readkhông nhất thiết không chặn hoặc có thể trả về ít dữ liệu hơn yêu cầu.
Stephen Kitt

1
Cũng lưu ý rằng - ngoài việc xử lý "giao tiếp giữa hai hệ thống với tốc độ khác nhau" - các cuộn chỉ nối tiếp truy cập vào các thiết bị chậm hơn đó. (Bạn có thể tưởng tượng sẽ tệ đến mức nào khi nhiều công việc ghi vào máy in hoặc modem cùng một lúc ...)
RonJohn

1
Ống in thường được lưu trữ trên đĩa, bất cứ nơi nào máy chủ in được lưu trữ. Khi tôi nói rằng các máy in cũng có thể có bộ đệm riêng, thì đây thường là trường hợp đối với các máy in có mạng của mạng (được kết nối với một mạng, chứ không phải với một máy tính cụ thể); họ lưu trữ (các) máy chủ in của riêng họ và phải quản lý nhiều công việc đến (họ thực hiện bằng cách có bộ đệm riêng). Khi một máy in có bộ đệm riêng, nó có thể chấp nhận các công việc in nhanh hơn nhiều so với chúng có thể được in, vì vậy ngay cả khi lprchờ máy in hoàn thành việc chấp nhận công việc, vẫn sẽ có độ trễ trước khi nó được xử lý hoàn toàn.
Stephen Kitt

36

Tóm lại, một bộ đệm bao gồm:

  • một chương trình nền
  • một thư mục trên mỗi máy in
  • một tập tin cho mỗi công việc in

Trong trường hợp của bạn, chương trình tiền cảnh ( lpr) sẽ gửi các lệnh in của nó tới cups, nơi lưu trữ nó và sau đó sử dụng giao tiếp nối tiếp, song song, USB, mạng, ... để thực sự bắt đầu quá trình in.

Vì vậy, đó là lý do tại sao ngày nay ngay cả khi máy in hết giấy, bạn vẫn có thể tiếp tục sử dụng máy tính của mình, trong khi trở lại khi tôi còn là một đứa trẻ trên CP / M, toàn bộ máy tính bị khóa cho đến khi bạn thêm giấy ...

Tại sao lại gọi là "spooling"?

Bởi vì vào thời đó, các máy tính lớn sử dụng băng để lưu trữ các loại tệp này vì các đĩa quá đắt, vì vậy khi bạn làm việc bên trong trung tâm dữ liệu, điều đầu tiên bạn sẽ nghe thấy là các băng bắt đầu quay lên và chỉ sau một giây hoặc 3-4 máy in sẽ bắt đầu in (nếu bạn may mắn). ;-)

Lưu ý 1: "Spool" là một danh từ có nghĩa là "một thiết bị hình trụ mà băng từ có thể được quấn", do đó "spooling" là thiết bị hình trụ quay lên và cuộn băng ...


5
Trực tiếp hơn, "spool" là một danh từ có nghĩa là "một thiết bị hình trụ mà băng từ có thể bị thương"
Ngừng làm hại Monica

1
@OrangeDog: kết hợp thành câu trả lời, cảm ơn! :-)
Fabby

2
+1 Không bao giờ biết thuật ngữ "spool" đến từ đâu.
Joe

@Joe Lý do tương tự trẻ em ngày nay không biết nút lưu thực sự có nghĩa là gì vì chúng chưa bao giờ thấy Đĩa mềm / Đĩa mềm / Stiffy / ... > :-)
Fabby

5

Trước tiên, hãy bắt đầu với ý nghĩa của thuật ngữ spooling trực tiếp: đôi khi kích thước của tài liệu lớn hơn bộ nhớ của máy in, do đó, máy in spooling spooling cho phép gửi nhiều tài liệu tới máy in và đặt tất cả các tài liệu này vào hàng đợi.

Bây giờ, trong Unix có hai hệ thống in:

  1. Hệ thống lưu trữ BSD sử dụng lpdtrình nền để lên lịch các công việc in.
  2. Hệ thống lưu đệm SVR4 sử dụng lpschedlàm lịch trình.

JeffILem's USAIL: Học tập độc lập quản trị hệ thống Unix có một phần về In ấn trong Unix cung cấp một cái nhìn tổng quan tốt về cả hai hệ thống BSD và SVR4:

Các hệ thống BSD spooling

mở rộng tốt đến các mạng lớn, không đồng nhất cho phép nhiều máy tính chia sẻ máy in.

Trong hệ thống lưu trữ BSD, quyền truy cập vào máy in được điều khiển bởi lpd trình nền và lprchương trình. lprlà chương trình duy nhất trên hệ thống BSD có thể xếp hàng các tệp để in.

lprchấp nhận dữ liệu sẽ được in, đặt nó vào một thư mục lưu đệm và thông báo cho lpddaemon. Đối với mỗi lệnh in, lprtạo hai tệp, tệp điều khiển (cfxxx) và tệp dữ liệu (dfxxx) trong thư mục spool, xxx chỉ ra một id công việc duy nhất. Tệp điều khiển chứa thông tin để xử lý lệnh in, bao gồm cả danh tính của chủ sở hữu. Tệp dữ liệu chứa dữ liệu thực tế sẽ được in.

Trình lpdnền kiểm tra /etc/printcaptệp để xác định máy in đích. Nếu máy in đích là một thiết bị cục bộ, lpdhãy đảm bảo một bản sao của lpddaemon đang chạy trên hàng đợi in đó. Mặt khác, lpdmở một kết nối đến máy chủ từ xa mà máy in được kết nối và chuyển cả tệp điều khiển và tệp dữ liệu sang nó.

Công việc in được lên lịch lpddựa trên cơ sở Đầu vào, Xuất trước (FIFO). Tuy nhiên, quản trị viên hệ thống có thể sử dụng lệnh lpc để thay đổi mức độ ưu tiên của các công việc trong hàng đợi in.

Hệ thống lưu trữ SVR4 được Solaris và HP-UX sử dụng. Nó cung cấp nhiều kiểm soát và tính linh hoạt hơn nhưng không được thiết kế để in mạng và phức tạp hơn để thiết lập.

Trong hệ thống lưu lpđệm SVR4, lệnh chấp nhận dữ liệu sẽ được in, tạo một bản sao của nó trong thư mục bộ đệm được liên kết với đích. Đích bao gồm tên máy in và thông số kỹ thuật tùy chọn của lớp mà máy in thuộc về. Khi máy in được chỉ định bận, công việc sẽ được gửi đến một máy in khác trong cùng lớp. Thư mục spool là bình thường /var/spool/lp/request/printer-namevà tệp in được đặt một tên duy nhất để xác định cả công việc và người dùng.

Truy cập vào máy in được điều khiển bởi lpscheddaemon. Nó chọn các công việc từ thư mục spool và gửi chúng đến đích thích hợp khi nó khả dụng. lpsched cũng giữ một bản ghi, thường trong /usr/spool/lp/log. Tệp nhật ký sẽ chỉ ra bất kỳ lỗi nào trong việc xử lý các lệnh in, cũng như tên người dùng,

Xem thêm: Máy in và bộ đệm máy in - lệnh lp, lpstat và hủy | Mẹo và thủ thuật cho Blog của IT


3
Thật tuyệt khi đề cập đến nguồn của bạn ...
Stephen Kitt

Tôi chưa hoàn thành ;-)

3
Tôi khuyên bạn nên sử dụng định dạng Markdown để làm rõ văn bản nào là của riêng bạn và văn bản nào được trích dẫn. Bạn cũng nên ghi nhận tác giả gốc, Jeff Lessem như được giải thích trong unix.stackexchange.com/help/references
Anthony G - công lý cho Monica

4

Không bao giờ quên rằng ống chỉ là viết tắt của S imultaneous P eripheral O perations O n L ine. Kể từ những ngày đầu (nhưng không sớm nhất) của máy tính, bộ xử lý đã tạo ra kết quả nhanh hơn máy in có thể in chúng. Nếu không lưu đệm, bộ xử lý không thể hoàn thành "công việc in" cho đến khi quá trình in hoàn tất. Điều này thường dẫn đến một bộ xử lý nhàn rỗi, chờ máy in xung quanh.

Một bước nhảy vọt trong việc spooling đã đến trong chương trình không gian của Mỹ. Các máy tính đã tạo ra kết quả quá chậm, do đó, một hệ thống spooling mới được viết chỉ dành cho NASA (mặc dù nó và những người kế nhiệm của nó đã trở nên phổ biến cho đến khi tất cả các hệ thống của IBM có chúng). Nó được gọi là H ouston Một utomatic S tổng hợp P rogram, làm HASP viết tắt lồng nhau đầu tiên.

Một sự tương tự tốt để spooling là một nhà máy xử lý luồng - luồng được quay với tốc độ nhanh và được lưu trữ - ở nơi khác - trên một ống chỉ. Sau đó, ống chỉ cuối cùng được đưa vào một máy may hoặc máy khác, chạy với tốc độ chậm hơn nhiều, nơi nó được sử dụng để tạo ra một sản phẩm hoàn chỉnh.


17
Lưu ý rằng việc tạo ra "spool" được coi là một từ viết tắt và "PDQ" chắc chắn là như vậy.
chrylis -on đình công-

6
Đó rõ ràng là một từ viết tắt được xây dựng sau thực tế. Nó trở thành một mốt để lan truyền những tin đồn như vậy. Rất nhiều trong số chúng được liệt kê ở đây , có lẽ đã đến lúc thêm "spool" vào nó!
đường ống

4
@Jennifer Mặc dù IBM chắc chắn đã có một chương trình có tên SPOOL, nhưng nó được phỏng đoán rộng rãi, như trong liên kết Tệp Jargon ở trên, rằng họ đã chọn tên đó như một cách chơi chữ hoặc bắt nguồn từ thuật ngữ hiện có. Dù bằng cách nào, nó có thể đề cập đến việc tải các công việc lên một cuộn băng và sau đó phát lại chúng. Trong cách sử dụng hiện đại, nó không đề cập đến một sản phẩm lỗi thời của IBM cũng không phải là một cuộn băng, vì vậy toàn bộ cuộc tranh luận là khá hàn lâm và tiếp tuyến cho câu hỏi về ý nghĩa của ngày hôm nay.
IMSoP

3
@Jennifer Vâng, tôi không sai khi phỏng đoán rộng rãi, ngay cả khi mọi người sai khi phỏng đoán nó. Và ngay cả khi đúng là IBM đã phát minh ra thuật ngữ này, tại sao họ lại chọn những từ đó? Có phải họ đã viết tên đó bằng tay và sau đó nói "ồ, đó là một sự trùng hợp ngẫu nhiên, nó đánh vần một từ tiếng Anh" - hoặc nhiều khả năng họ đang tìm kiếm một thuật ngữ có vẻ phù hợp với chức năng và nghĩ rằng "làm hỏng công việc băng "là một hình ảnh tốt?
IMSoP

4
Bài đăng này sẽ được hưởng lợi rất nhiều từ trích dẫn, đặc biệt cho tuyên bố từ nguyên của nó.
TemporalWolf

3

Spooling là một thuật ngữ trường học khá cũ. Ngày nay, bạn sẽ thấy "Hàng đợi in" được sử dụng thường xuyên hơn.

To Queue là một câu nói của người Anh "chờ xếp hàng". Vì vậy, các công việc in được "xếp hàng", tức là chờ xếp hàng để in.

Sau khi một công việc đã hoàn tất việc lưu trữ (có thể có thời gian "suy nghĩ" dài giữa các dòng in), thì nó được in, nói chung là trong cơ sở FIFO nhưng ưu tiên Công việc In có thể ghi đè lên nó.

Các cuộn in và hàng đợi có thể được tạm dừng để Người vận hành thay đổi giấy. Cũng có thể được khởi động lại nếu một số trang bị hỏng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.