shtëpi » Halucinogjene » Koha është absolute që nga Njutoni. Njutoni prezantoi konceptin e "kohës absolute"

Koha është absolute që nga Njutoni. Njutoni prezantoi konceptin e "kohës absolute"

Një gjë tjetër që duhet përmendur kur flasim për Procesorin është shpejtësia absolute e pakufizuar e llogaritjeve të tij. Ose më mirë, as shpejtësia - "shpejtësia" presupozon një frekuencë të kufizuar, të llogaritshme të lëvizjeve gjatë zbatimit të procesit. Por llogaritjet e Procesorit nuk kanë frekuencë, nuk ka procese kohore si të tilla. Në fakt, "Procesori" mori emrin e tij falë të njëjtës analogji kompjuterike, si ngjashmëria më e afërt në kuptim. Por vetëm e përafërt - ndryshimet midis procesorit dhe procesorëve të kompjuterit janë thelbësore dhe të pakapërcyeshme. E thënë thjesht, nëse karakterizojmë "shpejtësinë" e llogaritjeve të Procesorit, atëherë asnjë simbol i vetëm informacioni i ndonjë programi nga Infofield nuk do të ndryshohet në asnjë mënyrë derisa llogaritjet përkatëse "të kryhen" nga procesori. Me fjalë të thjeshta, Bota nuk do të lëvizë derisa të dijë se si ta bëjë këtë. As perceptimi i asnjërës prej krijesave nuk do të lëvizë. Unë e kuptoj që një përshkrim i tillë të kujton shumë ato marrëzitë ezoterike për atë që ka në " në një mënyrë delikate“Padyshim që po ndodh një gjë e keqe me kohën. Prandaj, le të sqarojmë temën e kohës.

Logjika e ndërveprimit programe të ndryshme V mjedis të unifikuar(Infofield) supozon ekzistencën e një kohe absolute për të gjithë këtë mjedis, duke sinkronizuar të gjitha proceset. Pra, besoj se parametrat e kësaj kohe absolute vendosen nga Archbeing dhe përshkruhen në formën e një pakete të veçantë softuerike në Infopol.

Si e bën këtë? Elementare. Vetë koncepti i kohës është raporti i shpejtësisë së një procesi me shpejtësinë e një procesi tjetër, domethënë ne operojmë në terma kohorë. Çdo proces përfaqëson logjikisht një ndryshim diskret të gjendjeve. Nëse po flasim për një program ose bazë të dhënash të caktuar si një sekuencë karakteresh, atëherë gjendja nr. 1 (një sekuencë) ndryshon papritur në gjendjen nr. 2 (një sekuencë tjetër). Ndryshime të tilla ndodhin me një frekuencë të caktuar F. Dhe tani nëse e konsiderojmë të gjithë Infofieldin si një bazë të dhënash, do të arrijmë gjithashtu te prania e një frekuence - tashmë themelore, në të cilën ndryshon gjendja totale e të gjithë informacionit të të gjithë Infofieldit. Truku është se periudha ndërmjet ndryshimeve në dy gjendje të tilla do të jetë minimumi ekzistues, dhe për këtë arsye thelbësisht i pallogaritshëm, sepse llogaritja është relative: të gjitha periudhat e tjera të proceseve më të ngadalta do të llogariten si shumëfish i periudhës minimale. Pra, e quajta këtë periudhë minimale shënonikuantike e kohës absolute. Do ta shënojmë si më poshtë: [ dru tik]. Përdorimi i këtij dimensioni në formula na lejon të sjellim saktësinë e matjeve të kohës në maksimum absolut.



Kështu, frekuenca e programeve mund të matet si në sekonda ashtu edhe në shenja:

F = =

Dhe energjia e qenieve gjithashtu:

E = [keV/s] = [keV/shënoni]

Epo, falë njohurive për frekuencat e proceseve të ndryshme softuerike, ne mund të kalojmë lehtësisht nga koncepti i kohës absolute në kohën e njohur. Si e masim tonën koha e zakonshme? Në sekonda tokësore. Pra, për ta kthyer kohën tonë tokësore në kohë absolute dhe anasjelltas, duhet të dimë se sa rriqra përshtaten në një sekondë tokësore. Ende nuk e di saktësisht se sa, por besoj se është padyshim më shumë se 10 50 (kohëzgjatja e një tik-tak duhet të jetë shumë më e vogël se koha e Planck).

Kështu që, me fjalë të thjeshta, gjërat janë ashtu siç janë në mënyrën e mëposhtme. Procesori, me fuqinë e tij absolute, llogarit gjendjen e të gjithë Universit (të gjitha programet e Infopole), pas së cilës rezultati konsolidohet me ruajtjen e të gjitha ndryshimeve në programet në Infopole - 1 shenjë ka kaluar. Pastaj Procesori përsëri llogarit të gjithë Universin dhe përsëri konsolidon rezultatin - tik-tak i dytë ka kaluar. Pastaj tik-tak i tretë, i katërti e kështu me radhë. Prandaj, nevojitet kohë absolute për të sinkronizuar të gjitha proceset, me fjalë të tjera, për të siguruar unitetin e të gjithë Universit në nivelin e Infopolit.

Dhe gjithashtu - për të sinkronizuar perceptimin e të gjitha qenieve - domethënë, për të siguruar unitetin e të gjithë Universit në nivelin e Metaperceptimit.

Francezi i ulur pranë tij, profesor Vavier, vazhdoi këtë mendim:

Për më tepër: pas kthimit në Tokë, do ta shohim kohën shumë realisht. Koha nga e cila tani po vrapojmë me shpejtësinë e dritës. Djali im dyvjeçar do të jetë tashmë një burrë tridhjetë e dy vjeç. Kush e di, ndoshta për një javë do të bëhem gjysh.

Gjoni e shikoi orën me mosbesim. Ata treguan 15:11 më 23 korrik 1981. Dita e tretë e fluturimit, e cila duhej të zgjaste një muaj për astronautët dhe tridhjetë vjet të tërë për pjesën tjetër të tokës dhe, më e rëndësishmja, për xhaxhain Harvey, i cili po jetonte ditët e tij!

Okada japoneze, kryekronologu, vuri re shikimin mosbesues të Gjonit dhe buzëqeshi:

Unë shoh që ju nuk mund t'i kuptoni këto gjëra me kohë dhe hapësirë ​​...

“Dikur lexova tregimin e Wells-it “Përshpejtuesi më i ri”, ndërhyri Vavier, “ku edhe koha po “tkurret”, si e jona.

Dhe disi rashë në duart e " Horizonti i humbur"James Hilton," shtoi profesori Ivanov, "është një histori për një luginë të caktuar në Tibet, ku koha rridhte më ngadalë, por pse, në kërkim të një "xhami zmadhues të kohës", thjesht shikoni një xhungël të tillë film lëvizje (siç thonë zakonisht, që është krejtësisht e gabuar, gjithçka e kundërta është e vërtetë - ky është një film me ritëm të shpejtë!) për të parë se si, për shembull, një gotë, duke kërcyer në ajër, bie mbi tavolinë për disa minuta. ose një lule (këtu është filmi me lëvizje të ngadaltë) lulëzon në pak sekonda...

Por pionieri në këtë fushë ishte, ndoshta, Andersen - danezi Jansen nuk do të kishte qenë danez nëse nuk do ta kishte thënë këtë. - Ju, sigurisht, e mbani mend atë përrallë në të cilën princesha, pak para dasmës, përfundoi për mrekulli në parajsë, kaloi vetëm tre muaj atje dhe më pas u kthye te i dashuri i saj. Dhe gjatë kësaj kohe, si të thuash, "në mes", kaluan shumë qindra vjet në Tokë dhe udhëtarja e varfër në kohë u gjet në kryeqytetin e saj vetëm shumë monument antik për një princeshë të caktuar që u zhduk papritur pak para dasmës...

Astronautët ranë në heshtje, Gjoni mendoi: "Çfarë do të ndodhë nëse ekspedita jonë vonohet pak dhe ne nuk kthehemi në 2011, por, të themi, në 2100, a do të skadojë e drejta e trashëgimisë?" Për të mos menduar për gjasat e rrethanave të tilla të trishtueshme, ai foli përsëri:

Ju mund të më akuzoni për injorancë, por unë thjesht nuk mund t'i kuptoj të gjitha këto kohë të ndryshme. Për mua, koha është gjithmonë kohë. Një herë.

A ka vërtet vetëm një? - vuri në dukje me dyshim profesor Okada. - Ju vetë nuk besoni në të. Sa herë keni thënë dhe dëgjuar frazat e mëposhtme: "Çfarë kohe këto ditë!" Kohë të vështira" dhe kështu me radhë. Dëgjo: "kohë", jo "kohë"! Shumësi!

Vetëm kështu thonë...

Por kështu është. Pse dreqin duhet të ketë vetëm një herë? Koha është forma e ekzistencës së materies, ritmi i kësaj ekzistence. Ekzistenca mund të jetë e ndryshme, pra, kështu mund të jenë edhe ritmet. Edhe një organ fuçi është në gjendje të ndryshojë ritmin e tij në varësi të shpejtësisë me të cilën e kthejmë dorezën. Edhe me muzikantin më pedant, i cili vazhdimisht godet të njëjtin çelës në intervale të barabarta, edhe me të do të vërejmë një ndryshim në ritëm, sepse është e pamundur të ruash absolutisht të njëjtën frekuencë dhe forcë goditjesh. Çfarë mund të thuhet atëherë për super-orkestrën simfonike që është bota! Është absolutisht e qartë se për një Methuselah të tillë si, për shembull, uraniumi me gjysmëjetën e tij të gjatë, një mijë vjet është njësoj si një çast për ne! Dhe përsëri, momenti ynë njerëzor, që zgjat gjysmë sekonde, duhet t'i duket si një periudhë kohore astronomike e madhe për disa Anti-Methuselah, për shembull, pi-meson, i cili, siç llogariti Dr. Glasser në vitin 1961, "jeton" për pothuajse dy dhjetëmiliontë e një miliarda e sekondës!

"Tani kuptoj diçka," shtoi Xhoni me faj, por profesori Okada tundi dorën me padurim:

Personi që thotë "tani e kuptoj" ende kupton shumë pak për kohën! “Tani” për një person nuk është aspak modernitet objektiv, por... e shkuar! Për shembull, kur shikoni Diellin nga Toka, ju nuk e shihni atë siç është "tani" në kuptimin tuaj, por perceptoni vetëm atë që është në ky moment retina e syrit tuaj regjistroi, pra një fotografi të Diellit siç ishte plot tetë minuta më parë. Kjo është pikërisht sa kohë i duhet dritës për të udhëtuar nga Dielli në syri i njeriut. Nuk e sheh as shprehjen në fytyrën time “tani”, por do ta shohësh vetëm në të ardhmen, ndonëse afër, domethënë në... një e treqind e miliona e sekondës, pasi “tani” jam në një distancë prej një metri nga ju.

Dhe e gjithë kjo është për shkak të Ajnshtajnit,” psherëtiu profesori Ivanov me gaz. - Deri në fillim të shekullit tonë, gjithçka ishte e thjeshtë me kalimin e kohës. Njutoni, si shumë para dhe pas tij, argumentoi; "Koha absolute lëviz në mënyrë të njëtrajtshme dhe të pavarur nga çdo objekt."

Edhe nëse nuk do të dija për teorinë e Ajnshtajnit, - vuri në dukje profesor Vavier, - "do të kisha marrë me mend vetë se diçka nuk shkonte me këtë uniformitet dhe unitet të kohës. Në shkollë, vura re se një orë lojë futbolli ishte dukshëm më e shkurtër se një orë matematikë, të cilën sinqerisht e urreja.

Zot ki mëshirë! - Bërtiti profesor Ivanov, i frikësuar seriozisht, - atëherë me çfarë mrekullie morët pozitën e Matematikanit të Parë? Nëse ngatërroni llogaritjet tuaja dhe "goditni" raketën tonë si një top futbolli në një drejtim paksa të ndryshëm, atëherë ndeshja jonë me kohën dhe hapësirën mund të përfundojë shumë keq! A mundemi edhe...

Ai nuk mbaroi, duke kujtuar se etika hapësinore i konsideron shakatë për vdekjen në hapësirë ​​si një shenjë të shijes së keqe, diçka si shaka për vjehrrën.

Duhet të bëhet e qartë që në fillim se përpjekja jonë për të shpjeguar evolucionin morfologjik në termat e gjenetikës së zhvillimit do të pengohet vazhdimisht nga veçantia e temës, duke çuar ndonjëherë në dëshpërim. Në ndryshim nga ndryshimet e dukshme fiziologjike ose morfogjenetike që ndodhin në jetën e një individi dhe të cilat mund të vëzhgohen dhe studiohen drejtpërdrejt eksperimentalisht, ndryshimet evolucionare organizmat e gjallë i shmangen vëzhgimit dhe shkalla e tyre është e kufizuar. Si pasojë, pjesa më e madhe e informacionit tonë për evolucionin morfologjik është marrë nga studimi jo i organizmave, por i mbetjeve fosile të tyre, të cilat ne mund t'i konsiderojmë si organizma, duke përdorur të gjitha njohuritë e mbledhura nga biologjia. Me këtë nuk duam të themi se i vetmi burim i të dhënave tona mbi evolucionin janë të dhënat fosile; thjesht donim të tërhiqnim vëmendjen për faktin se informacioni i marrë nga studimi i mbetjeve fosile është cilësisht i ndryshëm nga rezultatet e studimeve biokimike, embriologjike dhe gjenetike që përbëjnë shumica ky libër. Vetëm duke iu drejtuar të dhënave fosile mund të rindërtojmë historinë e vërtetë evolucionare jo vetëm të organizmave të gjallë, por edhe të linjave prej kohësh të zhdukura. Njëlloj e rëndësishme kanë të dhëna gjeologjike që u mundësojnë të matin kohën absolute, në bazë të së cilës mund të llogariten ritmet e procesit evolucionar.

Në realitet, ekzistojnë dy shkallë të kohës gjeologjike - relative dhe absolute. Shkalla relative u krijua në shekullin e 19-të; ajo bazohet në zbulimin inxhinier anglez dhe topografi William Smith, se disa fosile karakteristike, kurdo dhe kudo që i gjen, janë gjithmonë të renditura në të njëjtën sekuencë në raport me njëri-tjetrin në shtresat e shkëmbinjve. Ky zbulim formoi bazën e shumicës së metodave gjeologjike. Metoda relative e takimit bën dy supozime të thjeshta. E para është se shtresat më të reja shtrihen mbi shtresat më të vjetra, dhe e dyta është se çdo shtresë specifike gjeologjike karakterizohet, siç zbuloi Smith, nga mbetjet e veta fosile specifike. Midis tyre ka specie që jetonin vetëm një kohë të shkurtër, dhe për këtë arsye mund të gjendet vetëm në një interval të vogël të regjistrimit stratigrafik. Ato shërbyen si fosile udhëzuese që bënë të mundur lidhjen e shtresave shkëmbinj mbi sipërfaqe të mëdha dhe ndërtoni një shkallë relative kohore. Shkalla kohore relative ishte në përdorim shumë kohë përpara se Darvini të botonte "Për origjinën e llojeve" (1859), por lidhja e saj me kohën absolute ishte e dobët në rastin më të mirë. Në shekullin e 18-të filloi të kuptojë, megjithëse shumë ngadalë, se kronologjia e ngjarjeve të përshkruara në Bibël, e cila u pranua përgjithësisht jo vetëm njerëzit e zakonshëm, por edhe shkencëtarët, kopertinat gjithashtu periudhë e shkurtër kohë në mënyrë që të mund të akomodojë ndryshimet e mëdha që kanë ndodhur në historinë e Tokës, edhe nëse dikush pajtohet me teorinë e katastrofës se jeta u shkatërrua në mënyrë të përsëritur nga shkatërruesit fatkeqësitë natyrore. Besohej se përmbytje globale ishte vetëm e fundit nga këto katastrofa, e cila shkatërroi vazhdimisht gjithçka që ishte krijuar më parë.

Por historia e Tokës dhe jeta në të mund të shikohet nga një këndvështrim tjetër. Ajo u parashtrua në 1795 nga J. Hutton në "Teoria e Tokës". Hutton argumentoi se proceset aktuale të erozionit dhe ngritjes mund, në një kohë të mjaftueshme, të ndryshojnë plotësisht fytyrën e Tokës. Kjo temë u zhvillua në mënyrë shteruese nga Charles Lyell në librin e tij Parimet e Gjeologjisë, botuar për herë të parë në 1830. Ajo dominoi gjeologjinë nën emrin e doktrinës së uniformitarizmit. Nuk ka nevojë për ndonjë katastrofë apo forcë që nuk vërehet aktualisht në Tokë: shirat dhe ngricat dhe thjesht koha mund të rrafshojë malet në tokë. Pafundësia e kohës është çelësi për të kuptuar historinë e Tokës. Hutton shkroi: Nuk mund të gjejmë asnjë gjurmë të një fillimi dhe asnjë aluzion për një fund».

Evolucioni darvinian, i cili çon në ndryshime graduale përmes përzgjedhjes së variacioneve të vogla, kërkoi një kohë shumë të gjatë: teoria e uniformitarizmit e ofruar këtë herë. Megjithatë, kjo u ndoq goditje e rëndë. Fizikani William Thomson, më vonë Lord Kelvin, tregoi në letrat e botuara në 1862 dhe më vonë se parimi i uniformitarizmit binte në kundërshtim me ligjin e dytë të termodinamikës. Koha e pakufizuar nuk është e mundur sepse megjithëse energjia totale në univers mbetet konstante, sasia e energjisë në dispozicion për përdorim zvogëlohet. Kështu, Universi duhet t'i afrohet fundit. Në këtë, Tomson kishte absolutisht të drejtë. Vetëm vlerësimi i tij për kohën e mbetur deri në këtë fund ishte shumë i nënvlerësuar. I vetmi i njohur në shekullin e 19-të. mekanizmi që mund të ngrohte Diellin ishte ngjeshja gravitacionale. Thomson tregoi se një mekanizëm i tillë kufizon jetën e Diellit, dhe në këtë mënyrë të Tokës, në më pak se 100 milion vjet. Kjo reduktoi shumë kohën në dispozicion të evolucionit, pasi vetëm në të pestën e fundit të historisë së Tokës u zbuluan gjurmë të organizmave shumëqelizorë.

Në shekullin e 17-të, ndodhën ndryshime të rëndësishme në natyrën e të menduarit, të lidhura me një rimendim të të kuptuarit të mëparshëm - të lashtë dhe mesjetar - të natyrës. Rolin vendimtar në zhvillimin e mekanikës si shkencë udhëheqëse e natyrës e luajtën ligjet e trupave në rënie të formuluara nga Galileo, falë të cilave ai ishte në gjendje të vendoste parimin që lidh hapësirën dhe kohën. Kjo çoi në një interpretim të ri të konceptit të kohës.

Duke filluar me Njutonin, ndërlidhësi i konceptit të kohës bëhet koncepti i "rrjedhjes së vazhdueshme", fluksi, falë të cilit lëvizja përcaktohet si një proces i vetëm, i rregulluar rreptësisht i bërjes.

Dekarti bën një dallim shumë të qartë midis kohës dhe kohëzgjatjes. Sipas Dekartit, kohëzgjatja përkon me ekzistencën e një sendi dhe është diçka krejtësisht reale; ai e quan atë një atribut, dhe nganjëherë një mënyrë të substancës. Në përcaktimin e kohës si një numër lëvizjesh, Dekarti ndjek Aristotelin. Ai e lidh konceptin e kohës me procedurën e matjes, pra krahasimin, lidhjen e kohëzgjatjes së një sendi të caktuar me kohëzgjatjen e lëvizjes uniforme të rrotullimit të qiellit ose lëkundjes së një lavjerrës. Një krahasim të tillë e bën subjekti, të menduarit e tij, prandaj koha, sipas Dekartit, është një mënyrë të menduari, ndërsa kohëzgjatja është një mënyrë ose atribut i vetë ekzistencës së një sendi. Interpretimi psikologjik i kohëzgjatjes ka marrë zhvillimin e mëtejshëm dhe forma të reja justifikimi në Berkeley dhe Hume. Hume është i bindur se ideja e kohës lind nga sekuenca e përshtypjeve dhe ideve në mendjet tona. “...Koha nuk mund të shfaqet në mendje as vetvetiu, as në lidhje me një objekt konstant dhe të pandryshueshëm, por... gjithmonë na zbulohet me ndihmën e një sekuence të perceptueshme të objekteve që ndryshojnë. Hume nuk bën më dallime midis koncepteve të kohës dhe kohëzgjatjes; ai i përdor këto koncepte në mënyrë të ndërsjellë. "Koha ose kohëzgjatja përbëhet nga pjesë të ndryshme, sepse përndryshe nuk mund të imagjinonim një kohëzgjatje më të gjatë ose më të shkurtër."

1.4.Isaac Njutoni: koha absolute dhe relative

Koha matematikore absolute, e vërtetë në vetvete dhe nga vetë thelbi i saj rrjedh në mënyrë të njëtrajtshme dhe ndryshe quhet kohëzgjatje. Koha relative, e dukshme ose e zakonshme është ose e saktë ose e ndryshueshme, e kuptuar nga shqisat, e jashtme, e realizuar përmes çdo lëvizjeje, një masë kohëzgjatjeje e përdorur në jeta e përditshme në vend të kohës së vërtetë matematikore, si p.sh.: ora, dita, muaji, viti.

Njutoni është i bindur se koha absolute nuk varet nga asgjë e jashtme.

Doktrina e Njutonit për kohën dhe hapësirën absolute u pranua në mënyrë kritike nga një pjesë e komunitetit shkencor. Mes tyre ishte fizikant i shquar dhe matematikani Christiaan Huygens. Ai u shpreh fuqishëm të dy kundër koncepteve të hapësirës absolute

si koha ashtu edhe kundër lëvizjes së vërtetë, duke mos e konsideruar të mundur në asnjë eksperiment të dallohet lëvizja absolute nga ajo relative.

Ndër bashkëkohësit e Njutonit që kundërshtuan doktrinën e kohës dhe hapësirës absolute ishte filozofi gjerman Leibniz. Ai i shikon konceptet e përjetësisë, kohëzgjatjes dhe kohës si një metafizik. Ideja e absolutes është përjetësia; është kjo që shërben si parakusht ontologjik për të pafundmen potencialisht, që është kohëzgjatja. Për Leibniz-in, e unifikuara (përjetësia) paraqet kushtin e mundësisë së të vazhdueshmes (kohëzgjatjes). Ai bën dallimin midis kohëzgjatjes dhe kohës. Kohëzgjatja është një atribut i vetë substancave, ndërsa koha është një mënyrë për të matur kohëzgjatjen.

Një përpjekje për të zgjidhur mosmarrëveshjet që u ngritën në lidhje me problemin e kohës midis Njutonit dhe Leibniz-it u bë nga Immanuel Kant. Ai e shikon kohën dhe hapësirën nga pikëpamja e "matematikës së pastër", e cila, sipas fjalëve të tij, " jep njohuritë më të vërteta dhe në të njëjtën kohë një model të provave më të larta për shkencat e tjera".

Vlera aktuale absolute e kohës (ora e ditës, ora e murit, ora e ditës) përcaktohet në kernel/kohëmatës. me sa vijon.

Struktura kohore xtime;

Struktura e të dhënave kohore c përcaktohet në skedar në formën e mëposhtme.

përcaktimi kohor i strukturës (

koha_t tv_sek; /* sekonda */

tv_nsec e gjate; /* nanosekonda */

1970 (UTC, Koha e Koordinuar Universale). Quhet data e specifikuar epoka(fillimi i një epoke). Në shumicën e sistemeve operative të ngjashme me Unix, koha llogaritet që nga fillimi i epokës. Fusha xtime.tv_nse c ruan numrin e nanosekondave që kanë kaluar në sekondën e fundit.

Leximi ose shkrimi i ndryshores xtime kërkon marrjen e bllokimit xtime_lock. Ky është një bravë - jo një rrotullim i rregullt, por vijues bllokimi, i cili diskutohet në Kapitullin 9, "Veçoritë e sinkronizimit të kernelit".

Për të përditësuar vlerën e ndryshores xtime, duhet të përvetësoni një bllokim sekuencial të shkrimit si më poshtë.

shkruani_seqlock (&xtime_lock);

/* përditësoni vlerën e ndryshores xtime ... */

shkruani_sequnlock (&xtime_lock);

Leximi i vlerës së ndryshores xtim e kërkon përdorimin e funksioneve read _

seqbegin() dhe read_seqretr y() si më poshtë.

i panënshkruar i humbur prej kohësh;

seq = read_seqbegin(&xtime_lock);

usec = timer->get_offset(); humbi = bie mur_xhif; nëse (humbur)

usec += humbur * (1000000 / HZ);

sec = xtime.tv_sec;

usec += (xtime.tv_nsec / 1000);

) while (read_seqretry(&xtime_lock, seq));

Ky cikël përsëritet derisa të garantohet se nuk është shkruar asnjë e dhënë gjatë leximit të të dhënave. Nëse ndodh një ndërprerje e kohëmatësit gjatë ekzekutimit të ciklit dhe ndryshorja xtime përditësohet gjatë ekzekutimit të ciklit, numri i sekuencës së kthyer do të jetë i pasaktë dhe cikli do të përsëritet përsëri.

Ndërfaqja kryesore e përdoruesit për marrjen e vlerës absolute të kohës është thirrja e sistemit gettimeofda y(), e cila zbatohet si funksioni sys_gettimeofday() si më poshtë.

asmlinkage e gjatë sys_gettimeofday (struktura kohore *tv, strukturimi i zonës kohore *tz)

if (ka gjasa (tv !=NULL)) ( struct timeval_ktv; do_gettimeofday (&ktv);

nëse (copy_to_userftv, &ktv, sizeof(ktv))

nëse (nuk ka gjasa (tz !=NULL)) (

nëse (copy_to_user(tz, &sys_tz, sizeof(sys_tz)))

Nëse një vlerë jo zero për parametrin tv kalon nga hapësira e përdoruesit, atëherë thirret funksioni i varur nga hardueri do_gettimeofday(). Ky funksion në thelb kryen ciklin e leximit të ndryshores xtime që sapo u diskutua. Në mënyrë të ngjashme, nëse parametri tz nuk është e barabartë me zero, përdoruesit i kthehet vlera e zonës kohore në të cilën sistemi operativ. Ky cilësim ruhet në variablin sys_tz. Nëse ndodhin gabime kur kopjoni një vlerë absolute të kohës ose zonës kohore në hapësirën e përdoruesit, funksioni kthen -EFAULT. Nëse është e suksesshme, kthehet një vlerë null.

Kerneli siguron thirrjen e sistemit time() 6, por thirrja e sistemit gettimeofday() anashkalon plotësisht funksionalitetin e tij. Biblioteka e funksioneve C ofron gjithashtu funksione të tjera absolute të lidhura me kohën, si ftime() dhe ctirae().

Thirrja e sistemit settimeofday() ju lejon të vendosni kohën absolute në një vlerë të caktuar. Për ta ekzekutuar, procesi duhet të jetë në gjendje të përdorë CAP_SYS_TIME.

Përveç përditësimit të ndryshores xtime, kerneli nuk përdor kohën absolute aq sa hapësirën e përdoruesit. Një përjashtim i rëndësishëm është kodi i sistemit të skedarëve që ruan kohën e hyrjes së skedarëve në indekset e skedarëve.

Timers

Timers(timera), ose, siç quhen ndonjëherë, kohëmatës dinamik, ose kohëmatësit e kernelit, të nevojshme për të kontrolluar kalimin e kohës në kernel. Kodi i kernelit shpesh duhet të shtyjë disa funksione për një kohë të mëvonshme. Këtu është zgjedhur qëllimisht një koncept i paqartë. "Më vonë". Qëllimi i mekanizmit të gjysmave të poshtme nuk është ndaloj ekzekutimi, dhe mos e bëni punën tani. Në këtë drejtim, nevojitet një mjet që ju lejon të vononi ekzekutimin e punës për një periudhë të caktuar kohe. Nëse ky interval kohor nuk është shumë i vogël, por edhe jo shumë i madh, atëherë zgjidhja e problemit janë kohëmatësit e kernelit.

6 Për disa platforma harduerike funksionojnë sys_time () nuk zbatohet, por përkundrazi imitohet nga biblioteka C e funksioneve bazuar në thirrjen gettimeofday ().

Kohëmatësit janë shumë të lehtë për t'u përdorur. Duhet të kryeni disa hapa fillestarë, të specifikoni kohën në të cilën do të përfundojë pritja, të specifikoni një funksion që do të ekzekutohet kur të përfundojë intervali i skadimit dhe të aktivizoni kohëmatësin. Funksioni i specifikuar do të ekzekutohet kur të skadojë intervali i kohëmatësit. Timers nuk jane ciklike. Kur mbaron intervali i skadimit, kohëmatësi eliminohet. Kjo është një nga arsyet pse thirren kohëmatësit dinamike 7. Kohëmatësit krijohen dhe shkatërrohen vazhdimisht, dhe nuk ka kufi për numrin e kohëmatësve. Përdorimi i kohëmatësve është shumë i popullarizuar në të gjitha pjesët e kernelit.

Përdorimi i kohëmatësve

Kohëmatësit përfaqësohen duke përdorur strukturat e listës së kohës r, të cilat janë të përcaktuara në skedar në mënyrën e mëposhtme.

struktura_lista_nivele(

struct list_head hyrja; /* kohëmatësit ruhen në lista e lidhur */

i panënshkruar skadon gjatë; /* koha e skadimit të kohës në pulset e kohëmatësit të sistemit (jiffies) */

mbyllje spinlock_t; /* kyç për të mbrojtur këtë kohëmatës */

void (*funksion) (i panënshkruar gjatë); /*funksioni i mbajtësit të kohëmatësit*/ të dhëna të gjata të panënshkruara; /* argumenti i një mbajtës të vetëm */ struct tvec_t_base_s *base; /*Të dhënat e kohëmatësit të brendshëm, mos i prekni! */

Për fat të mirë, përdorimi i kohëmatësve nuk kërkon një kuptim të thellë të qëllimit të fushave në këtë strukturë. Në fakt, është shumë e dekurajuar që të keqpërdoren fushat e kësaj strukture për të ruajtur përputhshmërinë me ndryshimet e mundshme të kodit në të ardhmen. Kerneli ofron një familje ndërfaqesh kohëmatësish për ta bërë këtë punë më të lehtë. Të gjitha përkufizimet e nevojshme janë në dosje . Shumica e implementimeve janë në skedarin kernel/timer.c.

Hapi i parë në krijimin e një timer është ta deklaroni atë në formën e mëposhtme.

struct timer_list my_timer;

Më pas, fushat e strukturës që janë të destinuara për përdorim të brendshëm. Kjo bëhet duke përdorur një funksion ndihmës përpara se të telefononi ndonjë funksion që funksionon në kohëmatës.

my_timer.skadon s = jiffie s + vonesë ; /* Intervali kohor i kohëmatësit do të përfundojë pas pulseve të vonesës */

7 Një arsye tjetër është se në bërthamat e vjetra (para 2.3) kishte kohëmatës statikë. Këta kohëmatës u krijuan në kohën e përpilimit, jo në kohën e ekzekutimit. Ai kishte mundësi të kufizuara dhe askush nuk është i mërzitur për mungesën e tyre tani.

my_timer.data = 0; /* një parametër i barabartë me zero i kalohet funksionit të mbajtësit Sudet */

time_timer.funksion = my_function; /* funksioni që do të ekzekutohet

kur skadon intervali i kohëmatësit */

Vlera e fushës my_timer.expire s tregon kohën e pritjes në pulset e kohëmatësit të sistemit (duhet të specifikohet numri absolut i pulseve). Kur vlera aktuale e jiffie s bëhet e madhe ose e barabartë me vlerën fushat my_time r. skadon, funksioni mbajtës my_timer.functiio n thirret me parametrin my_timer.data. Siç mund të shihet nga përshkrimi i strukturës timer_list, funksioni mbajtës duhet të përputhet me prototipin e mëposhtëm.

void my_timer_function(të dhëna të gjata të panënshkruara);

Parametri dat a ju lejon të regjistroni kohëmatës të shumtë me një mbajtës dhe të bëni dallimin midis kohëmatësve me të cilët kuptime të ndryshme këtë parametër. Nëse argumenti nuk është i nevojshëm, atëherë thjesht mund të specifikoni zero (ose ndonjë vlerë tjetër).

Operacioni i fundit është aktivizimi i kohëmatësit.

add_timer(&my_timer);

Dhe kohëmatësi fillon! Duhet t'i kushtoni vëmendje rëndësisë së vlerës së fushës së skaduar. Kerneli ekzekuton mbajtësin kur vlera aktuale e numëruesit të impulseve të kohëmatësit të sistemit me shume, se koha e specifikuar e përgjigjes së kohëmatësit, ose të barabartë ndaj tij. Megjithëse kerneli garanton që asnjë mbajtës i kohëmatësit nuk do të ekzekutohet përpara skadimit të kohëmatësit, mund të ketë ende vonesa në ekzekutimin e mbajtësit të kohëmatësit. Në mënyrë tipike, mbajtësit e kohëmatësit ekzekutohen në një kohë afër kohës së ndezjes, por ato mund të vonohen deri në shenjën tjetër të kohëmatësit të sistemit. Prandaj, kohëmatësit nuk mund të përdoren për funksionim të vështirë në kohë reale.

Ndonjëherë mund t'ju duhet të ndryshoni kohën e një kohëmatësi që është tashmë aktiv. Kerneli zbaton funksionin mod_time r(), i cili ju lejon të ndryshoni kohën në të cilën aktivizohet kohëmatësi aktiv.

mod_timer (&kohëmatësi_my, jiffies + vonesa e re); /* vendosja e një kohe të re përgjigjeje*/

Funksioni mod_time r() ju lejon gjithashtu të punoni me një kohëmatës që është inicializuar, por jo aktiv. Nëse kohëmatësi nuk është aktiv, atëherë funksioni mod_timer() do ta aktivizojë atë. Ky funksion kthen 0 nëse kohëmatësi ishte joaktiv dhe 1 nëse kohëmatësi ishte aktiv. Në secilin rast, përpara se mod_time r() të kthehet, kohëmatësi do të aktivizohet dhe koha e tij e ndezjes do të vendoset në vlerën e specifikuar.

Për të çaktivizuar kohëmatësin përpara se të ndizet, duhet të përdorni funksionin del_time r() si më poshtë.

del_timer (&my_timer);

Ky funksion funksionon si me kohëmatës aktiv ashtu edhe me joaktiv. Nëse kohëmatësi është tashmë joaktiv, atëherë funksioni kthen vlerën 0, përndryshe kthen vlerën 1. Vini re se nuk ka nevojë ta thërrisni këtë

funksioni për kohëmatësit që kanë skaduar, pasi ato çaktivizohen automatikisht.

Kur kohëmatësit fshihen, mund të ndodhë një gjendje gare. Kur funksioni del_time r() kthehet, ai vetëm garanton që kohëmatësi do të jetë joaktiv (d.m.th., mbajtësi i tij nuk do të ekzekutohet në të ardhmen). Megjithatë, në një makinë me shumë procesor, mbajtësi i kohëmatësit mund të funksionojë në një procesor tjetër në këtë moment. Për të çaktivizuar një kohëmatës dhe për të pritur që trajtuesi i tij të përfundojë, i cili potencialisht mund të funksionojë, duhet të përdorni funksionin del_timer_syn c():

del_timer_sync(&my_timer);

Ndryshe nga funksioni del_timer(), del_timer_sync() nuk mund të thirret nga një kontekst ndërprerje.

Kushtet e garës të lidhura me kohëmatësit

Për shkak se kohëmatësit ekzekutohen në mënyrë asinkrone në lidhje me kodin aktualisht në ekzekutim, mund të lindin disa lloje të kushteve të konfliktit të burimeve. Para së gjithash, nuk duhet të përdorni kurrë kodin e mëposhtëm si zëvendësim për funksionin inod_timer().

del_timer (my_timer);

my_timer->skadon = zhgënjime + vonesa e re;

add_timer (kohëmatësi_my);

Së dyti, pothuajse në të gjitha rastet duhet të përdorni funksionin del_timer_sync() në vend të funksionit del_timer(). NË ndryshe Nuk mund të garantohet që mbajtësi i kohëmatësit nuk po funksionon aktualisht. Imagjinoni që pasi të hiqet kohëmatësi, kodi do të çlirojë memorien ose do të ndërhyjë në burimet që përdor mbajtësi i kohëmatësit. Prandaj, versioni sinkron është i preferueshëm.

Së fundi, duhet të siguroheni që të gjitha të dhënat e përbashkëta të aksesuara nga funksioni i mbajtësit të kohëmatësit janë të mbrojtura. Kerneli e kryen këtë funksion në mënyrë asinkrone në lidhje me kodin tjetër. Të dhënat e përbashkëta duhet të mbrohen siç diskutohet në kapitujt 8 dhe 9.

Zbatimi i kohëmatësve

Kerneli ekzekuton mbajtësit e kohëmatësit në kontekstin e mbajtësit të ndërprerjeve të shtyra pasi ndërprerja e kohëmatësit të ketë përfunduar përpunimin. Trajtuesi i ndërprerjeve të kohëmatësit thërret funksionin update_process_time s(), i cili nga ana tjetër thërret funksionin run_local_timer s(), i cili duket si ky.

void run_local_timers (void)

ngriti_softirq(TIMER_SOFTIRQ);

Një ndërprerje në pritje me numër TIMER_SOFTIRQ trajtohet nga funksioni run_tirner_softir q(). Ky funksion ekzekuton mbajtësit në procesorin lokal për të gjithë kohëmatësit që kanë mbaruar. ( nëse ka).

Kohëmatësit ruhen në një listë të lidhur. Megjithatë, nuk do të ishte e mençur që kerneli të përshkojë të gjithë listën duke kërkuar kohëmatës që kanë skaduar ose ta mbajë listën të renditur në bazë të kohës së skadimit të kohëmatësve. NË rastin e fundit futja dhe heqja e kohëmatësve do të kërkonte shumë kohë. Në vend të kësaj, kohëmatësit ndahen në 5 grupe bazuar në kohën e përgjigjes së tyre. Kohëmatësit lëvizin nga një grup në tjetrin ndërsa afrohet koha e aktivizimit. Ky grupim siguron që, në shumicën e rasteve, kur ekzekutohet një mbajtës i ndërprerjeve të shtyra, përgjegjës për ekzekutimin e mbajtësve të kohëmatësit, kerneli do të bëjë pak punë për të gjetur kohëmatësit që kanë skaduar. Prandaj, kodi i menaxhimit të kohëmatësit është shumë efikas.



Artikulli i mëparshëm: Artikulli vijues:

© 2015 .
Rreth sajtit | Kontaktet
| Harta e faqes