กลับไปหน้าบทความ

อ่าน 4 นาที

บีบอัด (ซอฟต์แวร์)

compress เป็น คำสั่ง เชลล์ สำหรับ การบีบอัดข้อมูล โดยใช้อัลกอริธึม LZW [ 1 ] เป็นคำสั่งเชลล์เสริมที่กู้คืนไฟล์ให้กลับสู่สถานะเดิม (ทั้งเนื้อหาและ เมตาเดตา ) จากไฟล์ที่สร้างด้วย...

บีบอัด (ซอฟต์แวร์)

บีบอัด / คลายการบีบอัด
ผู้เขียนต้นฉบับสเปนเซอร์ โทมัส
ปล่อยกุมภาพันธ์ พ.ศ. 2528 ( กุมภาพันธ์ 1985 )
ระบบปฏิบัติการยูนิก , ระบบคล้ายยูนิก , ไอบีเอ็ม ไอ
พิมพ์สั่งการ
บีบอัดไฟล์ .Z
นามสกุลไฟล์
.Z
สื่อประเภทอินเทอร์เน็ต
แอปพลิเคชัน/เอ็กซ์คอมเพรส
พัฒนาโดยสเปนเซอร์ โทมัส
ประเภทของรูปแบบการบีบอัดข้อมูล

compressเป็นคำสั่งเชลล์ สำหรับการบีบอัดข้อมูลโดยใช้อัลกอริธึมLZW [ 1 ]เป็นคำสั่งเชลล์เสริมที่กู้คืนไฟล์ให้กลับสู่สถานะเดิม (ทั้งเนื้อหาและเมตาเดตา ) จากไฟล์ที่สร้างด้วย uncompresscompress

แม้ว่าครั้งหนึ่งจะได้รับความนิยม แต่compressก็เสื่อมความนิยมลงเนื่องจากใช้อัลกอริธึม LZW ที่ได้รับการจดสิทธิบัตร การใช้งานจึงถูกแทนที่ด้วยคำสั่งต่างๆ เช่นgzipและbzip2ที่ใช้อัลกอริธึมอื่นๆ และให้การบีบอัดข้อมูลที่ดีกว่า เมื่อเทียบกับgzipที่การตั้งค่าที่เร็วที่สุดcompressจะช้ากว่าเล็กน้อยในการบีบอัด เร็วกว่าเล็กน้อยในการคลายการบีบอัด และมีอัตราส่วนการบีบอัด ที่ต่ำ กว่า อย่างมาก [ 2 ]หน่วยความจำ 1.8 MiB ถูกใช้ในการบีบอัด ข้อมูล รางวัลฮัตเตอร์ซึ่งมากกว่าเล็กน้อยเมื่อgzipเทียบกับการตั้งค่าที่ช้าที่สุด[ 3 ]

compressและuncompressยังคงมีอยู่บน ระบบ UnixและBSDและได้รับการพอร์ตไปยังIBM i [ 4 ]

compressได้รับการกำหนดมาตรฐานในข้อกำหนด X/Open CAE ในปี 1994 [ 5 ]และเพิ่มเติมในข้อกำหนดพื้นฐานของ The Open Group ฉบับที่ 6 และ 7 [ 6 ] Linux Standard Baseไม่compressต้องการ[ 7 ]

compressมักจะถูกยกเว้นจากการติดตั้งเริ่มต้นของระบบปฏิบัติการ Linuxแต่สามารถติดตั้งได้จากแพ็คเกจแยกต่างหาก[ 8 ]compressมีให้ใช้งานสำหรับ FreeBSD, OpenBSD, MINIX, Solaris และ AIX

compressอนุญาตให้ใช้ได้กับโปรโตคอลแบบจุดต่อจุด (Point-to-Point Protocol)ในRFC  1977และสำหรับHTTP/1.1ในRFC 9110แม้ว่าจะไม่ค่อยได้ใช้ในระบบการใช้งานสมัยใหม่แล้ว เนื่องจากมี deflate/gzip ที่ดีกว่าให้ใช้งาน  

ใช้

ไฟล์ที่ถูกบีบอัดโดยcompressทั่วไปจะมีนามสกุล" .Z" และบางครั้งจึงเรียกว่าไฟล์ .Z นามสกุลนี้มาจาก โปรแกรม บีบอัดไฟล์ รุ่นก่อน ที่ใช้นามสกุล ".z"

การใช้งาน ส่วนใหญ่tarรองรับการบีบอัดโดยการส่งข้อมูลผ่านทางท่อcompressเมื่อมีการระบุ-Zตัวเลือกในบรรทัดคำสั่ง

gunzipสามารถคลายไฟล์ .Z ได้[ 9 ]

อัลกอริทึม

อัลกอริทึม LZW ที่ใช้ในนั้นcompressได้รับการจดสิทธิบัตรโดยSperry Research Centerในปี 1983 Terry Welchได้ตีพิมพ์บทความ IEEE เกี่ยวกับอัลกอริทึมนี้ในปี 1984 [ 10 ]แต่ไม่ได้ระบุว่าเขาได้ยื่นขอสิทธิบัตรสำหรับอัลกอริทึมนี้ Spencer Thomas จากมหาวิทยาลัยยูทาห์ได้นำบทความนี้ไปใช้และดำเนินการcompressในปี 1984 โดยไม่รู้ว่ามีสิทธิบัตรรอการอนุมัติสำหรับอัลกอริทึม LZW รูปแบบภาพ GIFก็ได้รวมการบีบอัด LZW ในลักษณะนี้ด้วย และ ต่อมา Unisysได้อ้างสิทธิ์ในค่าลิขสิทธิ์จากการใช้งาน GIF Joseph M. Orost เป็นผู้นำทีมและทำงานร่วมกับ Thomas และคณะเพื่อสร้างเวอร์ชันสุดท้าย (4.0) ของcompressและเผยแพร่เป็นซอฟต์แวร์ฟรีให้กับกลุ่ม net.sources USENET ในปี 1985 สิทธิบัตรของสหรัฐอเมริกาหมายเลข 4,558,302ได้รับการอนุมัติในปี 1985 ทำให้compressไม่สามารถใช้งานได้หากไม่จ่ายค่าลิขสิทธิ์ให้กับ Sperry Research (ซึ่งต่อมาได้รวมเข้ากับ Unisys)

สิทธิบัตร LZW ของสหรัฐอเมริกาหมดอายุในปี 2546 ดังนั้นจึงถือเป็นสาธารณสมบัติในสหรัฐอเมริกาแล้ว ปัจจุบัน สิทธิบัตร LZW ทั่วโลกทั้งหมดหมดอายุแล้ว (ดูGraphics Interchange Format#Unisys และการบังคับใช้สิทธิบัตร LZW )

ตามPOSIX.1-2024compressรองรับ อัลก อริ ธึม DEFLATEที่ใช้ในgzip [ 11 ]

รูปแบบไฟล์

เอาต์พุตที่บีบอัดประกอบด้วยกลุ่มบิต แต่ละกลุ่มบิตประกอบด้วยรหัสที่มีจำนวนบิตคงที่ (9–16) แต่ละกลุ่ม ยกเว้นกลุ่มสุดท้าย จะถูกจัดเรียงตามจำนวนบิตต่อรหัสคูณด้วย 8 และเติมศูนย์ทางด้านขวา กลุ่มสุดท้ายจะถูกจัดเรียงตามอ็อกเท็ต 8 บิตและเติมศูนย์ ข้อมูลเพิ่มเติมสามารถดูได้จากประเด็นในที่เก็บ GitHub ของ ncompress [ 12 ]

ตัวอย่าง:

สมมติว่าผลลัพธ์มีรหัส 9 บิตจำนวน 10 รหัส รหัส 10 บิตจำนวน 5 รหัส และรหัส 11 บิตจำนวน 13 รหัส โดยมีกลุ่มข้อมูล 3 กลุ่ม กลุ่มละ 90 บิต 50 บิต และ 143 บิต
  • กลุ่มแรกจะมีข้อมูล 90 บิต บวกกับบิตศูนย์ 54 บิตเพื่อเติมให้ครบ 72 บิต (9 บิต × 8)
  • กลุ่มที่สองจะมีข้อมูล 50 บิต บวกกับบิตศูนย์ 30 บิตเพื่อเติมให้ครบ 80 บิต (10 บิต × 8)
  • กลุ่มที่สามจะมีข้อมูล 143 บิต บวกกับบิตศูนย์ 1 บิตเพื่อจัดเรียงให้ตรงกับ 8 บิต (เนื่องจากเป็นกลุ่มสุดท้ายในผลลัพธ์)

การมีอยู่ของบิตเสริม (padding bits) แท้จริงแล้วเป็นข้อผิดพลาด เนื่องจาก LZW ไม่ต้องการการจัดเรียงใดๆ ข้อผิดพลาดนี้มีมานานกว่า 35 ปีแล้ว และพบได้ในโปรแกรมบีบอัดไฟล์ UNIX ดั้งเดิม , ncompress , gzipและเวอร์ชัน Windows ไฟล์ application/x-compress ทั้งหมด ถูกสร้างขึ้นโดยใช้ข้อผิดพลาดนี้

บางcompressโปรแกรมจะเขียนบิตแบบสุ่มจากบัฟเฟอร์ที่ยังไม่ได้กำหนดค่าลงในส่วนเติม (paddings) ไม่มีการรับประกันว่าส่วนเติมเหล่านั้นจะเป็นศูนย์ โปรแกรมถอดรหัสจะต้องละเว้นค่าในส่วนเติมเหล่านั้นเพื่อความเข้ากันได้

ดูเพิ่มเติม

  • compress: บีบอัดข้อมูล – เอกสารอ้างอิงเชลล์และยูทิลิตี้, ข้อกำหนดยูนิกซ์ฉบับเดียว , เวอร์ชัน 5 จากThe Open Group
  • compress(1) –  คู่มือโปรแกรมเมอร์Unix เวอร์ชัน 8
  • compress(1) –  คู่มือคำสั่งทั่วไปของ FreeBSD
  • compress(1) –  คู่มือคำสั่งทั่วไปของ OpenBSD
  • compress(1) –  คู่มืออ้างอิงคำสั่งผู้ใช้Solaris 11.4
  • ncompress - การใช้งานการบีบอัด/คลายการบีบอัดแบบโอเพนซอร์สสำหรับระบบ POSIX
  • compress - คำสั่ง compress ดั้งเดิมของ Unix (ในไฟล์เก็บถาวรที่ถูกบีบอัด)
  • compress - ไฟล์ปฏิบัติการ compress ดั้งเดิมของ Unix (บีบอัดด้วย gzip)
  • ซอร์สโค้ดสำหรับ compress v4.0 (ไฟล์เก็บถาวรแบบ gzip)
  • ไฟล์ ZIP ที่บรรจุโปรแกรมบีบอัดไฟล์เวอร์ชันสำหรับ Windows
  • ซอร์สโค้ดของ fcompress.c เวอร์ชันปัจจุบันจาก compress
  • การจัดเรียงกลุ่มบิต - คำอธิบายเกี่ยวกับการจัดเรียงกลุ่มบิต
  • lzws - ไลบรารีและ CLI ใหม่ ที่พัฒนาขึ้นโดยไม่ใช้โค้ดเดิม
  • ruby-lzws - ไลบรารีเชื่อมต่อ Ruby ที่รองรับการสตรีมมิ่ง
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Compress_(software)&oldid=1305042970 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ บีบอัด (ซอฟต์แวร์)

compress เป็น คำสั่ง เชลล์ สำหรับ การบีบอัดข้อมูล โดยใช้อัลกอริธึม LZW [ 1 ] เป็นคำสั่งเชลล์เสริมที่กู้คืนไฟล์ให้กลับสู่สถานะเดิม (ทั้งเนื้อหาและ เมตาเดตา ) จากไฟล์ที่สร้างด้วย...

ใช้

ไฟล์ที่ถูกบีบอัดโดย compress ทั่วไปจะมีนามสกุล " .Z" และบางครั้งจึงเรียกว่าไฟล์ .Z นามสกุลนี้มาจาก โปรแกรม บีบอัดไฟล์ รุ่นก่อน ที่ใช้นามสกุล ".z"

อัลกอริทึม

อัลกอริทึม LZW ที่ใช้ในนั้น compress ได้รับการจดสิทธิบัตรโดย Sperry Research Center ในปี 1983 Terry Welch ได้ตีพิมพ์บทความ IEEE เกี่ยวกับอัลกอริทึมนี้ในปี 1984 [ 10 ] แต่ไม่ได้ระบุว่าเขาได้ยื่นขอสิทธิบัตรสำหรับอัลกอริทึมนี้ Spencer Thomas จาก...

รูปแบบไฟล์

เอาต์พุตที่บีบอัดประกอบด้วยกลุ่มบิต แต่ละกลุ่มบิตประกอบด้วยรหัสที่มีจำนวนบิตคงที่ (9–16) แต่ละกลุ่ม ยกเว้นกลุ่มสุดท้าย จะถูกจัดเรียงตามจำนวนบิตต่อรหัสคูณด้วย 8 และเติมศูนย์ทางด้านขวา กลุ่มสุดท้ายจะถูกจัดเรียงตามอ็อกเท็ต 8 บิตและเติมศูนย์...