ทำไมเวลา Unix ถึงเริ่มตั้งแต่ 1970-01-01


คำตอบ:


28

ฉันจะไม่รู้จักคำตอบยกเว้น google อยู่ที่นั่นสำหรับฉัน:

จากที่นี่ (ต้องการสมัครฟรี):

Linux ปฏิบัติตามประเพณีที่กำหนดโดย Unix นับเวลาไม่กี่วินาทีนับตั้งแต่ "วันเกิด" อย่างเป็นทางการ - เรียกว่า "ยุค" ในแง่การคำนวณ - ซึ่งคือ 1 มกราคม 1970

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


5

Unix ไม่ได้เกิดในปี 1970

ยุค Unix คือเที่ยงคืนของวันที่ 1 มกราคม 1970 มันสำคัญที่ต้องจำไว้ว่านี่ไม่ใช่ "วันเกิด" ของ Unix - ระบบปฏิบัติการรุ่นคร่าวๆนั้นอยู่ในช่วงทศวรรษ 1960 แทนวันที่ถูกตั้งโปรแกรมเข้าสู่ระบบบางครั้งในช่วงต้นยุค 70 เท่านั้นเพราะสะดวกในการทำตาม Dennis Ritchie หนึ่งในวิศวกรที่ทำงานกับ Unix ที่ Bell Labs ในการเริ่มต้น


สะดวกสบายตั้งแต่นั้นมาไม่สะดวกสำหรับนักพัฒนาทั่วโลกนับตั้งแต่นั้นมา
Chris Halcrow

3
@ChrisHalcrow: สิ่งที่คุณจะเลือกเป็นเวลา 0 ถ้าคุณเป็น DMR? และตัวเลือกไม่สะดวกสำหรับนักพัฒนาอย่างไร ความไม่สะดวกเป็นเพราะการวัดเวลาในคำว่า "มนุษย์" (ปี, เดือน, วัน, ชั่วโมง / นาที / วินาที, เขตเวลา, เวลากลางวัน) มีความซับซ้อนไม่ใช่เพราะบางคนเลือก ($) = $ $ ทันที
NickD

@ NickD, พร้อมรับคำอธิบายและจุดดี! ฉันจะเลือก 00:00:00 ของ CE 0 เนื่องจากฉันมั่นใจว่าจะทำให้การคำนวณง่ายขึ้นเล็กน้อย โปรดอธิบายว่า 'dmr' คืออะไร? ความจริงที่ว่า OP ต้องการคำอธิบายว่าทำไมวันที่เลือกนี้แสดงให้เห็นว่ามันทำให้ผู้อื่นสับสนในการเข้าใจการใช้ 01/01/70 เป็นวันที่อ้างอิง!
Chris Halcrow

2
@ChrisHalcrow: dmr = Dennis Ritchie คุณคำนวณจำนวนวินาทีจากแหล่งกำเนิดที่คุณเลือกจนถึงปัจจุบันหรือไม่? ต้องใช้บิตกี่ตัว? PDP-11 มีการลงทะเบียนและคำศัพท์ 16 บิต แต่อนุญาตให้คุณรวมกลุ่มสองรีจิสเตอร์และสองคำเพื่อให้การลงทะเบียน 32- บิตและคำสองคำสำหรับการดำเนินการบางอย่าง นั่นทำให้คุณ +/- 68 ปีจาก 0 เวลาของคุณ (หรือ +136 ปีถ้าเวลาของคุณไม่ได้ลงชื่อ - แต่ dmr เลือกที่ลงชื่อ) ทางเลือกของเขาอาจจะทำให้สับสนเล็กน้อยในครั้งแรกที่คุณเห็น แต่มันเป็นการตัดสินใจที่ชัดเจนมากที่กล่าวมาข้างต้น ...
NickD

1
@NickD - คำอธิบายที่ดีมาก! นี่ควรเป็นส่วนหนึ่งของคำตอบที่ได้รับการยอมรับ - ทำไมไม่ย้ายความคิดเห็นของคุณที่นั่นและเราสามารถลบของเราออกจากที่นี่?
Chris Halcrow

1

ฉันชอบคำถาม :-)

ให้ฉันพยายามตอบ (แหล่งที่มาของหลักสูตร: อินเทอร์เน็ต)

Unix Time แสดงด้วยจำนวนเต็ม 32 บิต (จำนวนเต็ม) ที่สามารถเป็นค่าบวกหรือค่าลบ (เซ็นชื่อ) Unix ได้รับการพัฒนาใน 60 และ 70 ดังนั้น "เริ่มต้น" ของ Unix Time ถูกตั้งค่าเป็น 1 มกราคม 1970 เวลาเที่ยงคืน GMT (เวลามาตรฐานกรีนิช) - วันที่ / เวลานี้ถูกกำหนดค่า Unix Time เป็น 0 นี่คือสิ่งที่รู้ เป็น Unix Epoch

จำนวนเต็มที่ลงนาม 32 บิตสามารถแทนตัวเลขทั้งหมดระหว่าง -2147483648 และ 2147483647 เนื่องจาก Unix Time เริ่มต้นที่ 0 ค่า Unix Time เชิงลบจะย้อนเวลากลับจาก Epoch และตัวเลขที่เป็นบวกเดินหน้าต่อไป ซึ่งหมายความว่า Unix Time มีช่วงเวลาจากค่า Unix Time ของ -2147483648 หรือ 20:45:52 GMT ในวันที่ 13 ธันวาคม 1901 ถึง Unix Time ค่า 2147483647 หรือ 3:14:07 GMT วันที่ 19 มกราคมในปี 2038 วันที่เหล่านี้แสดงถึงจุดเริ่มต้น ก่อนประวัติศาสตร์และสิ้นสุดเวลา Unix

เวลาสิ้นสุดของ Unix จะเกิดขึ้นในวันที่ 19 มกราคม 2038 03:14:07 GMT ในวันที่ 19 มกราคม 2038 03:14:08 GMT คอมพิวเตอร์ทุกเครื่องที่ยังคงใช้ Unix Time 32 บิตจะล้น สิ่งนี้เรียกว่า "ปัญหาปี 2038" บางคนเชื่อว่านี่จะเป็นปัญหาที่สำคัญกว่า "ปัญหาปี 2000" การแก้ไขปัญหาปี 2038 คือการจัดเก็บ Unix Time ในจำนวนเต็ม 64 บิต นี่กำลังดำเนินการอยู่ในระบบปฏิบัติการ 64 บิตส่วนใหญ่แล้ว แต่หลายระบบอาจไม่ได้รับการอัพเดตภายในปี 2581


5
มีเพียงย่อหน้าเดียวเท่านั้นที่ตอบคำถามนี้และมันค่อนข้างไม่ถูกต้อง (ยุคเริ่มแรกในปี 1971 มันถูกย้ายในภายหลัง)
Michael Mrozek


1
นั่นใช่ไมเคิล จากวิกิพีเดีย: รุ่นแรกสุดของเวลา Unix มีจำนวนเต็ม 32 บิตเพิ่มขึ้นในอัตรา 60 Hz ซึ่งเป็นอัตรานาฬิการะบบบนฮาร์ดแวร์ของระบบ Unix รุ่นแรก ค่า 60 Hz ยังคงปรากฏในบางอินเตอร์เฟสของซอฟต์แวร์ ยุคยังแตกต่างจากค่าปัจจุบัน คู่มือโปรแกรมเมอร์รุ่นแรกของ Unix Programmer ลงวันที่ 3 พฤศจิกายน 1971 กำหนดเวลา Unix เป็น "เวลาตั้งแต่ 00:00:00, 1 มกราคม 1971, วัดเป็นหกสิบวินาที"
Nikhil Mulley

@Nikhil ฉันยังไม่เข้าใจว่าทำไม 1970 เพียงเพราะ Unix ได้รับการพัฒนาในเวลานั้น? ทำไมไม่ 1960 หรือเดือนที่แตกต่างกันในวันที่แตกต่างกันอย่างไร
นักรบ

@Nikhil หรือไม่เป็นไร เพียงแค่เดือนแรกวันแรกดูดีขึ้นและมันถูกสร้างขึ้นในปี 1971 ดังนั้น 1970 จะดูดีขึ้นเช่นกัน?
นักรบ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.