1 / 14

Sistemsko programiranje

Sistemsko programiranje. I. poglavlje Uvod. WINDOWS NT kao familija operacijskih sustava. Windows 32-bitni operacijski sustav ima sve potrebne elemente za osobnu, a također i upotrebu u poduzećima. 64-bit sustavi također dolaze Osnovni elementi uključuju:

temira
Download Presentation

Sistemsko programiranje

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sistemsko programiranje I. poglavlje Uvod

  2. WINDOWS NT kao familija operacijskih sustava • Windows 32-bitni operacijski sustav ima sve potrebne elemente za osobnu, a također i upotrebu u poduzećima. • 64-bit sustavi također dolaze • Osnovni elementi uključuju: • Memorija: velika, linearna, adresni prostor za virtualnu memoriju • Sustavi spremanja datoteka (File systems), konzolni rad, i ostali I/O • Multitasking: procesi i niti • Komunikacija i sinkoronizacija • Zasebni i umreženi sustavi • Sigurnost

  3. WINDOWS - verzije • Windows XP (Home, Professional) - pojedinačni korisnici • Windows Server 2003 - poduzeća, serveri (Novi, Win64 standard nastaje baš iz ove implementacije) • Windows 2000 (Professional i neke druge server verzije) - više se ne prodaje, ali na njemu su nastali XP i buduće verzije. • Windows Embedded, Windows CE, Tablet PC, Windows Mobile (palmtop, ugrađeni procesori, mobiteli itd.) - imaju veliki podskup osnovnih elemenata Windowsa • Prijašnje (već napuštene) verzije: Windows NT 3.5, 3.5.1, 4.0 datiraju još od 1993. godine. Windows 95, Windows 98, Windows ME (sve zajedno zvat ćemo Windows 9x) - osobna desktop i laptop računala, nemamo sigurnosne elemente kao NT

  4. Windows API • “Windows” je u biti 32-bitni API koji je korišten u: • Windows 9X (95, 98, Me) • Windows NT • Windows CE (palmtop, ugrađeni sustavi, itd.) • Win64 je vrlo sličan na nivou source-a * Podržano na Windows 2003 i Itanium familiji procesora • Windows naredbe skoro uvijek odgovaraju Win64 • Postoji nekoliko velikih podjela, koje primjerice uključuju: • Rukovanje prozorima (Windows Management) • GDI (Graphics Device Interface) • Servisi OS-a (System Services) • Multimedija • RPC (Remote Procedure Calls)

  5. WINDOWS 9x, NT • Windows 9X radi samo na Intel x86 arhitekturi • Samo NTpodržava SMP (symmetric multiprocessing) • Windows NT koristi UNICODE internacionalni skup znakova • Windows NT ima potpuno zaštićenu jezgru (kernel) • Windows NT podržava NTFS, robustni file system • Windows 9X i CE ne podržavaju jako puno resursa • Otvorenih datoteka, procesa, itd. • Mnoge funkcije Windows 9X imaju ograničene implementacije Općenito, Windows programi su portabilni između različitih platformi na nivou soruce-a, a u većini i na binarnom nivou.

  6. WindowsProgram Aplikacije Windows Subsystem Protected Subsystems NTExecutive Systems Services Process Manager I/O Manager Virtual Memory Manager KERNEL HAL: Hardware Abstraction HARDWARE

  7. Osnovni principi WINDOWS-a 1/2 • Skoro svaki resurs je “object” identificiran i adresiran preko rukovatelja (“handle”) tipa HANDLE • Objektima jezgre (Kernel-a) manipulira se pomoću WindowsAPI funkcija • Tip podataka HANDLE uključuje objekte: • datoteke pipes • procese mapiranje memorije • niti događaji (events), semafori • Windows je bogat i fleksibilan sustav • Više funkcija koje obavljaju iste ili slične poslove • Svaka funkcija ima brojne parametre i zastavice

  8. Osnovni principi WINDOWS-a 2/2 • Windows nit (thread) je osnovna jedinica izvršavanja, osnovnija od procesa • Proces može imati jednu ili više niti • Svaki proces ima svoj kod i svoj adresni prostor • Niti dijele adresni prostor procesa • Niti su “laganije” i učinkovitije od procesa • Koriste se za servere, asinkroni I/O, ...

  9. Konvencije oko imenovanja kod Windows-a • Duga i opisna imena • WaitForSingleObjectWaitForMultipleObjects • Preddefinirani opisni tipovi podataka uvijek velikim slovima • BOOL, DWORD, LPDWORD, ... • Kod preddefiniranih tipova izbjegava se operator *: • LPTSTR (definira TCHAR *) i • LPCTSTR (definira const TCHAR *) • Imena varijabli kod API-ja koriste “Hungarian”-ovu notaciju - mi ćemo često izbjegavati ovu konvenciju • lpFileName — long pointer [na string koji u C-stilu završava nulom]

  10. Konvencije kod programiranja za Windows • <windows.h> se uvijek uključuje • Svi objekti identificirani su pomoću varijable tipa HANDLE • CloseHandle funkcija se primjenjuje na skoro sve objekte • Simboličke konstante i zastavice koje objašnjavaju njihovo značenje • INVALID_HANDLE_VALUE i GENERIC_READ • ReadFile, WriteFile, i mnoge druge Windows funkcije vraćaju Boolean vrijednosti (TRUE/FALSE) • Kodovi sistemskih greški se dobivaju pomoću GetLastError () • C biblioteka je uvijek dostupna • Ali se s njome ne može u potpunosti iskoristiti Windows

  11. Primjer: Windows FILE COPY (1/3) • /* Basic cp file copy program */ • /* cp file1 file2: Copy file1 to file2 */ • #include <windows.h> /* Always required for Windows */ • #include <stdio.h> • #define BUF_SIZE 256 /* Increase for faster copy */ • int main (int argc, LPTSTR argv []) • { • HANDLE hIn, hOut; /* Input and output handles */ • DWORD nIn, nOut; /* Number bytes transferred */ • CHAR Buffer [BUF_SIZE]; • if (argc != 3) { • printf ("Usage: cp file1 file2\n"); • return 1; • }

  12. Primjer: Windows FILE COPY (2/3) • /* Create handles for reading and writing. Many */ • /* default values are used */ • hIn = CreateFile (argv [1], GENERIC_READ, 0, NULL, • OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); • if (hIn == INVALID_HANDLE_VALUE) { • printf ("Cannot open input file\n"); • return 2; • } • hOut = CreateFile (argv [2], GENERIC_WRITE, 0, NULL, • CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); • if (hOut == INVALID_HANDLE_VALUE) { • printf ("Cannot open output file\n"); • return 3; • }

  13. Primjer: Windows FILE COPY (3/3) • /* Input and output file handles are open. */ • /* Copy file. Note end-of-file detection */ • while (ReadFile (hIn, Buffer, BUF_SIZE, • &nIn, NULL) && nIn > 0) • WriteFile (hOut, Buffer, nIn, &nOut, NULL); • /* Deallocate resources, such as open handles */ • CloseHandle (hIn); CloseHandle (hOut); • return 0; • }

  14. U korak s Win64 • Ciljevi: • da Win32 binarne datoteke rade u 64-bitnom okruženju • Source kod se može re-kompajlirati za 64-bitno okruženje • Oprez: • Ne smije se uzeti da su cijelobrojni podaci i pokazivači iste duljine • Win64 uvodi 64-bitne pokazivače (pointere) • Novi tipovi podataka • DWORD32, DWORD64 • POINTER_32, POINTER_64 • LONG32, LONG64

More Related