Wat is een native applicatie? Mobiele applicatie. Native applicaties. Eerste stappen

Op een dag zal het gebrek aan basiskennis over mobiele applicaties waarschijnlijk tot slechte manieren leiden. Laten we het in de tussentijd hebben over wat voor soort toepassingen er zijn. Als we van ver komen, kunnen we slechts drie typen onderscheiden: wat is native app, webapplicatie en hybride.

Weet jij wat een native applicatie is?

Voor de gebruiker zijn native applicaties de applicaties die installatie vereisen. Over het algemeen is dit waar, evenals het feit dat dergelijke applicaties specifiek zijn ontwikkeld voor mobiele platforms (iOS, Android, Windows Phone). Daarom is van de ontwikkelaar vereist dat hij programmeervaardigheden heeft in een specifieke ontwikkelomgeving (xCode voor iOS, eclipse voor Android).

De output is aangenaam verschijning en naadloze interactie van de applicatie met het mobiele besturingssysteem. Ook als het gaat om beveiliging loopt een native app ver voor op zowel een hybride als een webapp. Dergelijke toepassingen met het minste hulpbronnenverbruik maken gebruik van de camera, microfoon, versnellingsmeter, speler en andere functies. Conventioneel kan een native applicatie in twee groepen worden verdeeld: applicaties waarvoor een internetverbinding nodig is, en offline applicaties.

Webapps zijn anders dan een native app

Gebruik een gewone website op een smartphone beste scenario Het is lastig; in het ergste geval valt de lay-out van de site uit elkaar en daarna is het volkomen onmogelijk om ermee te werken. Webapplicaties worden gemaakt met het doel een website vanaf een telefoon te gebruiken. Dus in wezen is dit dezelfde site die is geoptimaliseerd voor mobiele apparaten. In tegenstelling tot een native app hoeven webapps niet te worden geïnstalleerd; ze worden in de browser van uw telefoon uitgevoerd. Afhankelijk van het telefoonmodel (vanaf mobiel platform, om preciezer te zijn) er hangt absoluut niets van af. Bovendien kunnen webapplicaties, ongeacht het platform, niet werken met native telefoonfuncties.

Maar wat is een native app dan vergeleken met een mobiele website? De grens tussen een webapplicatie en een mobiele site is erg dun. En in deze kwestie zijn het niet alleen de gebruikers die in de war zijn, maar in sommige gevallen ook de ontwikkelaars zelf. Maar er is een verschil. Conventioneel gesproken bevat de site min of meer statische informatie en lijkt het op een digitale brochure. In een webapplicatie kan de gebruiker een deel van deze informatie beheren: creëren eigen pagina's, links, teksten, etc. uitwisselen

Dus eenvoudiger met webapplicaties noem alles wat gewoonlijk online services wordt genoemd. Een webapplicatie kan ook iets genoemd worden dat ooit in Flash werd gedaan, en nu in HTML5.

Hybride apps

Een hybride applicatie wordt hybride genoemd omdat deze een aantal functies van een native applicatie en een webapplicatie combineert. Dit is een platformonafhankelijke applicatie die kan werken met telefoonsoftware. Deze applicaties worden, net als native applicaties, gedownload uit de applicatiestore, maar de gegevens worden autonoom bijgewerkt. Daarom hebben ze altijd een internetverbinding nodig - zonder deze werken webfuncties niet.

Wat te kiezen? native app, hybride of web?

Het ontwikkelen van een hybride app is goedkoper en sneller dan het maken van een native app. Maar gebruikers zullen het verschil toch niet merken. Dat is waarom hybride technologieën meest populair. Ondanks al deze complexiteit is het beslissen over de technologiekeuze voor het ontwikkelen van een applicatie heel eenvoudig. Als uw applicatie niet kan werken zonder native functies mobiele apparaten, als het heel belangrijk is hoge snelheid gegevensverwerking (games, sociale netwerken, geolocatie), dan kun je niets beters vinden dan een native applicatie. Wanneer snelheid kan worden verwaarloosd, is een hybride toepassing geschikt. Er moet een webapplicatie worden gemaakt als de gebruiker niets anders van u nodig heeft dan de informatie die hij van zijn telefoon zou kunnen krijgen als hij internet had.

Vertaald uit het Engels betekent native “native”. Voor mobiele telefoons wordt een native applicatie ontwikkeld voor een specifiek besturingssysteem. Dit gebeurt door specialisten die over bepaalde kennis en vaardigheden op dit gebied beschikken. Voor native toepassingen mooi ontwerp, ze communiceren vrijelijk met het mobiele besturingssysteem en kunnen via een internetverbinding of offline werken.

Wat is dit?

Een native applicatie is een ontwikkeling die beschikbaar is voor één apparaatplatform. Er zijn bijvoorbeeld mobiele applicaties die daar speciaal voor zijn ontworpen Android-platforms of iPhone. Met ontwikkeling moderne technologieën, het uiterlijk diverse toepassingen(native, hybride, web) er zijn nu opties om uit te kiezen. Native applicaties worden gedownload via speciale winkels ( App Store, Google Spelen) en zijn geïnstalleerd op een smartphone.

De bijzonderheid is dat ze zijn ontwikkeld voor een specifiek platform, waarbij bij het schrijven gebruik wordt gemaakt van ‘native’ programmeertalen. Als een applicatie voor een specifiek besturingssysteem is gemaakt, werkt deze goed en ziet deze er organisch uit. Bovendien maakt de applicatie eenvoudig gebruik van smartphonesoftwarefuncties, zoals een camera, microfoon, speler, en bespaart apparaatbronnen.

Een van de meest bekende voorbeelden native applicaties - Shazam. Het detecteert welk nummer op een ander apparaat wordt afgespeeld. Shazam wordt vanuit de winkel geïnstalleerd, vereist internettoegang en vereist een smartphone-voicerecorder om te kunnen werken. Instagram is een populaire native applicatie waarvoor een internetverbinding nodig is om te werken.

Doel

Mobiele applicatie V moderne wereld is een communicatiekanaal tussen mensen en bedrijven. Ze zijn noodzakelijk in het bedrijfsleven. Via hen kunt u een dienst of product verkopen, met klanten communiceren en een bedrijfsstructuur met partners creëren. Telefoonapplicaties helpen de interne communicatie binnen een bedrijf te optimaliseren. Tegenwoordig kun je via mobiele applicaties kranten lezen en erachter komen laatste nieuws, tv-programma's en films kijken. En dit alles ongeacht het tijdstip en de locatie. Toepassingen zijn manieren om producten te promoten en diensten te presenteren. Dit is een uitstekend marketinginstrument. Bovendien kunt u via mobiele applicaties terecht sociale media, communiceer met vrienden en doe zaken. Het bijzondere is dat ontwikkelaars een applicatie op maat voor een smartphone kunnen maken, specifiek voor een specifiek project.

De ontwikkeling van native applicaties voor bedrijven doorloopt drie hoofdfasen. De eerste is het aanpassen van een bestaande website voor een smartphone (het maken van een webapplicatie). De tweede fase is het creëren van hybride applicaties die webtechnologieën en functies van mobiele apparaten combineren. De derde stap is het schrijven van een native applicatie voor mobiele telefoon. Het is het meest arbeidsintensief, maar stelt u in staat de mogelijkheden te realiseren besturingssysteem apparaat en bereik de beoogde resultaten door de uitgebreide functionaliteit van de smartphone. De populariteit van native applicaties hangt af van hun hoge prestaties, foutopsporing, stabiliteit en vermogen om zonder internet te werken. Door vervolgens naar de app store te uploaden, kan de ontwikkelaar verkoopstatistieken bijhouden. Gebruik native applicaties als u een grote hoeveelheid gegevens moet verwerken hoge snelheid werk.

Soort

Soorten mobiele applicaties: native, web en hybride hebben overeenkomsten. Native versies zijn speciaal geschreven voor besturingssystemen zoals iOS. Android, Win-telefoon. Ze worden gedownload via applicatiewinkels en voldoen aan hun vereisten. Native applicaties werken snel en soepel dankzij optimalisatie voor specifieke besturingssystemen. Ze hebben toegang tot apparaatfuncties. Deze applicaties kunnen vanaf internet of standalone werken.

Webapplicaties hebben gemeenschappelijke kenmerken Met mobiele versies sites, maar ze hebben de interactiviteit uitgebreid. Ze zijn zo gemaakt dat u de site via een smartphone kunt gebruiken. Het belangrijkste verschil: de applicatie hoeft niet te worden geïnstalleerd. Al het werk gebeurt via de browser. Het verschil tussen een native- en een webapplicatie is de mogelijkheid om informatie vrijelijk te beheren.

Hybride combineren de functies van de vorige twee. De applicatie werkt met smartphonesoftware omdat deze platformonafhankelijk is. Gedownload uit de applicatiewinkel, werkt via internet. De hybride app is het populairst onder gebruikers. Native wordt gebruikt als een hoge snelheid van informatieverwerking nodig is (sociale netwerken, games of geolocatie). Onthoud die inboorling Android-applicaties Niet geschikt voor iPhone of smartphones met een ander platform.

Voordelen

Een native app heeft een aantal voordelen. Hoge prestaties, interactie met een specifiek besturingssysteem, laag energieverbruik, telefoongeheugen, gebruiksgemak. De voordelen van deze applicatie omvatten maximale functionaliteit en uitstekende snelheid werk, toegang tot software smartphone, in sommige gevallen is voor gebruik geen internetverbinding vereist. U kunt de applicatie alleen via een speciale winkel downloaden en installeren.

Gebreken

Een native app heeft nadelen. Het kost veel tijd om te ontwikkelen en de kosten van een dergelijke applicatie zijn hoger. Van de ontwikkelaar wordt vereist dat hij kennis heeft van een specifieke programmeeromgeving. Bovendien werkt native met één besturingssysteem. Als u iets in de applicatie moet wijzigen, moet u een update uitbrengen.

Hoe te installeren?

Er wordt een native mobiele applicatie geïnstalleerd, rekening houdend met het besturingssysteem van de smartphone. Om te kiezen vereiste toepassing, ga naar een winkel, zoals Google Play, en selecteer de juiste winkel. Download het en installeer het. Over het algemeen werkt de applicatie zolang er een internetverbinding is. Als de installatie mislukt, controleer dan de geheugencapaciteit van uw smartphone. Het zou voldoende moeten zijn voor de installatie.

Native code

Wat betekent 'native app'? Voor velen zal deze zin nieuw lijken, maar in feite bijna alles moderne gebruikers gadgets worden er elke dag mee geconfronteerd. Voor correcte werking ontwikkelaars schrijven over de native applicatie speciale code. Dit commandosysteem machinetaal, die door de smartphone wordt geïnterpreteerd. Met de instructies in de applicatie kan de gebruiker zijn mogelijkheden realiseren volledige kracht. De door de ontwikkelaar verstrekte opdrachten kunnen verschillende lengtes en bereiken hebben. Native applicaties zijn snel vanwege hun compacte maar kleine code.

Deze applicaties zijn Java. Het geeft ontwikkelaars geweldige kansen. Dankzij de veelzijdigheid en het gemak kunt u creëren zo snel mogelijk eenvoudig zakelijke toepassingen. Het goede aan Java-ontwikkeling is dat de tools beschikbaar zijn op alle pc-besturingssystemen, waaronder Linux en MacOS. Als u toepassingen wilt ontwikkelen met Java-taal, hebt u een werkende computer nodig MacOS draaien X. Inheems iOS-app verschilt van Android in de hoeveelheid tijd die aan ontwikkeling wordt besteed.

Prijs

Een gratis ontwerper voor native mobiele applicaties helpt gebruikers deze zelf te maken. Er zijn een groot aantal ontwerpers op internet. De meest populaire en bekende zijn Mijn-apps, Net2Share, BuildApp, MobiumApps, Appsa4u. De constructor My-apps stelt bijvoorbeeld zelfstandig een applicatie voor besturingssystemen samen iOS-systemen en Android. Gebruikers kunnen een van de tien kiezen kant-en-klare sjablonen, afhankelijk van het doel van de toepassing. Het eindresultaat kan in de winkel worden gepubliceerd om te downloaden.

Het volwaardig ontwikkelen van een native applicatie is niet goedkoop. Bepaal uw budget voordat u het plant. Het moet bestaan ​​uit fondsen voor het promoten van het eindproduct en de ontwikkeling zelf. Als een applicatie is voorbereid voor meerdere besturingssystemen, verdubbelen de kosten. Het gaat over over ontwikkeling voor rechtspersonen, Bijvoorbeeld, handelsbedrijven. Hybride apps kosten 30% meer dan native apps, terwijl webapps lage prijs vanwege één enkele codebasis is het daarom winstgevender om ze te ontwikkelen dan native codes.

Het maken van native applicaties is altijd een enorme geldverspilling en er zijn geen standaardprojecten die voor elke klant afzonderlijk worden ontwikkeld. De prijs omvat het ontwerp, het aantal besturingssystemen, het gebruik van technologieën voor het schrijven van code, de complexiteit van het werk, testen, publicatie en andere nuances. Complexe toepassing kan enkele miljoenen roebel kosten. En dit is alleen maar ontwikkeling. Voor publicaties, tests en andere diensten zijn aanvullende financiering nodig. Dat is de reden waarom applicaties worden besteld door grote bedrijven die bereid zijn zich een dergelijk voordeel te veroorloven. Toepassingen brengen verder goed inkomen en in de loop van de tijd afbetalen. Zakendoen, uitbreiden, de vraag naar producten vergroten, een positief imago creëren zijn de voordelen van mobiele applicaties.

Prestatie

Hoe de applicatie werkt, hangt af van de prestaties van de smartphone. Autochtonen hebben directe toegang tot het platform en de functies van de telefoon, wat een positieve invloed heeft op hun productiviteit. Hybride apps kunnen, als ze correct worden uitgevoerd, het internet omzetten in native apps. De prestaties van webapplicaties zijn afhankelijk van de snelheid van de internetverbinding, dus deze kan voor verschillende gebruikers verschillend werken.

Verspreiding

Na ontwikkeling native Windows-applicatie, Android, iOS moeten gebruikers bereiken. Distributie via appstores is het meest beste optie. Er zijn speciale eisen tot het eindproduct, waar de ontwikkelaar zich vooraf aan moet houden. Ze zijn afhankelijk van het interne beleid van de winkel. Als de applicatie succesvol is, downloaden gebruikers deze en ontvangt de eigenaar winst en hogere beoordelingen. Houd er rekening mee dat voor het toevoegen van inhoud (native en hybride ontwikkelingen) aan de app store een bevestigingsprocedure vereist is.

Native applicaties- dit zijn programma's die zijn ontworpen om op besturingssystemen te worden uitgevoerd Windows-systemen NT-familie (NT/2000/XP/2003/Vista/7), geschikt om vroeg op te starten tijdens het opstarten van Windows, vóór het inlogvenster en zelfs voordat Windows-subsystemen starten. Blauw scherm bij Windows opstarten XP, waarin bijvoorbeeld een schijfcontrole plaatsvindt, is dezelfde modus. Native applicaties gebruiken alleen de Native API, ze kunnen alleen functies gebruiken die zijn geëxporteerd uit de ntdll.dll-bibliotheek. WinAPI-functies zijn hiervoor niet beschikbaar.

Native applicaties draaien op het scherm dat verschijnt voordat het inlogvenster verschijnt. Een voorbeeld van een native applicatie is chkdsk-toepassing, dat wordt uitgevoerd voordat u zich aanmeldt bij Windows als de systeempartitie eerder op fouten is gecontroleerd en is uitgesteld tot het opnieuw opstarten. De applicatie wordt uitgevoerd door berichten op het scherm weer te geven, waarna Windows normaal start.

Voordelen van het gebruik van deze modus: de meeste Windows-componenten nog niet gelanceerd, er ontbreken veel beperkingen. Deze modus wordt bijvoorbeeld gebruikt in applicaties die iets met het systeem willen doen Windows-partitie, maar dat kunnen ze niet terwijl het besturingssysteem actief is: defragmenteerders, converters bestandssysteem en soortgelijke hulpprogramma's.

Functies binnen ntdll.dll voorvoegsels hebben Zw En Nt, evenals enkele anderen. Het is duidelijk dat de Zw- en Nt-functies dubbele namen hebben. In feite zijn dit dezelfde functies. Als u op internet zoekt naar een voorbeeld van het gebruik van een functie, moet u eerst met het ene voorvoegsel zoeken en vervolgens met het andere, anders mist u mogelijk iets. Waarom doen ze verschillende voorvoegsels- een apart verhaal, voor het programmeren van native applicaties speelt het geen rol van betekenis.

Voor programmeren zijn prototypes van Native API-functies vereist, maar niet alle definities zijn aanwezig in de WDK-headerbestanden. Het is noodzakelijk om alternatieve headerbestanden te gebruiken, inclusief definities van niet-gedocumenteerde functies en gegevenstypen. U kunt bijvoorbeeld de headerbestanden van de Native Development Kit (NDK) gebruiken die beschikbaar zijn.

Programmeren met een pure Native API is lastig. Je kunt niet zonder een bibliotheek die al enkele routinematige acties implementeert. Er is een bibliotheek met open bron- Je kunt het gebruiken. Op de NDK-pagina werd ook een bepaalde NDL-bibliotheek aangekondigd, maar deze staat niet op de website.

Om de native applicatie te laten starten wanneer Windows opstarten, moet u het in de map system32 plaatsen en de bestandsnaam en eventuele argumenten ervan schrijven in de registersleutel HKLM\System\CurrentControlSet\Control\Session Manager\BootExecute. De sleutel is van het type MULTI_SZ en kan meerdere regels bevatten. De eerste regel daar is Autocheck Autochk * . Hierna kunt u uw programma schrijven. Het programma dat in deze sleutel is geregistreerd, werkt zelfs in een veilige omgeving. Windows-modus (veilige modus), dus wees voorzichtig. Een fout in het programma - en het systeem start niet. Maar u kunt het starten in de veilige modus binnen de applicatie volgen en deze modus afzonderlijk verwerken. U kunt bijvoorbeeld het programma beëindigen als het merkt dat het in de veilige modus draait. Bovendien werkt de console-uitvoer niet in deze modus, ook al start het programma en kan het enkele acties uitvoeren. Gebruikersinteractie is niet mogelijk. Hiermee moet rekening worden gehouden.

Indien nodig kan de native applicatie worden gestart zonder de computer opnieuw op te starten. Gebruik hiervoor het hulpprogramma nrun.exe. Maar dit zorgt er niet voor dat het laadscherm verschijnt en u zult moeten uitzoeken hoe u anders met uw app kunt communiceren als interactiviteit nodig is. IN broncode nrun kun je zien hoe de lancering van native processen wordt geïmplementeerd met behulp van ongedocumenteerde Native API-functies.

Voor native applicaties is het toegangspunt niet main of wmain, maar NtProcessOpstarten. De PE-header van het EXE-bestand heeft een speciaal veld dat het subsysteem aangeeft waarin de applicatie draait. Voor native toepassingen is dit veld ingesteld op een speciale waarde, wat betekent dat de EXE geen subsysteem vereist. U reguliere toepassingen de waarde die overeenkomt met de subsystemen is ingesteld " Windows-GUI" of "Windows-console". Native applicaties worden niet uitgevoerd normale modus Windows-bediening. Wanneer u probeert te starten Windows-programma geeft het bericht weer: "De toepassing kan niet worden gestart in Win32-modus."

Het standaard weergeven van het Cyrillische alfabet op het scherm wordt in deze modus niet ondersteund. Er is een manier om deze beperking te omzeilen, maar de methode is ingewikkeld en werkt momenteel alleen op Windows XP.

Een Native applicatieproject voorbereiden

Ik heb een Native applicatie-projectsjabloon gemaakt: een set bestanden die kunnen worden gebruikt als basis voor het ontwikkelen van uw eigen Native applicatie. De stub bevat een bestand native.c met daarin het toegangspunt tot de applicatie. De overige bestanden zijn ZenWINX-bibliotheekbestanden die zijn aangepast om de functiedefinities van de NDK te gebruiken in plaats van hun eigen definitiebestand. Hierdoor kunt u zowel functies van de bibliotheek zelf als functies van de Native API gebruiken die de ZenWINX-ontwikkelaars vergaten in hun eigen headerbestand op te nemen. NDK is eigenlijk meer volledige catalogus Oorspronkelijk API-functies dan het bestand dat bij de ZenWINX wordt geleverd. U moet het werkstuk compileren met behulp van het build-hulpprogramma van WinDDK (ik gebruik WinDDK versie 1.1.6001.000). U dient de NDK-headerbestanden op te nemen en de paden naar de directory daarin op te geven.

Het is ook mogelijk om direct Native applicaties te ontwikkelen en te bouwen Visuele studio, zonder de WDK-compiler te gebruiken. Hoe u dit kunt doen, staat in het artikel

Heb je je ooit afgevraagd wat er met het besturingssysteem gebeurt op het moment dat het zijn logo tekent en zegt: "Windows starten"? En waarom duurt het laden in het algemeen zo lang? Wanneer het systeem opstart, zijn er immers geen problemen opgelost die complex zijn vanuit computationeel oogpunt!

Wat betekent het laden van het besturingssysteem dan? Voor het grootste deel bestaat dit uit het in kaart brengen van uitvoerbare modules in het geheugen en het initialiseren ervan dienstverleningsstructuren gegevens. Datastructuren leven in het geheugen, dus de bewerkingen ermee zouden in theorie snel moeten zijn. Alles wijst erop dat er juist tijd wordt verbruikt door het proces van het laden van uitvoerbare modules in het geheugen.

Laten we voor de lol eens kijken welke modules, in welke hoeveelheid en in welke volgorde worden geladen wanneer het besturingssysteem start. Om hierachter te komen, kunt u bijvoorbeeld het opstartlogboek van het systeem opvragen. Het testbesturingssysteem in mijn geval is Windows 7 Enterprise x64. We zullen het opstartproces registreren met behulp van de kernel-debugger. Er zijn verschillende opties voor kernel-debuggers, persoonlijk geef ik de voorkeur aan WinDbg. We hebben ook wat hulpmiddelen nodig om de boomstam op magische wijze te transformeren in iets dat prettiger is voor het oog.

Mijnbouw en ambacht

Het instellen van foutopsporing is gemakkelijk te googlen, dus ik zal dit proces niet in detail beschrijven. Omdat we geïnteresseerd zijn in alles wat er gebeurt vanaf het moment dat het systeem opstart, moeten we het item "Cycle Initial Break" aanvinken, met behulp waarvan de debugger stopt zodra het kernel-foutopsporingssubsysteem wordt geladen in het systeem waarvan fouten worden opgespoord . Het dupliceren van de uitvoer naar een bestand kan worden gedaan met behulp van de opdrachten ".logopen" en ".logclose", het is eenvoudig. Ander nuttig commando- ".cls". Het maakt het opdrachtscherm leeg, en ja, alleen het opdrachtscherm.

De functie waarin we geïnteresseerd zijn is “MiCreateImageFileMap”. Dit is een interne functie van de geheugenbeheerder die het uitvoerbare bestand aan het geheugen toewijst. Geheugenprojectie vindt plaats wanneer een sectie wordt gemaakt, bijvoorbeeld bij het opstarten uitvoerbaar bestand. Houd er echter rekening mee dat het feit dat een uitvoerbaar bestand in het geheugen wordt opgeslagen, niet garandeert dat de code ervan wordt uitgevoerd! Deze functie creëert eenvoudigweg een projectie, meestal “in reserve”, zodat als iemand besluit de module uit te voeren voor uitvoering, dit laadtijd kan besparen. Laten we een logboekbreekpunt voor deze functie instellen.

Als je genoeg mana hebt, voer je het volgende commando in:
bu nt!MiCreateImageFileMap "dt nt!_EPROCESS -d Beeldbestandsnaam @$proc; dt nt!_FILE_OBJECT -d Bestandsnaam @rcx; g"
De magische lijn betekent letterlijk het volgende:

  • bu (Onopgelost breekpunt instellen) - stel een onopgelost breekpunt in. Het is niet zo dat iemand of iets het niet toestaat, het is alleen dat je, om het te installeren, moet beslissen op welk adres je het wilt plaatsen. Het is namelijk niet vooraf bekend op welk adres het zich moet bevinden. Bij het laden van een module is de aanwezigheid van vereiste functie, en als een dergelijke functie wordt gevonden, wordt er automatisch een breekpunt ingesteld. Deze installatiemethode is onmisbaar als ASLR is ingeschakeld - willekeurige adresruimte, omdat modules elke keer op verschillende adressen worden geladen en een breekpunt wordt ingesteld op vast adres, zal hoogstwaarschijnlijk zonder werk zijn.
  • nt!MiCreateImageFileMap is het symbool waar u moet stoppen. WinDbg accepteert een invoer in de vorm "module_naam!functie_naam". IN in dit geval nt is een vooraf gedefinieerde alias voor ntoskrnl.exe.
  • Wat volgt is onderdeel van het WinDbg-script, dat elke keer dat deze functie wordt gestopt, wordt uitgevoerd. “dt nt!_EPROCESS -d ImageFileName @$proc” betekent in het Russisch “het veld ImageFileName van de _EPROCESS-structuur weergeven vanuit de nt-module, op voorwaarde dat het wordt weergegeven op het adres dat is gedefinieerd in het pseudo-register van het “huidige proces.” Volgende na het scheidingsteken ";" de opdracht betekent ongeveer hetzelfde, alleen het adres van de structuur wordt uit het rcx-register gehaald, waarin de eerste parameter van de functie wordt doorgegeven aan de Microsoft x64 ABI. "g" betekent "gaan", d.w.z. uitvoering voortzetten.

Een snelle tip voor het gebruik van breekpunten voor loggen: probeer geen debugger-extensies te gebruiken (opdrachten die beginnen met "!"), omdat dit het loggen een orde van grootte langzamer maakt.

Laten we gaan! Laat de breekpuntrem los en wacht. Ik wachtte tot het bureaublad was geladen, d.w.z. Ik ben ingelogd. De resulterende "oogst" wordt enigszins bewerkt, al het onnodige wordt afgesneden voor het gemak van verdere verwerking en aan de python gevoerd. Laten we ons niet concentreren op het parseren van het logboek. Laten we alleen opmerken dat de grafiek met verdere handmatige correctie in de vorm van een Archimedes-spiraal paste, aangezien de knooppunten elkaar overlapten. De resulterende grafiek houdt rekening met de volgorde waarin de bibliotheken worden geladen. Helaas moesten we vanwege de leesbaarheid van de grafiek rekening houden met de laadvolgorde van uitvoerbare bestanden ten opzichte van bibliotheken.

Sterrenkaart


Laten we voorlopig verschillende laadgroepen selecteren.

Het besturingssysteem begint te werken in de module ntoskrnl.exe, de kern van het besturingssysteem. En om nog specifieker te zijn: van de functie KiSystemStartup(). Samen met downloadbaar systeemcomponenten het vormt de basis van het besturingssysteem: scheiding van bedrijfsmodi, basisdiensten voor aangepaste toepassingen enz. Deze groep bevat ook stuurprogramma's die zijn gemarkeerd voor laden tijdens het opstarten van het systeem. Kortom, Windows OS wordt in deze schil geboren.

Het volgende knooppunt is de sessiebeheerder ( sessie beheerder). Hij wordt geïntroduceerd door de eerste daarna systeem proces, te beginnen in Windows - smss.exe. Het proces is opmerkelijk omdat het native is. Windows-proces, dat wil zeggen dat het geen gebruik maakt van het Win32-subsysteem, dat doorgaans nog niet is geladen. Dit proces gebruikt alleen inheemse diensten besturingssysteem via ntdll.dll, een gebruikersmodusinterface voor OS-services. Dit proces is ook een vertrouwd onderdeel van het besturingssysteem en heeft exclusieve rechten. Het kan bijvoorbeeld beveiligingstokens maken. Maar het belangrijkste doel is het creëren van sessies en het initialiseren van subsystemen, zowel grafische als verschillende uitvoerbare systemen (Windows, POSIX). Deze schaal voldoet aan ieders behoeften.

Een aanmeldingsgroep bestaat uit verschillende processen. Over het algemeen zijn zij verantwoordelijk voor het initialiseren van sessies. Dit omvat het weergeven van het welkomstscherm, het maken van desktops, het starten van opstartprocessen en het initialiseren van het beveiligingssubsysteem, enz. Deze bezem veegt alle vreemden weg.

De groep diensten bleek het meest omvangrijk. Het heeft een groot deel van zijn volume te danken SuperFetch-service. Dit is degene waarvan ze zeggen dat ze in het weekend van tevoren laadt kantoorpakket, en aan het begin van de werkweek - Stoom met speelgoed. Superfetch laadt een groot aantal modules wanneer het systeem opstart, zodat later “alles sneller werkt.” En naast hem heeft het systeem genoeg service-applicaties en autorun-stuurprogramma's. Ik denk dat iedereen de module Services en toepassingen heeft gezien. Deze ster van het leven brengt alles in het systeem wat nodig is en niet zo veel.

De laatste die ik zal noemen is ieders favoriete explorer.exe. Het is opmerkelijk dat tegen de tijd dat het start, alle modules die het gebruikt al in het geheugen zijn geladen. De schermafbeelding bevatte ook een bepaalde vcredist_x64.exe - de arme man lag op het bureaublad van de experimentele virtuele machine en werd door de dirigent in het geheugen geladen.

Over het algemeen zijn er veel manieren waarop een module in het geheugen kan worden geladen. Het is bijvoorbeeld voldoende om informatie op te vragen uit de bronnen van het uitvoerbare bestand, inclusief het pictogram ervan. Specifiek binnen in dit voorbeeld Explorer heeft gecontroleerd of dit programma verhoogde rechten vereist, d.w.z. Is het de moeite waard om een ​​bijbehorende afbeelding met een geelblauw schild aan het pictogram toe te voegen? Laat me nogmaals opmerken dat het laden van een module in het geheugen niet betekent dat de code ervan moet worden uitgevoerd!

Persoonlijk houd ik de resulterende foto dichtbij. Het laat duidelijk de afhankelijkheden zien van bijvoorbeeld chauffeurs. In combinatie met het hulpprogramma Sysinternals Autoruns kunt u ook zien in welk stadium van het laden bepaalde modules worden opgehaald.

De belastingsgrafiek is gebouwd voor Windows 7 Enterprise x64 OS, geïnstalleerd op een virtueel VMware-machine. Hieronder staan vector afbeelding grafiek en direct een bestand in gml-formaat, waarmee je in elke grafiekeditor kunt spelen.

Niet alle elementen op een webpagina zijn even belangrijk bij het laden. Content die zichtbaar is voor de gebruiker heeft voorrang op content onderaan de pagina.

“Lazyloading” of Lazyloading is dat niet nieuwe technologie. Het wordt door sommige sites op internet gebruikt om het laden van webpagina's te versnellen. In plaats van alle inhoud in één keer te downloaden, deze techniek Hiermee kunt u bepaalde items laden wanneer ze nodig zijn of kort voordat ze nodig zijn.

Laten we als voorbeeld een artikel nemen dat uit drie pagina's bestaat. De afbeeldingen op de derde pagina kunnen onmiddellijk worden geladen wanneer de gebruiker het artikel opent, of ze kunnen worden geladen wanneer de gebruiker naar de tweede pagina gaat. In het tweede geval de laadtijd startpagina zal worden verminderd.

Lui laden in Chrome

chrome://flags/#enable-lazy-image-loading
  • Schakel de vlag in om lui laden van afbeeldingen in Chrome mogelijk te maken.
  • Kom binnen adresbalk Chrome het volgende adres:
chrome://flags/#enable-lazy-frame-loading
  • Schakel de vlag in om lui laden van frames in Chrome in te schakelen.
  • Start uw Chrome-browser opnieuw.

Als gevolg hiervan laadt Chrome afbeeldingen en frames terwijl de gebruiker door de pagina scrollt.

Wat zijn de voordelen voor Chrome-gebruikers?

De Lazy-laadtechniek verbetert de laadtijd van sommige pagina's door te voorkomen dat bepaalde elementen worden geladen wanneer de pagina wordt geopend en deze alleen te laden wanneer u over de pagina scrollt. IN Chroom gegeven De techniek is alleen van toepassing op afbeeldingen en frames.

Lazyloading is vooral handig bij langzame verbindingen. Op pc met hoge snelheidsverbinding Op internet is het verschil moeilijk te zien. Als u gebruikt zwakke kanalen toegang (5 Mbps) of minder, zult u de voordelen van lui laden merken, vooral op pagina's met een groot aantal afbeeldingen en kaders.

Bovendien bespaart Lazy Load verkeer gemeten aansluitingen naar internet. Als de gebruiker de pagina sluit zonder te scrollen, worden de afbeeldingen en frames onderaan nooit geladen.

Het is nog niet duidelijk hoe nieuwe functie werkt op sites die al gebruik maken van lazyloading. Zal er een inheemse zijn? Chrome-functie wordt de verbinding verbroken of zullen er potentiële conflicten zijn?

Een typefout gevonden? Druk op Ctrl+Enter