ตั้งค่านาฬิการะบบใน Unix ให้มีความแม่นยำระดับมิลลิวินาที


1

โดยทั่วไปคุณสามารถตั้งค่านาฬิการะบบโดยใช้ http://linux.die.net/man/1/date . อย่างไรก็ตามมันไม่ได้ให้ความแม่นยำเป็นมิลลิวินาที (มันมีนาโนวินาที แต่มันไม่ทำงานในระบบของฉัน) มีวิธีอื่นในการตั้งค่านาฬิการะบบหรือฉันจะต้องเขียนโปรแกรม C เพื่อทำมัน?

คำตอบ:


2

ถ้า ntpd คือหนักสำหรับคุณลอง OpenNTPD . มันไม่ได้อ้างว่ามีความแม่นยำในระดับไมโครวินาที แต่ทำให้นาฬิกาของเซิร์ฟเวอร์ของฉันมีความสอดคล้องกัน ใช้ sntp ซึ่งมีน้ำหนักเบากว่าเล็กน้อย

ดังที่คนอื่น ๆ บอกไว้ว่านาฬิกาฮาร์ดแวร์ดริฟท์คุณไม่สามารถตั้งค่าและปรับมันได้


2

คุณควรใช้ ntpd ซึ่งจะทำให้ระบบของคุณถูกต้องโดยการซิงค์กับเซิร์ฟเวอร์เวลาที่ใช้ NTP โปรโตคอลเวลาเครือข่าย.


โดยทั่วไปแล้วความคิดที่ดี แต่ไม่ใช่ในกรณีของฉัน (ระบบฝังตัวซึ่งสามารถพูดคุยกับเซิร์ฟเวอร์ของตัวเองได้เท่านั้น)
Alexey Romanov

1
@Alexey Romanov เซิร์ฟเวอร์ของตัวเองสามารถเป็นเซิร์ฟเวอร์ NTP สำหรับอุปกรณ์เนื่องจากโปรแกรมเดียวกันสามารถทำหน้าที่เป็นเซิร์ฟเวอร์และไคลเอนต์ วิธีนี้คุณสามารถมีอุปกรณ์ชั้นที่ 3 ซึ่งมีความแม่นยำมาก
AndrejaKo

1

แม้ว่าระบบฝังตัวที่มีปัญหาไม่รองรับ NTP คุณจะต้องใช้อะไรมากเช่นนั้นหรือรันโปรแกรม C ของคุณบ่อยๆเพื่อตอบโต้การเบี่ยงเบนของนาฬิกาทั้งสอง นอกจากนี้โปรแกรม C ของคุณจะต้องคำนึงถึงเวลาดำเนินการของตัวเองและเวลาแฝงของการเชื่อมต่อระหว่างคอมพิวเตอร์สองเครื่อง (ระบบฝังตัวและเซิร์ฟเวอร์) โดยเฉพาะอย่างยิ่งเนื่องจากความแม่นยำระดับไมโครวินาทีเป็นสิ่งที่คุณต้องการ

อาจเร็วกว่าที่คุณจะค้นหาอินสแตนซ์ ntpd ที่คุณสามารถกำหนดค่าระหว่างสองระบบ เครื่องมือสำหรับสิ่งนี้มีอยู่เสมอในระบบปฏิบัติการเรียลไทม์สมัยใหม่ (สำหรับคำนิยามของ "เสมอ")


1. ขออภัยมิลลิวินาที (ตามชื่อ) ไม่ใช่ไมโครวินาที 2. ใช่ฉันคำนึงถึงความหน่วง
Alexey Romanov
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.