2009-06-10 19 views
10

cách chúng tôi có thể làm việc với các giao dịch hẹn giờ với mili giây (0,001) cách chúng tôi có thể chia giây như chúng tôi muốn? làm thế nào chúng ta có thể đối phó với bản thân thứ hai?cách hàm time() cho biết thời gian hiện tại và ngay cả khi máy tính đã tắt nguồn trước đó?

+20

là Haiku này? ... –

+0

Tôi nghĩ rằng đó là một câu hỏi hợp pháp; có lẽ chỉ là vấn đề ngôn ngữ? Dù sao đi nữa, tôi đã tiếp tục và chỉnh sửa. –

+0

Cảm ơn, tôi chỉ là người mới bắt đầu. – Sherif

Trả lời

38

http://computer.howstuffworks.com/question319.htm

Trong máy tính của bạn (cũng như tiện ích khác), các cường quốc pin một chip gọi là chip Real Time Clock (RTC). RTC về bản chất là một chiếc đồng hồ thạch anh luôn hoạt động, dù có hay không máy tính có điện. Pin cấp nguồn cho đồng hồ này. Khi máy tính khởi động, một phần của quy trình này là truy vấn RTC để có được thời gian chính xác và ngày tháng. Một đồng hồ thạch anh nhỏ như điều này có thể chạy trong 5 đến 7 năm tắt của một pin nhỏ. Sau đó, nó là thời gian để thay thế pin.

+0

+1 cho bit về việc truy vấn RTC khi khởi động. –

0

Bo mạch chủ có đồng hồ đánh dấu. Mỗi dấu tích đại diện cho một đơn vị thời gian.

Để chính xác hơn, đồng hồ thường là một tinh thể thạch anh có thể thẩm thấu ở một tần số nhất định; một số tần số xung nhịp CPU phổ biến là 33,33 và 40 MHz.

+0

Tần số xung nhịp thời gian thực thường hoàn toàn không liên quan đến tần số xung nhịp CPU. Thông thường, một cái gì đó giống như 32.768 KHz. –

9

Máy tính của bạn sẽ có một hardware clock, được cấp nguồn để pin luôn hoạt động ngay cả khi máy tính tắt. PC biết tốc độ của nó chạy nhanh như thế nào, vì vậy nó có thể xác định khi nào một giây trôi qua.

Ban đầu, PC không biết thời gian (nghĩa là nó chỉ bắt đầu đếm từ 0), vì vậy nó phải được cho biết thời gian hiện tại là gì - cài đặt này có thể được đặt trong cài đặt BIOS và được lưu trữ trong CMOS hoặc có thể lấy thông qua Internet (ví dụ: bằng cách đồng bộ hóa với đồng hồ tại NIST).

2

Để trả lời câu hỏi chính, đồng hồ BIOS có pin trên bo mạch chủ của bạn, như câu trả lời của Jian nói. Điều đó giữ thời gian khi máy tắt.

Để trả lời những gì tôi nghĩ câu hỏi thứ hai của bạn, bạn có thể nhận được thứ hai từ giá trị mili giây bằng cách thực hiện một phép chia số nguyên 1000, như vậy:

second = (int) (milliseconds/1000); 

Nếu bạn đang hỏi làm thế nào chúng tôi có thể nhận được thời gian với độ chính xác đó, hãy nhìn vào câu trả lời của Esteban ... tinh thể thạch anh rung ở một khoảng thời gian nhất định, nói 0,00001 giây. Chúng tôi chỉ tạo ra một mạch đếm các rung động. Khi chúng tôi đã đạt đến 100000 rung động, chúng tôi tuyên bố rằng giây đã trôi qua và cập nhật đồng hồ.

Chúng tôi có thể nhận được bất kỳ độ chính xác nào bằng cách đếm các rung động theo cách này ... bất kỳ độ chính xác nào lớn hơn khoảng thời gian rung của tinh thể mà chúng tôi đang sử dụng.

+0

trước tiên, "Câu trả lời của Esteban" là gì? giây, tôi hiểu lầm tôi hỏi về cách tôi tạo bộ đếm thời gian tạo ra sự kiện mỗi 0,001 tôi không hỏi cách sử dụng nó tôi hỏi về cách chúng ta làm cho nó như thế nào tôi có thể tự do chia thứ hai như tôi muốn? – Sherif

+0

tốt, nếu bạn cần các phần thứ hai, sau đó sử dụng tỷ lệ 1 giây = 1000 mili giây ... vì vậy nếu bạn muốn 1/2 giây, 500 mili giây, nếu bạn muốn 1/5 giây - 200 mili giây, 1/10 giây - 100 mili giây và cứ thế ... –

3

Máy tính biết thời gian bởi vì, giống như bạn, họ có đồng hồ kỹ thuật số mà họ thường xem xét.

Khi bạn nhận được một máy tính mới hoặc chuyển sang một quốc gia mới, bạn có thể đặt đồng hồ đó hoặc máy tính của bạn có thể yêu cầu internet vào lúc nào, giúp dừng biểu mẫu chạy chậm hoặc nhanh.

Là người dùng máy tính, bạn có thể hỏi thời gian hiện tại hoặc bạn có thể yêu cầu máy tính hoạt động như đồng hồ báo thức.Một số máy tính thậm chí có thể tự bật tại một thời điểm cụ thể, để tự sao lưu hoặc đánh thức bạn bằng một giai điệu yêu thích.

Nội bộ, máy tính có thể cho biết thời gian bằng mili giây, micro giây hoặc đôi khi thậm chí là nano giây. Tuy nhiên, điều này không hoàn toàn chính xác và hai máy tính cạnh nhau sẽ có những ý tưởng khác nhau về thời gian tính bằng nano giây. Nhưng nó vẫn có thể hữu ích.

Máy tính có thể đặt báo thức trong vài phần nghìn giây trong tương lai và thường thực hiện việc này để biết khi nào nên ngừng suy nghĩ về chương trình e-mail của bạn và dành thời gian suy nghĩ về trình duyệt web của bạn. Sau đó, nó đặt một báo thức khác để nó biết quay lại e-mail của bạn một vài phần nghìn giây sau đó.

Là một lập trình viên, bạn cũng có thể sử dụng cơ sở này, ví dụ bạn có thể đặt giới hạn thời gian trên một cấp độ trong trò chơi, sử dụng 'bộ hẹn giờ'. Hoặc bạn có thể sử dụng bộ hẹn giờ để cho biết khi nào bạn nên đặt khung hình tiếp theo của hoạt ảnh trên màn hình - có thể là 25 lần/giây (tức là mỗi 40 mili giây).

+1

Tôi không có đồng hồ kỹ thuật số. – Nosredna

+0

mavric. Bạn nên xấu hổ. –

+0

Đây là một cách rất thanh lịch để giải thích thời gian máy tính giữ cho người mới. +1 –

7

Một số tóm tắt, và một số thông tin thêm:

1) Máy tính đọc Real-Time-Clock trong khi khởi động-up, và sử dụng rằng để thiết lập nó là nội đồng hồ

2) Từ đó trở đi, máy tính chỉ sử dụng đồng hồ CPU của nó - nó không đọc lại RTC (thông thường).

3) Đồng hồ bên trong của máy tính có thể bị trôi - do sự bất ổn nhiệt, dao động điện, không chính xác trong việc tìm số chia chính xác trong vài giây, độ trễ gián đoạn, tia vũ trụ và pha mặt trăng.

4) Độ lớn của độ lệch đồng hồ có thể theo thứ tự số giây mỗi ngày (hàng chục hoặc hàng trăm giây mỗi tháng).

5) Hầu hết các máy tính đều có khả năng kết nối với máy chủ thời gian (qua internet) để đặt lại đồng hồ của họ theo định kỳ.

6) Sử dụng máy chủ thời gian có thể tăng độ chính xác trong vòng hàng chục mili giây (bình thường). Máy tính của tôi cập nhật sau mỗi 15 phút.

0

Thời gian tuyệt đối được đo theo khảo cổ bằng cách sử dụng bộ đếm 32 bit giây từ năm 1970. Điều này có thể gây ra sự cố "2038", nơi nó chỉ đơn giản tràn. Do đó các API thời gian 64 bit được sử dụng trên các nền tảng Windows và Unix hiện đại (điều này bao gồm MacOS dựa trên BSD).

Thường thì người dùng PC quan tâm đến khoảng thời gian thay vì thời gian tuyệt đối kể từ khi sự kiện sâu sắc diễn ra. Một thực hiện phổ biến của một máy tính có những thứ gọi là bộ đếm thời gian cho phép điều đó xảy ra. Những bộ hẹn giờ thậm chí có thể chạy khi máy tính không có mục đích bỏ phiếu phần cứng cho trạng thái đánh thức, chuyển chế độ ngủ hoặc ra khỏi chế độ ngủ. Tài liệu xử lý của Intel đi vào chi tiết đáng kinh ngạc về những tài liệu này.

Các vấn đề liên quan