Utorak, 12. ožujka, 2013. Komentiraj

Windows 8 – pogled ispod haube

Windows 8 – pogled ispod haube

Windows 8 (dalje Osmica) je tiha tehnološka revolucija, Microsoft je opet uspio – WinRT je stigao i „write once, run anywhere“ priča je opet glavna tema u gradu. Tehnoloških novosti ima poprilično, a za nas koji smo živjeli pod kamenom donosimo pregled najbitnijih.

Windows RT

Windows Runtime je runtime engine u Windows 8 i RT varijantama, aplikacijski sloj koji nam omogućuje da se isti kod izvršava jednako dobro i na X86, ali i na ARM procesorima. Uz to nam omogućuje i da pišemo aplikacije u lepezi dobro poznatih jezika – C/C++/C#/VB/JS. Uz to dobijete i set noževa, ili u ovom slučaju možete sučelje vaše aplikacije uređivati u XAML-u ili HTML/CSS-u. Razne kombinacije su uključene, više o svemu ovdje. Aplikacije koje pišemo nad  WinRT-om su Windows Store aplikacije i mogu se pokretati jednako dobro i na tabletima, ali i na stolnim računalima.

WinRT stoji nad Windows Core-om, jezgrom low level dijelova sustava (kernel, korisnički servis i akcije, itd…), i koristeći WinRT API-je možemo pristupiti svemu što se nalazi „niže“, ili bolje reći, svemu nativnom i lijepom. A sad se sjetimo tehnologije koje nam je do sada to omogućavala – WinAPI ili za prijatelje Win32 API. Ako vas je intuicija dovela do pravog problema, vjerojatno se pitate zašto. Naime, Microsoft je odjednom odlučio napustiti dobro dokumentiran i dobro poznat sloj nad kojim smo razvijali godinama i stvoriti nešto potpuno novo, i ključno pitanje je „Zašto?“.

Prava istina je da je Win32 zastario i tu na scenu stupa WinRT. Ideja je omogućiti pristup istim nativnim servisima, ali ovoga puta kroz dobro strukturirane managed API-je, uz podršku za sve moguće jezike i kombinacije UI tehnologija. Dodajte u mix i podršku za x86/ARM procesore i jasna je snaga nove tehnologije. Također, WinRT je izgrađen na COM-u. U Osmici WinRT radi rame uz rame s Win32 slojem radi kompatibilnosti, i jasno neki WinRT API pozivi su mapirani na Win32 API, ali dugoročno treba voditi računa o ovome:

In Windows 8, WinRT and the Start screen will run alongside Win32 and the Explorer desktop. Both environments will be available to the user, and each will have its strengths and weaknesses in different scenarios. Win32 will, for now, include functionality that is simply not available in WinRT, though hopefully that will change over time. But WinRT, of course, is where the action is: Though some small updates to the Win32 APIs have indeed been introduced in Windows 8, Win32 is largely deprecated and heading towards maintenance mode. All of the big changes and improvements are, and will be, occurring in WinRT.

Za one zainteresirane za rad s novim slojem, Scott Hanselman je napisao dobar post o tome.

Novosti u sigurnostiAppContainer

Po defaultu, sve Windows Store aplikacije rade u sandbox okruženju i mogu samo čitati i pisati u svom privatnom storage prostoru. Ako aplikacija treba išta van sandbox-a potrebno je to specificirati u manifestu i korisnik mora pristati na to. Tehnologija iza sandbox-a je velikim dijelom naslijeđena iz Viste, a riječ je o razinama integriteta koju operacijski sustav daje procesu (aplikaciji). Klasično, svakom procesu pripada ACL (Access Control List) i oznaka integriteta koja govori o povjerenju koje OS može imati prema tom procesu. Svakoj Windows Store aplikaciji se pridjeljuje poseban level integriteta koji se naziva AppContainer, a signalizira još nižu razinu povjerenja od low integrity levela – toliko nisku da po defaultu uopće ne dopušta čitanje s diska. Instalacijom Store aplikacije, Windows 8 otvara njen manifest, izgradi njezin specifični AppContainer i omogući joj tražene mogućnosti. Visoka razina ograničenja, ali ovakav pristup omogućava korisnicima povjerenje u aplikacije koje se nalaze na Windows Store-u i garantira da aplikacija zaista ne može napraviti išta više od onoga što piše u njenom manifestu. Zanimljivo je naglasiti da AppContainer mehanizam nije ograničen na Windows Store aplikacije, dapače, postoji API kojim je moguće i klasične desktop aplikacije pokretati unutar AppContainer-a. Kad i koliko to ima smisla, dokazuje Internet Explorer 10 i njegova Enhanced Protected Mode opcija, koja svaki IE10 tab stavlja u zasebni AppContainer.

ForceASLR – Force Address Space Layout Randomization

Nije rijetkost da zlonamjerni jahači Interneta iskoriste low level softverske bugove za ubacivanje malicioznog koda, i nije ni tajna da je teško boriti se protiv toga. Ideja iza ovakvih low level napada je uvijek ista – za poznati raspored memorije, nije teško  identificirati učitane blokove sistemskih biblioteka i posljedično ih nije teško modificirati. U Visti je uvedena zaštita protiv ovakvih napada i to u vidu nasumičnog premještanja blokova sistemskih biblioteka, poznata pod nazivom ASLR (Address Space Layout Randomization) – vidi sliku uz tekst. Problem s ASLR-om je što je cijeli proces primjenjiv isključivo na DLL-ove koji su označeni da su kompatibilni s njime. Naravno, stariji DLL-ovi nemaju tu oznaku pa još uvijek predstavljaju ranjivu točku sustava. Kao rješenje problema nameće se ForceASLR koji ignorira oznake na DLL-ovima i pokušava ih nasumično razmjestiti po raspoloživom prostoru i na taj način napadaču znatno otežati pronalazak traženog bloka memorije. Uz ForceASLR prisutan je i HEASLR (High Entropy ASLR) koji rješava problem nedovoljne nasumičnosti generiranih nasumičnih pozicija u memoriji, a cijela priča radi iznimno dobro s novom serijom Intelovih Ivy Bridge procesora – Osmica zna iskoristiti novi generator pseudonasumičnih brojeva prisutan u tim procesorima. Na starijim procesorima, ASLR se još uvijek generira na račun sistemskog vremena.

Connected Standby

Windows Store aplikacije su namijenjene radu na desktop i na tabletu, i to za sobom povlači zanimljive posljedice, jedna od kojih je i želja za što manjom potrošnjom uređaja. Generalno, Store aplikacijama nije dozvoljen aktivan rad u pozadini, a ako OS-u nestane memorije, aplikacija će biti ugašena. I kakve to veze ima s trajanjem baterija? Osim aktivnog rada, aplikacije mogu odraditi i čiste pozadinske zadatke, poput malih mrežnih poziva i izračuna. Ono što Windows 8 uvodi novo je Connected Standby stanje, koje omogućuje da cijela Windows 8 mašina ode u low-power stanje, osim mrežnih servisa. Ideja je probuditi potrebne servise taman dovoljno da aplikacija odradi svoj poziv i vratiti sve  opet u low-power stanje. Primjera radi, Facebook aplikacija može osvježiti broj notifikacija ili broj poruka bez da budi cjelokupni OS. Connected Standby nije samo softverska mogućnost, već zahtjeva da i da mrežni hardver podržava posebni standby mod u kojem može ostati povezan na mrežu i pozivati procese bez aktivne uloge procesora. Također, zahtjeva i procesor bez aktivnog hlađenja (?), SSD i firmware koji će sve to omogućiti. Kako stvari stoje, snagu Connected Standby vidjet ćemo vjerojatno na SoC mašinama koje zadovoljavaju sve gore navedene uvjete, pogotovo onaj krucijalni – procesor bez aktivnog hlađenja.

Asinkroni API-ji

Svi API-ji koje ćete koristiti u Windows Store aplikacijama su asinkroni. Dobro, nisu baš svi svi, ali ideja  je da budu svi – dogmatično praćenje “ne blokiraj UI thread” mantre je u modi. Kao podrška programerima nenaviklim na ovakav način rada, u C# su se odjednom pojavile ključne riječi async i await, koje bi trebale sugerirati da program čeka završetak asinkrone aplikacije. S jedne strane, prelazak na asinkroni način rada ima puno smisla sa strane korisničkog iskustva, ali s druge strane testiranje ovakvih sustava je dugotrajno. Ostaje vidjeti kako će developerska zajednica prihvatiti ovu metodu, jer  sve što je asinkrono, može se ishakirati u sinkrono :)

Renesansa COM-a i nadgradnja Win32

WinRT je izgrađen na COM-u, ali ne onome COM-u iz devedesetih. Ovo je moderni COM, izgrađen na temeljima stare provjerene tehnologije, ali s dodatnim funkcionalnostima. Jedna od promjena je olakšano dijeljenje podataka između raznovrsnih jezika u kojima je omogućeno programiranje nad WinRT-om, primjerice biblioteke koje implementiranju nizove proizvoljne veličine koji znaju koliko su veliki. Vuče na .NET? I trebalo bi, jer je koncept preuzet iz .NET-a i implementiran kao standardni koncept unutar modernog COM sloja. Priložena slika vjerno prikazuje čemu koji sloj ima pristup i organizaciju i podjelu među slojevima OS-a.

Integracija Microsoft Accounta

Bitno je  naglasiti da se prijavom putem Microsoft Account-a automatski sinkroniziraju svi kontakti, slike, dokumenti, aplikacije, ali i lozinke, teme, favoriti i povijest.

Novosti ima dosta i ostaje vidjeti koji će biti posljedice, ali na prvi pogled sve izmjene imaju smisla. Nadamo se da će buduće nadogradnje donijeti još novosti ispod haube, ali i proširiti dostupne WinRT API-je i na taj način omogućiti developerima dublju integraciju aplikacija u sami OS.

Podijeli s prijateljima

Ostavite komentar

  1. Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena s *
  2. Možete koristiti sljedeće HTML tagove i atribute: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Real Time Web Analytics