|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 1370
|
[VARI] Da dove viene preso il tempo in windows XP?
Salve a tutti,
ho una semplice applicazione programmata in non so quale linguaggio, credo sia C ma la domanda dovrebbe essere generica per tutti i linguaggi di programmazione. Questa applicazione mostra in alto a sinistra un orologio e memorizza in un file csv gli orari di apertura e chiusura della stessa. Ora se vado a modificare l'orario di sistema (dall'orologio che si trova sulla barra di sistema di windows XP) per ingannare l'applicazione questa visualizza comunque l'orario corretto, come fa l'applicazione a tenere il tempo indipendentemente dal sistema operativo (da dove lo prende il tempo esatto)?!? ![]() NOTA: L'applicazione è molto semplice e dubito fortemente che utilizzi internet per calcolare l'ora esatta |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Hai provato ad eseguire l'applicazione senza collegare il PC in rete?
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 1370
|
Quote:
In particolare ho scoperto che l'ora iniziale viene letta dall'orologio di windows, ma una volta che l'applicazione è partita e sta girando usa un meccanismo interno per continuare a tenere il tempo. Esempio: - L'ora reale è 16:20. - Imposto su windows un'ora falsa, 12:32 - Avvio l'applicazione, il suo orologio segna l'ora falsa 12:32 (i secondi, scorrono, non si tratta di un timestamp). - Mentre l'applicazione è in esecuzione correggo l'ora di windows la riporto a 16:20 - L'orologio dell'applicazione continua a scorrere seguendo l'ora falsa (NON si tratta di un timestamp perchè i secondi ed i minuti continuano a scorrere) |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Quindi si basa sull'ora di Windows che legge solamente all'avvio.
Dopo l'avvio, ogni secondo aggiorna l'orario. Non mi pare ci sia nulla di strano. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 1370
|
Non ho detto che c'è qualcosa di strano, vorrei capire in che modo viene aggiornato l'orario. Esiste un chip "orologio" che viene interrogato dall'applicazione? Come fa l'applicazione nella pratica a sapere che è passato un secondo se non legge dall'orologio di windows?
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Ci sono delle funzioni (come sleep) che permettono di attendere un preciso valore di tempo (ad esempio un secondo) e quindi permettono di realizzare degli orologi. Come è possibile farlo anche con un timer.
Nulla di strano, nessun chip. Anche un semplice programma può attendere un secondo ... (tu non programmi, vero?) |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 1370
|
Quote:
Probabilmente non mi sto spiegando. So che ci sono delle funzioni sleep, quello che vorrei capire è il meccanismo usato da queste funzioni per sapere che è passata una certa quantità di tempo. Deve esserci per forza un servizio del sistema operativo che indica all'applicazione che è passato un certo numero di millisecondi. Altrimenti lo sleep come fa a sapere quando è ora di "risvegliare" l'applicazione e andare avanti? Quello che vorrei sapere è in windows XP qual'è questo servizio |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Non c'è un "servizio" ma lo schedulatore di sistema che si basa sui timer interni.
Ma mi sembra di non capire più quello che vuoi e di essere molto OT rispetto a quello che avevi chiesto. Il programma di cui parli lavora in quel modo e non c'è molto altro da dire. Non penso tu voglia bloccare o modificare i timer di sistema ... |
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 1370
|
Quote:
Bhe direi che in questo caso c'è poco da fare per cambiare le cose.. Grazie mille per le risposte! |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Beh ... è ovvio che non puoi cambiare quello che si basa su chiamate di sistema.
Ma poi, cambiarlo per fare cosa? |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 1370
|
Quote:
Dovrò pensare a qualcosa, grazie per le tue risposte, almeno so che non è quella la direzione in cui cercare. ![]() |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 1370
|
C'è una mia amica che lavora al computer usando questo programma.
Ora, fa dei lavori che devono durare un'ora. Lei è molto veloce e le succede spesso che finisce prima dell'ora e deve rimanere in attesa per poter iniziare il lavoro successivo. Mi ha chiesto se riuscivo a modificare qualcosa per "modificare l'orologio del programma" in modo da fare prima. |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Ah ... immaginavo una cosa del genere ...
|
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Quote:
L'orologio non è nessun software, altrimenti spegnendo il pc si perderebbe l'ora! Non sono sicuro che sia questo, ma sulle motherboard dovrebbe esserci un chip tipo http://goo.gl/d1OOb
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli! ![]() |
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Sì ma non è su quello che si basa il sistema operativo per determinare il passare del tempo. Sono timer hardware che generano interrupt su cui si basa il sistema per la schedulazione delle operazioni.
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:37.