Làm thế nào để máy tính theo dõi thời gian?


69

Làm thế nào máy tính có thể cho biết thời gian và ngày chính xác mỗi lần?

Bất cứ khi nào tôi đóng máy tính (tắt máy), tất cả các kết nối và quy trình bên trong dừng lại. Làm thế nào mà khi tôi mở máy tính một lần nữa, nó lại cho biết thời gian chính xác? Máy tính không tắt hoàn toàn khi tôi tắt máy? Có một số quy trình vẫn đang chạy trong nó? Nhưng sau đó, làm thế nào để máy tính xách tay của tôi cho biết thời gian chính xác khi tôi tháo pin (và do đó buộc phải dừng tất cả các quy trình) và khởi động lại sau vài ngày?


3
Là câu hỏi này thực sự về chủ đề cho trang web này? Nó có vẻ thích hợp hơn cho Super User đối với tôi.
Ilmari Karonen

3
@IlmariKaronen Điều này dường như được tính là câu hỏi về "kiến trúc máy tính", nếu tôi hiểu thuật ngữ này một cách chính xác.
PyRulez

Câu trả lời:


96

Máy tính có "đồng hồ thời gian thực" - một thiết bị phần cứng đặc biệt (ví dụ, chứa tinh thể thạch anh) trên bo mạch chủ duy trì thời gian. Nó luôn được cấp nguồn, ngay cả khi bạn tắt máy tính. Ngoài ra, bo mạch chủ có một pin nhỏ được sử dụng để cấp nguồn cho thiết bị đồng hồ ngay cả khi bạn ngắt kết nối với máy tính. Pin không tồn tại mãi mãi, nhưng nó sẽ kéo dài ít nhất một vài tuần. Điều này giúp máy tính theo dõi thời gian ngay cả khi máy tính của bạn bị tắt. Đồng hồ thời gian thực không cần nhiều năng lượng, vì vậy nó không lãng phí năng lượng. Nếu bạn tháo pin đồng hồ ngoài việc tháo pin chính và ngắt kết nối cáp nguồn thì máy tính sẽ mất dấu thời gian và sẽ yêu cầu bạn nhập thời gian và ngày khi bạn khởi động lại máy tính.

Để tìm hiểu thêm, hãy xem Đồng hồ thời gian thựcpin CMOSTại sao bo mạch chủ của tôi có pin .

Ngoài ra, trên nhiều máy tính, khi bạn kết nối máy tính của mình với kết nối Internet, HĐH sẽ tìm máy chủ thời gian trên mạng và truy vấn máy chủ thời gian trong thời gian hiện tại. HĐH có thể sử dụng điều này để đặt chính xác đồng hồ cục bộ của máy tính của bạn. Điều này sử dụng Giao thức thời gian mạng , còn được gọi là NTP.


1
Một hệ điều hành có thể thiết lập thời gian BIOS? Ý tôi là, nếu tôi buộc thiết lập lại đồng hồ phần cứng, sau đó khởi động và kết nối với NTP hoặc tự đặt đồng hồ, liệu BIOS có nhận ra điều này không?
mèo

1
Đúng. Thay đổi thời gian hệ thống của HĐH sẽ đặt đồng hồ thời gian thực hay còn gọi là thời gian BIOS. Bên trong đồng hồ chỉ đếm số giây (hoặc mili giây) kể từ Kỷ nguyên (thường là ngày 1 tháng 1 năm 1970 00:00), do đó, nó không hoạt động nhiều và có thể được cung cấp năng lượng bởi pin cỡ đồng xu trong nhiều năm. Các hàm cấp cao hơn trong HĐH thực hiện công việc chuyển đổi số đó thành ngày / giờ để hiển thị.
Chris Nava

Tinh thể thạch anh không phải là thiết bị phần cứng đặc biệt theo dõi thời gian (mặc dù nó là một thành phần).
dùng253751

1
@tatan không, điện thoại được cung cấp năng lượng suốt thời gian đó bằng pin của nó. Nó hầu như giống như bạn có thể bật PC của mình bằng cách nhấn nút nguồn của nó khi PC được cho là đã tắt (nhưng không được ngắt khỏi ổ cắm trên tường).
Ruslan

1
Tôi muốn viết lại đoạn cuối, thay đổi máy tính thành HĐH. Bất kỳ PC nào kết nối với Internet có thể không và ngược lại - đó là công việc của hệ điều hành để làm việc này, không phải PC (ngụ ý phần cứng).
MatthewRock

13

Nếu bạn tháo pin trên bo mạch chủ thì máy tính sẽ không có cách nào để biết thời gian.

Đây cũng là trường hợp với điện thoại di động. Nếu bạn để xả điện thoại và sau đó không sạc lại trong hơn một vài tuần, nó cũng sẽ "quên thời gian" vì pin phụ nhỏ được xả hoàn toàn và không có gì bật nguồn trên đồng hồ thời gian thực.

Bạn có thể thử bật nguồn điện thoại di động cũ nếu có và tự kiểm tra xem nó có "quên thời gian" không.

Đây là cách pin trông như thế nào. https://yandex.com/images/touch/search?text=mobo%20battery&source=tabbar

Tôi đã phải mua một vài lần khi tôi bắt đầu kéo dài ít hơn một ngày. Tôi phải cấu hình đồng hồ mỗi khi tôi bật PC.


3
Nhiều hệ điều hành hiện sử dụng NTP (Giao thức thời gian mạng) và có thể sử dụng điều đó để tự động thiết lập lại khi khởi động, vì vậy chúng không thực sự cần đồng hồ tích hợp.
James Snell

3
@JamesSnell Tuy nhiên, điều đó sẽ làm xáo trộn tem thời gian trong logfiles cũng như bất kỳ tệp nào được sửa đổi trong khi khởi động trước khi NTP được bắt đầu.
kasperd

@kasperd - dấu thời gian thực sự không quan trọng bằng trước đây vì nhiều hệ thống sử dụng siêu dữ liệu khác (phiên bản). Nhìn vào nhật ký khởi động từ các hệ thống thiếu RTC như bộ định tuyến hoặc raspberry pi và chúng ghi nhật ký khi thời gian được cập nhật (và những gì cần). Nó có thể quan trọng hơn trong các hệ thống bị ngắt kết nối, nhưng điều đó trở nên ít quan trọng hơn theo thời gian.
James Snell

1
@JamesSnell Tôi có một số máy tính bảng đơn có khả năng chạy hệ điều hành x86 tiêu chuẩn, nhưng chúng thiếu RTC hỗ trợ pin. Cuối cùng, tôi đã cho họ chạy một ngăn xếp mạng tối thiểu tuyệt đối từ trong một ramdisk để chạy 'ntpdate' trước khi bất kỳ truy cập đĩa nào diễn ra.
kasperd

@JamesSnell Có nhưng máy tính xách tay và máy tính bảng kết nối với wifi sau khi chúng khởi động (ít nhất là hầu hết chúng làm điều đó) và chúng không có kết nối ethernet, vì vậy pin vẫn được sử dụng trong hầu hết các máy tính. Ngoài ra máy tính để bàn cũng không có internet mọi lúc. Một số người đóng bộ định tuyến vào ban đêm hoặc không sử dụng internet mọi lúc nếu họ muốn chơi trò chơi hoặc xem phim và không bật bộ định tuyến. Không phải ai cũng muốn được kết nối với internet mọi lúc.
yoyo_fun

2

Khi bạn khởi động Windows, nó sẽ truy cập trực tiếp vào bộ nhớ của Đồng hồ thời gian thực (RTC) và sử dụng các giá trị ngày và giờ của nó để đặt ngày và giờ của máy tính. Ngắt hẹn giờ duy trì thời gian máy tính khi Windows đang chạy. Một Daemon thời gian trong Windows chạy khoảng một lần mỗi giờ sau khi Windows khởi động. Time Daemon so sánh thời gian trong Windows với thời gian trong RTC. Nếu hai lần cách nhau hơn một phút, Windows sẽ thay đổi thời gian và ngày để khớp với RTC. Bạn không thể thay đổi khoảng thời gian để Daemon thời gian chạy.

Nếu bạn sử dụng dịch vụ đồng bộ hóa thời gian, chẳng hạn như công cụ TimeServ.exe đi kèm với Bộ tài nguyên Windows NT 4.0, công cụ sẽ cập nhật thời gian trong Windows và RTC của máy tính. Nếu Windows Time Service chạy trên máy tính chạy Windows 2000, Time Daemon trong Windows không thể chạy khoảng một lần mỗi giờ sau khi Windows khởi động.

Để biết thêm chi tiết, hãy truy cập liên kết này: http://msdn2.microsoft.com/en-us/l Library / ms724936.aspxhttp : //msdn2.microsoft.com/en-us/l Library / ms724942.aspx


Hấp dẫn. Vậy làm thế nào để Windows xác định thời gian chính xác hiện tại (đến micro giây) để trả lời cuộc gọi từ một chương trình (ví dụ: time.time () trong python) và tần suất và cách cập nhật giá trị hiện tại của nó theo thời gian?
jacanterbury
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.