1. Trang chủ
  2. » Ngoại Ngữ

STRU_Structura sistemelor de operare Windows si Linux

92 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Structura Sistemelor de Operare Windows și Linux
Tác giả Călin Gabriel, Bucurică Mihai, Bălănescu Diana, Vasile Ioana Iuliana, Dumitru – Guzu Mădălin, Hulea Răzvan Florin
Người hướng dẫn Profesor Ștefan Stăncescu
Trường học Universitatea Politehnica București
Chuyên ngành Electronică, Telecomunicații și Tehnologia Informației
Thể loại Graduation Project
Năm xuất bản 2010 – 2011
Thành phố București
Định dạng
Số trang 92
Dung lượng 1,16 MB

Nội dung

UNIVERSITATEA POLITEHNICA BUCUREȘTI FACULTATEA DE ELECTRONICĂ, TELECOMUNICAȚII ȘI TEHNOLOGIA INFORMAȚIEI STRUCTURA SISTEMELEOR DE OPERARE WINDOWS ȘI LINUX Profesor Coordonator, Ștefan Stăncescu ANUL UNIVERSITAR 2010 – 2011 CUPRINS CAPITOLUL Structuri de bază ale fiecărui sistem de operare ỵn parte: concepte generale, structura nucleului (CĂLIN GABRIEL, 432A) PAGINA CAPITOLUL Nivelul de abstractizare al hard-ului (BUCURICĂ MIHAI, 432A) PAGINA 13 CAPITOLUL Interpretoare de comenzi din Linux (BĂLĂNESCU DIANA, 432A) PAGINA 16 CAPITOLUL Comparație interfețe (VASILE IOANA IULIANA, 423A) PAGINA 29 CAPITOLUL Biblioteca apelurilor de sistem pentru Windows și Linux (DUMITRU – GUZU MĂDĂLIN, 433A) PAGINA 43 CAPITOLUL Win32 API și registrul de informații pentru Windows (HULEA RĂZVAN FLORIN, 433A) PAGINA 82 CAPITOLUL STRUCTURILE DE BAZĂ ALE FIECĂRUI SISTEM DE OPERARE ỴN PARTE: CONCEPTE GENERALE, STRUCTURA NUCLEULUI Călin Gabriel, 432A Sistemul de operare este un program care are rolul de a gestiona dispozitivele hardware ale unui calculator De asemenea, el oferă un nivel de bază pentru aplicaţii, acţionând ca un intermediar ỵntre utilizator şi hardware Sistemele de operare sunt extrem de variate, ỵn funcţie de sarcinile pe care trebuie să le ỵndeplinească De exemplu, sistemele de operare ale serverelor sunt concepute pentru a optimiza consumul de energie al componentelor hardware Sistemele de operare ale calculatoarelor personale (PC) trebuie să permită rularea unor aplicaţii complexe, de la jocuri până la aplicaţii comerciale Cele ale telefoanelor mobile trebuie să ofere o interfaţă care să permită accesarea rapidă a aplicaţiilor Se observă deci că unele sisteme de operare sunt concepute pentru a fi comode utilizatorului, altele pentru a fi eficiente iar altele pentru a realiza o combinaţie ỵntre acestea Istoricul sistemelor de operare Primul calculator digital a fost conceput de Charles Babbage, un matematician englez, la ỵnceputul secolului XIX Acesta era ỵn totalitate mecanic, fiind extrem de lent Nu s-a pus problema existenţei unui sistem de operare pe o astfel de maşină După aproape un secol, datorită necesităţilor impuse de cel de-al doilea război mondial, a apărut primul calculator electronic Componentele centrale ale acestuia erau tuburile cu vid Din acest motiv aceste calculatoare erau uriaşe iar folosirea lor continuă ducea la o suprncălzire a tuburilor, acestea arzându-se şi trebuind a fi ỵnlocuite Programarea lor se făcea ỵn limbajul maşină Nici pentru acestea nu a existat un sistem de operare ẻn 1955, tranzistoarele au fost introduse ợn SUA Problemele generate de folosirea tuburilor cu vid au dispărut Din acest motiv, costul calculatoarelor a scăzut Au apărut primele limbaje de programare: limbajul de asamblare, limbajul FORTRAN, care au simplificat sarcina programatorilor La ỵnceputul anilor ’60, multe companii au ỵnceput să îşi prevadă calculatoarele cu sisteme de operare Acestea erau însă sisteme primare, care se preocupau ỵn primul rând cu eficientizarea transmiterii datelor Compania numită Burroughs a fost printre primele companii care au produs un sistem de operare care avea facilităţi precum cele ale sistemelor de operare din prezent Acesta se numea Master Control Program (MCP) şi implementa multiprogramarea (execuţia mai multor programe simultan), multiprocesarea (controlul mai multor procesoare de către acelaşi sistem de operare) şi memoria virtuală (mărimea programului putea fi mai mare decât memoria disponibilă) Ỵn 1964, IBM a lansat seria de calculatoare System/360 Iniţial, IBM a plănuit să furnizeze doar un singur sistem de operare pentru toate calculatoarele din această familie Această abordare s-a dovedit a fi dificilă deoarece sistemele de operare care rulau eficient pe un sistem mai mic nu puteau gestiona eficient resursele pe un sistem mai mare şi invers De aceea, IBM a lansat patru sisteme de operare Principalele facilităţi ale acestora erau: folosirea circuitelor integrate care au redus costul şi mărimea calculatoarelor, divizarea timpului care ỵmbunătăţea conceptul de multiprogramare prin acordarea de priorităţi diferitelor procese Ỵn anii ’70 apare sistemul de operare Unix, care a fost scris ỵn proporţie de 90% ỵn limbajul de programare C şi 10% ỵn limbajul de asamblare Aceasta a facilitat portarea sistemului de operare De aceea, mulţi producători hardware au preferat să porteze sistemul Unix decât să scrie un nou sistem de operare de fiecare dată După apariţia circuitelor de integrare pe scară largă (LSI), mii de tranzistoare au putut fi ỵncapsulate pe o arie restrânsă a unui cip de silicon Astfel a ỵnceput era microcalculatoarelor şi a calculatoarelor personale Control Program for Microcomputers (CP/M) a fost primul sistem de operare pentru platforma microcalculatorelor A fost dezvoltat pentru Intel 8080 ợn 1974 ẻn 1981 apare sistemul de operare MS-DOS care a devenit foarte popular după dezvoltarea unor programe precum Database Systems (dBase) sau Word Processing (WORDSTAR) De asemenea, acest sistem de operare a permis dezvoltarea unor compilatoare pentru limbajele de programare de nivel ỵnalt precum Basic, Cobol şi C Ulterior, Microsoft a lansat sistemele de operare Xenix şi OS/2 pentru procesoarele Intel 286 şi Intel 386 Ỵn 1991, studentul finlandez Linus Torvalds a pus bazele sistemului de operare Linux Acesta este scris ỵn C şi ỵn limbajul de asamblare şi are la baza principiile sistemului de operare Unix În prezent, este cel mai folosit sistem de operare pentru servere De asemenea, el rulează pe cele mai rapide 10 supercalculatoare din lume Microsoft a lansat primul sistem de operare cu interfaţă grafică (GUI) Windows 1.0 ỵn 1985 Acesta includea programe precum Calculator, Calendar, Paint Ỵn anii care au urmat, Microsoft a lansat noi sisteme de operare, cele mai cunoscute fiind Windows XP sau recentul Windows Ỵn ianuarie 2011, variante ale sistemului de operare Windows erau prezente ỵn peste 91% dintre calculatoarele din ỵntreaga lume Rolul unui sistem de operare Un calculator poate fi divizat ỵn patru componente: dispozitivele hardware, sistemul de operare, aplicaţiile şi utilizatorii Dispozitivele hardware sunt reprezentate de unitatea centrală de procesare (UCP), memoria şi dispozitivele de intrare-iesire (I/O) Ele reprezintă resursele de bază ale sistemului Aplicaţii precum editoarele de text, editoarele grafice, browserele web, jocurile definesc modul ỵn care aceste resurse sunt folosite pentru a satisface nevoile utilizatorului Rolul sistemului de operare este de a controla şi de a coordona modul ỵn care sunt folosite dispozitivele hardware ỵn diverse aplicaţii, pentru diverşi utilizatori Se observă, deci, că sistemul de operare nu are o funcţie utilă ỵn sine, ci doar asigură un mediu ỵn care alte aplicaţii pot lucra Ỵn ceea ce priveşte rolul sistemelor de operare, există două puncte de vedere: • Punctul de vedere al utilizatorului Există mai multe tipuri de utilizatori, iar rolul sistemelor de operare trebuie să fie dependent de necesităţile acestora Majoritatea utilizatorilor stau ỵn faţa calculatorului personal, având drept scop maximizarea muncii pe care o execută Un astfel de sistem este destinat unui singur utilizator, care are monopol asupra resurselor sistemului Ỵn acest caz, sistemul de operare este construit astfel ỵncât să fie uşor de folosit, cu puţină atenţie acordată performanţei şi fără atenţie acordată utilizării resurselor Ỵn alte cazuri, un utilizator poate folosi un terminal conectat la un calculator central Alţi utilizatori pot folosi acelaşi calculator prin alte terminale Ei ỵmpart resursele aceluiaşi calculator şi ỵşi pot transmite informaţii unul altuia Ỵn acest caz, rolul sistemului de operare este de a maximiza folosirea resurselor şi de a se asigura că niciun utilizator nu este dezavantajat faţă de altul Alţi utilizatori folosesc o staţie de lucru conectată la o reţea formată din alte staţii de lucru şi servere Aceşti utilizatori au la dispoziţie atât resurse dedicate lor cât şi resurse comune precum fişierele aflate pe un server De aceea, sistemul de operare trebuie să realizeze un compromis ỵntre posibilitatea de utilizare personală şi folosirea resurselor Recent, dispozitivele portabile au devenit din ce ỵn ce mai folosite Deoarece ele funcţionează cu baterie, un rol important pe care ỵl au sistemele de operare ale acestora este de a maximiza performanta raportată la durata de viaţă a bateriei Există şi calculatoare care nu necesită deloc sau foarte rar intervenţia umană, de exemplu calculatoarele automobilelor Ỵn acest caz, sistemul de operare este conceput pentru a funcţiona autonom • Punctul de vedere al sistemului Din punctul de vedere al calculatorului, sistemul de operare este programul care intră cel mai mult ỵn contact cu dispozitivele hardware Sistemul de operare poate fi văzut ca un repartitor de resurse El administrează resurse precum spaţiul de memorie, de depozitare a fişierelor, dispozitivele de intrare/ieşire etc El trebuie să decidă cum alocă resursele diferitelor aplicaţii şi utilizatori astfel încât funcţionarea calculatorului să fie eficientă Un alt punct de vedere se referă la nevoia de a controla diverse dispozitive de intrare/ieşire şi programe ale utilizatorilor Sistemul de operare este un program de control, care administrează execuţia programelor astfel ỵncât să nu apară erori sau o folosire neadecvată a calculatorului Se observă că nu există o definiţie clară a ceea ce reprezintă un sistem de operare Există ỵnsă o definiţie general acceptată: Sistemul de operare reprezintă acel program care rulează tot timpul pe calculator (numit kernel), restul fiind programe de sistem şi aplicaţii Următoarea figură evidenţiază această definitie Kernel-ul Linux Kernel-ul Linux reprezintă nucleul acestui sistem de operare Codul acestuia a fost scris de la zero, special pentru acest scop Multe din programele software-ul care sunt suportate de acest kernel nu sunt scrise special pentru Linux ỵnsă, ci sunt compatibile cu mai multe sisteme UNIX Principalele librării provin din proiectul GNU, ỵnsă acestea au fost ỵmbunătăţite de-a lungul timpului de către comunitate Comunitatea Linux este responsabilă şi cu menţinerea Standardelor de Ierarhizare a Fişierelor de Sistem (File System Hierarchy Standard) care au rolul de a păstra compatibilitatea cu diversele componente de sistem Acestea determina ỵn ce directoare trebuie salvate librăriile, fişierele de configurare şi alte fişiere de sistem Ca majoritatea sistemelor UNIX, Linux conţine trei componente principale: • • • Kernel Librării de sistem Utilitare de sistem Kernel-ul este resonsabil cu menţinerea tuturor abstractizărilor importante ale sistemului de operare, cum ar fi procesele sau memoria virtuală Codul kernel-ului este executat ỵntr-un mod de lucru privilegiat, având acces la toate resursele fizice ale sistemului Acest mod este denumit modul kernel Spre deosebire de alte sisteme de operare, kernel-ul Linux este creat ca un singur fişier binar, monolitic Principalul motiv este acela de a spori performanţa Deoarece ỵntregul cod care compune kernel-ul şi toate structurile de date se găsesc ỵn acelaşi spaţiu de adresă, nu este necesară o schimbare de context atunci când un proces apelează o funcţie de sistem sau când se activează o ỵntrerupere hardware Prin ỵntregul cod kernel se ỵnţeleg inclusiv driverele componentelor, sistemul de fişiere sau codul de lucru cu reţeaua Deşi toate componentele kernel-ului se găsesc la aceeaşi adresă, acesta este modular El poate ỵncărca şi descărca module ỵn mod dinamic Kernel-ul asigură funcţionalitatea necesară pentru a rula procese şi are prevăzute servicii de sistem pentru a acorda acces la resursele hardware Spre deosebire de alte sisteme UNIX, interfaţa vizibilă de către aplicaţiile ỵn desfăşurare nu este susţinută direct de către kernel Aplicaţiile fac cereri librăriilor de sistem, care la rândul lor apelează serviciile sistemului de operare Kernel-ul Linux este capabil să ỵncarce şi să descarce secţiuni de cod, numite module, la cerere Acestea rulează în modul de lucru privilegiat, deci au acces la toate resursele hardware ale calculatorului De obicei, modulele kernel implementează un driver, un sistem de fişiere sau un protocol de reţea Aceasta structurare sub formă de module se datorează faptului că sistemul Linux este gratis, deci oricine poate scrie cod kernel Este necesară o repornire a sistemului pentru a se ỵncărca noile funcţionalităţi Totuşi, dacă se dezvoltă un driver, recompilarea ỵntregului kernel din această cauză ar fi greoaie Datorită organizării modulare, este suficientă compilarea modulului creat iar apoi includerea lui ỵn restul kernelulului ẻn plus, ợn felul acesta utilizatorii pot distribui modulele scrise Suportul pentru module are trei componente: • • • Administratorul de module Ỵnregistrarea de drivere Un mecanism de rezolvare a conflictelor ã Administratorul de module ẻncrcarea unui modul necesită mai mult decât simpla ỵncărcare a conţinutului său binar în memoria kernel Sistemul trebuie să se asigure că orice referinţe pe care modulul le face la simboluri kernel sau puncte de intrare sunt actualizate astfel ỵncât să indice către locaţiile corecte din spaţiul de adresa kernel Linux face acest lucru ỵn două etape: administrarea secţiunilor codului modulului ỵn memoria kernel şi manevrarea simbolurilor pe care modulele au voie să le refere Linux păstrează un tabel de simboluri ỵn kernel Acest tabel nu conţine ỵntreg setul de simboluri definite ỵn kernel Un simbol trebuie să fie exportat ỵn mod explicit de către kernel Acest set de simboluri exportate reprezintă interfaţa prin care un modul interactionează cu kernel-ul Deşi exportarea de simboluri dintr-o funcţie kernel necesită o cerere specială din partea programatorului, importarea lor ỵntr-un modul se face simplu Persoana care scrie un modul trebuie doar să folosească legăturile externe ale limbajului C Legăturile externe care sunt referentiate, dar nu sunt declarate ỵn modul sunt marcate ca nerezolvate ỵn fişierul binar produs de către compilator Când modulul este ỵncărcat ỵn kernel, un utilitar de sistem scanează aceste referinţe nerezolvare Simbolurile care trebuie rezolvate sunt căutate ỵn tabelul de simboluri şi adresele acestor simboluri sunt actualizate ỵn codul modulului Abia apoi, dacă toate referinţele au fost rezolvate, modulul este ỵncărcat ỵn kernel Ỵncărcarea modulului se face ỵn două etape Mai ỵntâi, se realizează o cerere către kernel pentru a rezerva o arie continuă de memorie kernel virtuală pentru modul Kernel-ul ỵntoarce adresa zonei de memorie alocate iar această adresă este folosită pentru mutarea codului maşină al modulului la respectiva adresă Un al doilea apel la sistem transmite modulul şi un eventual tabel de simboluri pe care modulul vrea să ỵl exporte către kernel Apoi, tabelul de simboluri al kernel-ului este actualizat cu noile simboluri pentru o viitoare folosire a lor de către alte module O altă componentă a administratorului de module o reprezintă solicitantul de module Printr-o conexiune existentă ỵntre kernel şi acest modul, kernel-ul informează despre cererile de drivere, de fişiere de sistem sau de servicii de reţea care nu sunt ỵncărcate şi dă administratorului de module posibilitatea de a încărca aceste module De asemenea, administratorul de module verifica regulat dacă modulele ỵncărcate dinamic sunt ỵncă ỵn folosinţă şi le descarc dac nu mai sunt necesare ã ẻnregistrarea de drivere După ce un modul este ỵncărcat, el rămâne ỵntr-o zonă izolată de memorie Kernel-ul păstrează tabele dinamice cu toate driverele cunoscute şi permite rutine prin care driverele pot fi adăugate sau şterse din acest tabel Un modul poate ỵnregistra multe tipuri de drivere şi poate ỵnregistra mai mult de un driver dacă este necesar De exemplu, pentru un dispozitiv, driver-ul sau poate ỵnregistra două mecanisme de accesare a respectivului dispozitiv Tabelele de ỵnregistrare includ următoarele componente: -driverele componentelor care includ driverul imprimantei, al mouse-ului, harddiskului sau al plăcilor de reţea -sistemele de fişiere; pot implementa un format pentru stocarea fişierelor pe un disc, dar pot fi şi sisteme de fişiere de reţea, precum NFS, sau un sistem de fişiere virtual cum ar fi sistemul de fişiere „/proc” -protocoalele de reţea; se pot implementa protocoale de reţea complete precum IPX sau, de exemplu, doar nişte reguli pentru un firewall -formate binare; specifică o metodă de recunoaştere şi ỵncărcare a unui nou tip de fişier executabil • Rezolvarea conflictelor Sistemul Linux poate funcţiona pe o varietate mare de calculatoare Acestea pot avea nenumărate configuraţii, având un număr mare de drivere posibile pentru dispozitive precum plăci de reţea, plăci de sunet sau plăci video Problema devine mai dificilă atunci când sunt suportate drivere organizate modular Linux asigură un mecanism de rezolvare a conflictelor pentru a soluţiona accesul la diverse resurse hardware El are următoarele funcţii: -Previne modulele să intre ỵn conflict datorită accesului la o resursă hardware -Previne ca autoverificarea (drivere care auto-detectează configurarea dispozitivului) să interfereze cu driverele deja existente -Rezolva conflictele datorate ỵncercării mai multor drivere să acceseze acelaşi dispozitiv hardware Kernel-ul deţine o listă de resurse hardware alocate, cum ar fi porturile de intrare/ieşire sau liniile de ỵntrerupere Când un driver vrea să acceseze o astfel de resursă, trebuie mai ỵntâi să rezerve acea resursă ỵn baza de date a kernel-ului Dacă aceasta rezervare dă greş (ỵn cazul ỵn care resursa nu există sau este deja folosită), modulul este cel care decide ce va face ỵn continuare Kernel-ul Windows Sistemul de operare Windows a avut, de-a lungul timpului, două variante de kernel Prima variantă o reprezintă kernel-ul sistemelor de operare Windows 95, 98 şi ME Acesta este monolitic şi necesită suportul MS-DOS pentru a rula Conţine câteva fişiere critice cum ar fi: IO.SYS, MSDOS.SYS, COMMAND.COM, WIN.COM, LOGO.SYS care păstrează diverse informaţii, cum ar fi tratarea rutinelor de intrare/ieşire sau încărcarea interfeţei grafice a sistemului de operare De asemenea, sistemul poate conţine şi fişierele numite CONFIG.SYS sau AUTOEXEC.BAT, dar acestea nu sunt critice deoarece există nişte setări implicite ỵn cazul în care ele lipsesc Secvenţa de boot a sistemului are loc ợn urmtoarea ordine: ã ã ã ã Se ợncarc IO.SYS, folosind informaţiile stocate ỵn MS-DOS.SYS Comenzile CONFIG.SYS sunt analizate de IO.SYS Se ỵncarcă COMMAND.COM, care permite rularea AUTOEXEC.BAT, dacă acesta există WIN.COM ỵncarcă interfaţă grafică (dacă aceasta nu este dezactivată) A doua variantă o reprezintă kernel-ul sistemelor de operare Windows 2000, XP, Vista şi (care fac parte din familia denumită Windows NT) Ne vom referi ỵn continuare la structura sistemului de operare Windows XP Arhitectura sistemului Windows XP conţine mai multe module organizate pe straturi Principalele straturi sunt HAL (Hardware Abstraction Layer – Nivelul de Abstractizare al Hard-ului), kernel-ul şi un nivel executiv Toate acestea rulează ỵntr-un mod de lucru protejat, fiind ascunse utilizatorului Există apoi un strat care conţine o serie de servicii şi subsisteme care rulează în modul utilizator Există două categorii de subsisteme: cele de mediu, care emulează diferite sisteme de operare şi cele de protecţie care asigură securitatea sistemului Schema bloc a arhitecturii Windows XP este prezentată ỵn următoarea figură: 10 Modul poate fi unul dintre urmatorii parametrii : R_OK (daca se poate citi), W_OK (daca se poate scrie), X_OK(daca se poate executa) si F_OK(se verifica existenta) Testul depinde de permisiunea la directoarele accesat pe calea catre fisier Sunt testati doar bitii de acces si nu si continutul fisierului Daca operatia are succes atunci valoarea „0” este returnata, daca nu valoarea”-1” 12 Apelul rename() va modifica numele fisierelor specificate, din „from” in „to file” : rename from to file 13 Functia link() creaza o legatura („ hard link”), un nou nume, pentru un fisier existent deja Noul nume poate fi utilizat exact ca si vechiul fisier Ambele nume se refera la acelasi fisier( au aceesi permisiune si proprietar) Daca rezultatul este corect se intoarce „0”, iar daca a aparut o eroare se intoarce „-1” #include int link(const char *oldpath, const char *newpath); 14 unlink() sterge un nume si posibil si fisierul la care se refera Daca numele sters era ultimul nume care se lega de fisier si niciun proces nu are fisierul respectiv deschis, atunci fisierul este sters si spatiul obtinut poate fi reutilizat Daca numele era ultimul, dar fisierul era inca folosit de un proces, fisierul exista pana cand este inchis de acest proces Daca numele se referea la o legatura simbolica atunci legatura este stearsa Operatia daca are succes intoarce „0”, iar daca nu „-1” #include int unlink(const char *pathname); 15 symlink() creaza un nume simbolic numit „newpath” care contine stringul „oldpath” O legatura simbolica poate arata catre un fisier existent sau neexistent si poate contine componente ale caii Permisiunile legaturii simbolice sunt irelevante, iar proprietatea este ignorata cand se urmareste legatura La succes se returneaza „0” si „-1” altfel #include int symlink(const char *oldpath, const char *newpath); Apeluri de sistem pentru gestionarea directoarelor In aceasta sectiune se pune accentul pe apeluri de sistem orientate mai mult catre directoare sau catre fisierele sistemului ca un tot unitar si nu catre fisiere separate Cele mai importante apeluri sunt urmatoarele: mkdir() incearca sa creeze un director numit „pathname” Parametru mode specifica accesul la director Noul director creat va fi detinut de utilizatorul procesului sau 78 poate mosteni grupul de utilizator din care face parte utilizatorul curent Daca directorul parinte are bitul „set-group-ID” setat si directorul curent il va avea setat Apelul intoarce „0” daca operatia s-a realizat cu succes si „-1” in caz contrar #include #include int mkdir(const char *pathname, mode_t mode); rmdir() sterge un director, care trebuie sa fie golit in prealabil La succes se intoarce „0”si la esec „-1” #include int rmdir(const char *pathname); Toate fisierele accesibil intr-un sistem de tip UNIX sunt aranjate intr-un arbore, ierarhizate astfel Aceste fisiere se pot imparti pe mai multe dispozitive Comanda mount ataseaza fisierul de sistem gasit pe un anumit dispozitiv la arbore Invers comanda unmount il va elimina din arbore Forma standard a comenzii este : mount –t type device dir Ea spune nucleului sa ataseze fisierul de sistem gasit pe „device” la directorul „dir” Alte optiuni pentru comanda mount sunt : - -V : arata versiunea; -h: printeaza un mesaj de ajutor; - -a: ataseaza toate fisierele de sistem mentionate in „fstab” - -r: ataseaza fisierul de tip read-olny - -w: ataseaza fisierul de sistem read/write Apelul sync() scrie datele din memorie pe disc Functia ar trebui apelata inainte de ca procesorul sa fie oprit, ea asigurand ca tot ce este in memorie este scris pe disc sync [ help] [ version] chdir() schimba directorul curent de lucru cu cel specificat in „path” La realizarea cu reusita a operatie se returneaza „0”, iar in caz contrar „-1” #include int chdir(const char *path); 79 chroot() schimba directorul radica cu cel specificat in „path” Directorul radacina este mostenit de toate procesele child ale procesului curent Apelul functiei nu inchide descriptorii fisierelor deschise si acesti descriptori pot permite accesul la fisiere din afara arborelui chroot Daca operatia se realizeaza cu succes se returneaza „0” si daca da gres se returneaza „-1” #include int chroot(const char *path); Functia getcwd() copiaza calea absoluta a directorului curent de lucru in sirul aratat de „buf”, a carui lungime este „size” Daca aceasta cale absoluta este mai lunga decat decat „size” se returneaza NULL #include char *getcwd(char *buf, size_t size);char *get_current_dir_name(void);char *getwd(char *buf); rewinddir() reseteaza pozitia in director la inceputul acestuia #include #include void rewinddir(DIR *dir); Apeluri de sistem pentru protectie Aceste apeluri asigura securitatea informatiilor continute in fisiere Se pot seta capabilitati de acces pentru grupuri de useri sau pentru useri in parte Grupurile de useri, respectiv userii separati pot avea acces la scrierea unui fisier, la citirea lui sau la exectia lui Evident pot avea loc si combinatii de acces chmod() mofica permisiunea de acces la un fisier Aceast apel de sistem modifica nivelul de acces al fiecarui fisier dat ca parametru in conformitate cu „mode” Acest parametru poate fi simbolic sau un numar in baza chmod [OPTION] MODE[,MODE] FILE Combinatia de litere „ugoa” controleaza carui grup de acces i se modifica permisiunea „u” desemneaza owner-ul, detinatorul, fisierului, „g” desemneaza ceilalti utilizatori din grupul din care provine owner-ul, „o” ceilalti utilizatori din afara grupului si „a” indica toti utilizatorii Daca nu este indicat niciun parametru se considera parametru „a” Operatorul „+” determina ca noua permisiune sa fie adaugata celor deja existente, operatorul „-„ sterge permisiunea indicata si operatorul „=” face ca permisiunea indicata sa fie singura permisiune a acelui fisier Litera „r” indica permisiunea de a fi citit Litera „w” ofera posibilitatea de a scrie fisierul respectiv, iar litera „x” permite executarea fisierului 80 getuid() returneaza identitatea user-ului Ea returneaza ID userului real pentru procesul curent Acest tip de functie nu returneaza erori #include #include uid_t getuid(void); setuid() seteaza identitatea userului Apelul seteaza ID efectiv pentru userul procesului curent Daca UID-ul efectiv este root, atunci UID-ul real si saved set-user-ID sunt setate de asemenea Daca utilizatorul este root sau programul este set-user-ID-root trebuie luate masuri speciale Functia setuid() verifica ID-ul efectiv al userului si daca este superuser, toate procesele in legaura cu el sunt setate cu „uid” Dupa ce acestea au avut loc este imposibil pentru program sa reobtina privilegii de root Daca apelul se executa cu succes, valoarea este returnata La aparitia unei erori valoarea -1 este returnata #include #include int setuid(uid_t uid); getgid() returneaza ID real al grupului din care face parte procesul curent Aceasta functie nu returneaza erori #include #include gid_t getgid(void); gid_t getegid(void); setgid() seteaza ID efectiv al grupului din care face parte si procesul curent Daca cel care apeleaza este un superuser, atunci GID real si saved-ste group-ID sunt de asemenea setate Daca apelul se realizeaza cu succes atunci se returneaza valoarea Daca, in schimb apare o eroare, se intoarce valoarea -1 #include #include gid_t getgid(void); gid_t getegid(void); chown() mofica detinatorul fisierulului si grupul Acest apel de sistem modifica proprietarul si/sau grupul de proprietari fiecarui fisier primit ca parametru Daca este dat 81 doar noul proprietar atunci acesta devine detinator al tuturor fisierelor date ca parametru, iar grupul nu se modifica Daca viitorul proprietar este urmat de numele grupului sau GID, grupul de detinatori este de asemenea modificat chown [OPTION] [OWNER][:[GROUP]] FILE Apelul de sistem poate primi mai multe optiuni printre care pot fi enumerate : -R(opereaza asupra fisierelor si directoarelor in mod recursiv), -L(traverseaza toate legaturile simbolice intalnite pana la director) umask() seteaza masca de creatie a procesului apelant la valoarea „mask”&0777 Acest apel de sistem este utilizat de open(), mkdir() si de alte apeluri de sistem care creaza fisiere pentru a modifica permisiunea fisierelor sau directoarelor nou create Permisiunile specificate in umask() sunt oprite din argumentul mode ale open() si mkdir() Acest apel de sistem intotdeauna se desfasoara cu succes si intoarce valoarea precedenta a „mask” #include #include mode_t umask(mode_t mask); Apeluri de sistem pentru managementul timpului Aceste apeluri de sistem sunt utilizate pentru a permite setarea timpului pentru anumite fisiere sau pentru a vizualiza timpul sistemului time este o comanda care ruleaza un program „command” cu argumentele date Cand programul „command” se termina, time returneaza statistici temporale despre rularea programului Aceste statistici contini informatii despre timpul scurs de la invocarea programului si pana la terminarea lui, informatii despre timpul sistemului time [options] command [arguments ] times() returneaza timpul procesului Apelul stocheaza timpii procesului curent intro structura „tms” spre care arata pointer-ul „buf” #include clock_t times(struct tms *buf) Structura „tms” are urmatoarele campuri: struct tms { clock_t tms_utime; /* user time */ clock_t tms_stime; /* system time */ clock_t tms_cutime; /* user time of children */ clock_t tms_cstime; /* system time of children */ }; 82 Campul „tms_utime” contine timpul scurs pentru executarea procesului apelant „tms_stime” ofera informatii despre timpul scurs pentru executarea de task-uri pentru procesul apelant Toate valorile sunt date in numere de perioade de ceas stime() seteaza timpul Apelul seteaza timpul sistemului referitor la data si ora #define _SVID_SOURCE /* glibc2 needs this */ #include int stime(time_t *t); Timpul dat de pointerul „t” este masurat in secunde de la 00:00:00 GMT Ianuarie, 1970 Acest apel poate fi executat doar de superuser Daca setarea timpului are loc cu succes este returnata valoarea In cazul unei erori se intoarce valorea -1 Bibliografie Capitol 5:  LINUX System Call Quick Reference - Jialong He  Modern Operating Systems Second Edition - Andrew Tanenbaum  Operating Systems Design and Implementation, Third EditionAndrew S Tanenbaum - Vrije Universiteit Amsterdam, The Netherlands, Albert S Woodhull - Amherst, Massachusetts  http://www.linuxmanpages.com/  http://linux.die.net/man/  http://en.wikipedia.org/ 83 CAPITOLUL WIN32 API ȘI REGISTRUL DE INFORMAȚII PENTRU WINDOWS HULEA RĂZVAN FLORIN, 433A Ce este Win32 API? Win32 API (Application Programming Interfaces) reprezinta un set de aplicatii disponibile pentru sistemele de operare Windows Initial a fost numit Win32 API.Totusi,Win API isi are radacinile in Windows-ul pe 16 biti,iar in zilele noastre il intalnim si pe platformele pe 64 de biti.Marea majoritate a programelor interactioneaza cu Win API,dar exista unele exceptii, de exemplu:Windows Start-Up Process,care foloseste Native API Suportul pentru dezvoltatorii de aplicatii este disponibil pentru sistemul de operare Windows sub forma unui SDK, mai precis Microsoft Windows Software Development Kit(Microsoft Windows SDK), care ofera documentatia necesara dezvoltatorilor pentru a crea aplicatii folosind Windows API si tehnologiile Windows asociate Windows API permite aplicatiilor sa „exploateze” capacitatea sistemului de operare Windows.Folosind API, pot fi dezvoltate aplicatii care sa ruleze cu succes pe toate versiunile de Windows si care sa profite de avantajele oferite de fiecare versiune in parte.Diferentele de implementare ale programelor depind de capabilitatea de interpretare a sistemului de operare.Aceste diferente sunt disponibile in documentatia sistemului de operare Windows API este format din urmatoare categorii: • • Administratie si Management Diagnosticare • Grafica si Multimedia • Retele • Securitate • Servicii de sistem • Interfata utilizatorului cu Windows (Windows User Interface) Administrare si Management 84 Administrarea si Managementul interfetelor permit instalarea,configurarea,managerizarea aplicatiilor sau a sistemelor.Vom ilustra prin cateva exemple aceasta categorie de Windows API Boot Configuration Data WMI Provider Boot Configuration Data(BCD) Windows Management Instrumentation (WMI) ofera un spatiu care este folosit pentru descrierea aplicatiilor bootabile si setarile acestora.Obiectele si elementele inlocuiesc in esenta fisierul Boot.ini.Datele stocate pot fi gestionate utilizand clasele implementate de catre WMI,descrise in documentatia SDK sau utilizand BCDEdit (linie de comanda utilitara) Acesta este folosit incepand de la Windows Vista,Windows Server 2008 sau in versiunile care permit modificarea optiunilor de bootare Microsoft Management Console Scopul Microsoft Management Console(MMC) este de a minimiza costul administrarii aplicatiilor din Windows si de a furniza o administrare eficienta,simpla pentru utilizartor MMC SDK poate fi folosit pentru a scrie utilitare, numite snap-ins,pentru administrarea mediilor bazate pe Windows Documentatia MMC SDK arata cum se dezvolta snap-ins-uri folosind Visual Basic sau C++ Restart Manager Scopul Restart Manager API este de a elimina sau de a reduce numarul de restart-uri necesare pentru a termina sau pentru a completa o instalare a unui program sau a unui update.Principalul motiv pentru care update-urile necesita un restart este ca fisierele care necesita updatare sunt folosite in acel moment si nu pot fi modificate.Restart Manager-ul elibereaza fisierele folosite si acestea pot fi updatate Restart Managerul (dll) exporta o interfata C care poate fi incarcata chiar si de utilizatorii standard Instalatorul(programul care instaleaza) poate folosi Restart Managerul pentru a retine fisierele care ar trebui inlocuite in timpul instalarii sau al update-ului.Ulterior momentului in care se face instalarea sau update-ul, installerul poate folosi Restart Managerul pentru a sti care sunt fisierele care nu pot fi updatate , acesta poate inchide si redeschide programele care nu sunt esentiale in rularea sistemului de operare pentru a termina instalarea si update-ul fisierelor DIAGNOSTICAREA Diagnosticarea permite evaluarea deficientelor de rulare a programelor sau a problemelor de sistem si monitorizeaza performanta.Cateva exemple de API-uri pentru aceasta ramura a Windows API ar fi: Application Recovery and Restart 85 O aplicatie poate folosi Application Recovery and Restart(ARR) pentru a salva date si informatii despre starea programului inainte ca aplicatia sa se inchida in urma unei erori netratate( unhandled exception) sau in momentul in care aceasta se blocheaza,nu mai raspunde.Aplicatia poate fi repornita, daca utilizatorul cere acest lucru O aplicatie poate fi deasemenea restartata daca un program updateaza o aplicatie sau daca PC-ul este nevoit sa restarteze in urma unui proces de update.Este necesar ca atat aplicatia cat si programul care face update sa fie autorizate in mod corespunzator Performance Counter(indicatorul de performanta) Scopul acestui API este de a oferi informatii despre cat de bine ruleaza un sistem de operare,o aplicatie, un serviciu sau chiar un driver.Aceste API-uri sunt utile pentru a identifica gatuirile(bottleneck-urile) si de a ajusta performanta sistemului si a aplicatiilor.De exemplu,sistemul de operare poate oferi chiar si un grafic,indicator de performanta, sau un scor System Monitor Scopul API-ului System Monitor(SYSMON) este ca utilizatorul sa configureze Microsoft System Monitor ActiveX Control.SYSMON permite vizualizarea in timp real si a performantelor precedente ale performance counter(indicatorului de performanta) informatii despre memorie, hdd si procesor SYSMON API a aparut incepand cu Microsoft Windows 2000 Grafica si multimedia Interfetele grafice si multimedia permit aplicatiilor sa incorporeze texte,grafica,audio si video Open GL O interfata software foloseste OpenGL pentru a construi obiecte multidimenstionale intr-o zona tampon.Implementarea Microsoft a OpenGL pentru sistemele de operare Windows este standardizata,iar programatorii pot crea imagini si animatii tridimensionale color, de foarte mare calitate OpenGL este foarte usor de folosit de la un sistem de operare la altul.Fiecare sistem de operare are cerintele proprii, iar codul OpenGl este compatibil cu multe versiuni ale Windows OpenGL a fost dezvoltat de catre programatorii in C/C++ Windows Multimedia Windows Multimedia permite vizualizarea aplicatiilor care au sunet si imagine Retele Acestea permit comunicarea intre diferite aplicatii intre doua sau mai multe calculatoare prin intermediul unei retele.De asemenea,pot fi gestionate resurse comune,cum ar 86 fi directoare care pot fi vizibile in interiorul unei retele,sau folosirea unei imprimante.Cateva exemple de API-uri din aceasta categorie ar fi : Bluetooth Bluetooth-ul este un protocol standard care permite comunicarea wireless intre computere,telefoane mobile sau alte dispozitive care suporta acest protocol Acesta permite dezvoltatorilor care deja cunosc programarea retelelor sa porteze aplicatii sau sa le dezvolte rapid HTTP Server API HTTP Server API permite aplicatiilor sa comunice prin intermediul protocolului HTTP fara a folosi IIS(Internet Information Server).Aplicatiile se pot inregistra sa primeasca o cerere HTTP de la un URL particular, sau sa trimita raspunsuri HTTP.HTTP Server API include si suport SSL astfel incat aplicatiile pot schimba date prin intermediul conexiunilor securizate HTTP fara a folosi IIS DNS DNS (Domain Name System ) este un protocol standart care localizeaza calculatoarele pe baza unei adrese IP.Retelele precum Internet sau retelele Windows se bazeaza pe un numar de adrese pentru a procesa date.Utilizatorii, totusi,retin mai usor numele adresei si este necesara translatarea unor nume familiare in adrese pentru ca reteaua sa fie recunoscuta (www.microsoft.com -> 207.46.131.137) Securitate Cryptography Criptografia reprezinta utilizarea unor coduri pentru a converti anumite date astfel incat doar un anumit receptor sa le poata citi,utilizand o cheie Tehnologiile de criptare de la Microsoft includ CryptoAPI,Cryptographic Service Providers (CSP),CAPICOM CryptoAPI a fost gandita ca sa fie folosita de dezvoltatorii de aplicatii bazate pe Windows care permit utilizatorilor sa creeze si sa faca schimb de documente si alte date intrun mediu sigur,intr-un loc atat de nesigur cum este Internetul.Dezvoltatorii ar trebui sa fie familiarizati cu limbajele de programare C si C++ si cu mediul de dezvoltare oferit de Windows.Desi nu este necesar,o intelegere a criptografiei si a problemelor legate de securitate este necesara pentru a intelege fenomenul Authentication Authentication(autentificarea) reprezinta procesul prin care sistemul de operare valideaza informatia de logare a utilizatorului.Un username si o parola sunt comparate cu o lista de autorizatii,iar daca sistemul detecteaza o similaritate,accesul este permis 87 Autentificarea facuta de Microsoft include autentificare LSA,Credentials Management, Smart Card Authentication, Network Provider, Security Support Provider Interface (SSPI), Winlogon, and GINA Tehnologiile de autentificare ale Microsoft au fost gandite de a fi folosite de dezvoltatorii de aplicatii care se bazeaza pe Windows Server,Windows Vista si sisteme operare Windows care identifica clientii.Dezvoltatorii ar trebui sa fie familiarizati cu programarea in Windows.O intelegere a procesului de autenrificare si a subiectelor legate de securitate este necesara Windows Web Services API Windows Web Services API , sau mai pe scurt WWSAPI reprezinta o implementare a codului SOAP care ofera o functionalitate de baza de comunicare in retea prin sprijinirea unui set WS-* si NET de familii de protocoale.WWSAPI a fost creat pentru a fi utilizat de catre aplicatii care se incadreaza in urmatoarele categorii: • • Cod nativ mandatat Necesita dependinte minime • Necesita un timp de pornire minim • Medii constranse de memorie WWSAPI ofera o interfata de programare a aplicatiilor (API) in C / C++ pentru construirea de aplicatii SOAP bazate pe servicii web si client O intelegere elementara a serviciilor web si protocoalele asociate acestora este importanta pentru a folosi API WWSAPI reprezinta o componenta a urmatoarelor sisteme de operare: • • Windows Windows Server 2008 R2 DirectX Microsoft DirectX este o colectie de API-uri care se ocupa cu gestionarea task-urilor legate de multimedia, in special in domeniul jocurilor video, pe platformele Microsoft Initial, numele acestor API-uri incepeau toate cu „Direct” si putem enumera cateva exemple : Direct3D, DirectDraw,DirectMusic, DirectPlay sau DirectSound Denumirea de DirectX a fost data pentru a ingloba toate aceste API-uri, X poate fi interpretat ca o necunoscuta care ia valorile 3D,Draw etc Atunci cand Microsoft a decis sa lanseze prima sa consola de jocuri video,a hotarat sa o denumeasca Xbox X deoarece API-urile pentru Xbox incepeau cu X.Putem enumera cateva exemple,precum Xinput sau XACT(Cross-Platform Audio Creation Tool),iar DirectX a fost pastrat pentru denumirea API-urilor din Windows (Direct2D,DirectWrite) 88 Direct3D(grafica 3D implementata cu DirectX) este folosit la scara larga in dezvoltarea jocurilor video pentru Microsoft Windows,Microsoft Xbox si Microsoft Xbox360.Direct3D este de asemenea folosit si de catre aplicatiile software pentru vizualizarea grafica a proceselor de tip CAD/CAM,ininginerie.Intrucat este foare popular si foarte folosit,este posibil ca in practica sa se intalneasca si numele simplu de DirectX SDK-ul DirectX-ului (Software Development Kit) este constituit din librarii de tip runtime,impreuna cu documentatia si headerele folosite pentru scrierea codului.Initial,acestea librariile erau instalate de catre utilizator sau chiar direct de catre jocuri.De exemplu,Windows 95 nu cuprindea si DirectX,dar acesta a fost introdus o data cu Service Release a aceluiasi sistem de operare Windows 98 si NT 4.0 au fost oferite utilizatorilor impreuna cu DirectX,iar in zilele noastre sistemele de operare au inclus in pachetul de servicii DirectX-ul SDK-ul este disponibil tuturor si mai mult,este gratuit.Exista numeroase tutoriale pentru dezvoltarea de aplicatii simple Direct3D 9Ex, Direct3D 10, and Direct3D 11 sunt disponibile pentru Windows Vista si pentru Windows pentru ca fiecare din aceste noi versiuni au fost construite sa depinda de noul Windows Display Driver,care a fost introdus o data cu Windows Vista.Arhitectura Windows Display Driver Model include un nou management al memoriei care permite vizualizarea a mai multor aplicatii rulate simultan,precum Desktop Window Manager Windows API pentru Windows 2000 Ca toate sistemele de operare,Windows 2000 are un set de apeluri de sistem.Totusi,Microsoft nu a facut apelurile de sistem de tip public, si acestea se tot schimba de la un sistem de operare la altul.Atunci,Microsoft a definit un set de apeluri de functii denumite Win32 API,care sunt cunoscute si au documentatia disponibila.Astazi,sunt adaugate API-uri versiunilor mai noi de Windows Programele binare scrise pentru familia de procesoare Intel x86 care au aderat la Win32 API vor rula in acelasi mod de la Windows 95 pana la Windows 2000.Dupa cum se poate vedea in figura de mai jos,pentru sistemul de operare Windows 3.x trebuie adaugata o librarie in plus.Trebuie totusi remarcat ca Windows 2000 adauga in mod substantial o functionalitate pentru Win32,iar unele API-uri prezente in Windows 2000 nu sunt disponibile si in versiunile mai noi(acesta are cateva API-uri specifice) O schema generala poate fi vazuta mai jos : 89 Filosofia Win32 API este complet diferita de catre cea a UNIX-ului.Apelurile de sistem sunt publice si cunoscute si formeaza o interfata minima : reducerea uneia dintre acestea va duce la o functionalitate restransa a sistemului de operare Filosofia Win32 API este de a oferi o interfata cuprinzatoare,de multe ori fiind oferite sau poate chiar posibilitati de a face acelasi lucru prin metode diferite si include multe functii (i.e proceduri) care nu sunt apeluri de sistem precum un apel API de copiere a unui fisier in intregime Multe din aplicatiile Win32 API creeaza obiecte kernel de tipuri diferite,precum fisiere,thread-uri,procese si asa mai departe.Orice apel care creeaza un obiect returneaza un rezultat numit handle catre cel care apeleaza.Acest handle poate fi folosit ulterior pentru a face diverse operatii cu obiectul.Handle-urile sunt specifice proceselor care au creat obiectele.Aceste handle-uri nu pot fi folosite in alte procese decat in cel care a fost creat.Totusi,exista posibilitatea de a „dubla” un handle in anumite circumstante intr-un mod protejat,permitand un acces controlat(limitat) la obiecte obtinute din alt proces.Orice obiect are atasat un descriptor de securitate care ne spune in detaliu ce este permis si ce nu este permis(ce operatii pot fi facute cu obiectul respectiv) Se spune uneori ca Windows 2000 este obiect-orientat deoarece singurul mod de a manipula obiectele este de a invoca operatiile handle-urilor prin apelul Win32 API Pe de alta parte, exista o lipsa a unor proprietati de baza ale conceptului obiect-orientat, de exemplu mostenirile sau polimorfismul Apelurile de sistem Win32 API acopera aproape toate problemele cu care s-ar putea confrunta un sistem de operare.In mod natural,exista apeluri pentru crearea si managementul proceselor si firelor de executie.Exista multe apeluri care sunt in concordanta cu notiunea de comunicatie inter-proces(sau mai bine zis,inter-thread),cum ar fi crearea,distrugerea,folosirea Mutex-urilor, a semafoarelor,evenimentelor sau a altor obiecte de tip IPC Desi managementul memoriei sistemului de operare este ascuns programatorului, o caracteristica importanta este totusi disponibila:abilitatea unui proces de a mapa un fisier in 90 interiorul memoriei virtuale.Acest lucru permite proceselor sa citeasca si sa scrie parti din fisier ca si cum ar fi cuvinte din memorie Un alt lucru foarte important pentru programe este I/O.Din punctul de vedere al lui Win32,un fisier nu este altceva decat o insiruire de bytes Win32 ofera peste 60 de apeluri pentru crearea si distrugerea fisierelor si directoarelor, deschiderea si inchiderea fisierelor,scrierea si citirea acestora, cererea si setarea atributelor fisierelor si multe altele O alta arie in care Win32 API ofera apeluri este aria securitatii.Fiecare proces are un ID care spune cine este si orice obiect poate avea o lista de acces care va spune care utilizatori au voie sa faca anumite operatii cu obiectul Aceasta abordare permite limitarea accesului la anumite obiecte,din ratiuni de securitate Procesele, thread-urile, sincronizarea, management-ul de memorie, fisierele de intrare/iesire si apelurile de sistem pentru securitate nu mai sunt demult o noutate Si alte sisteme de operare le au de asemenea, desi, in general, nu toate dintre ele, de exemplu Win32 Dar Win32 se remarca prin miile de apeluri pentru interfata grafica Exista apeluri pentru crearea, distrugerea, gestionarea si utilizarea ferestrelor, meniurilor, tool bars, status bars, scroll bars, dialog boxes, iconitelor si multe alte lucruri care apar pe ecran Exista apeluri pentru a desena figuri geometrice, pentru a le colora interiorul, pentru a gestiona paleta de culori folosita, tratarea fonturilor si plasarea iconitelor pe ecran In cele din urma, exista apeluri pentru lucrul cu tastatura, mouse-ul si alte dispositive de intrare, cum ar fi cele audio, de printare sau alte dispositive de iesire Pe scurt, Win32 API ( in special partea GUI) este imens si nu am putea nici macar sa incepem sa il descriem in detaliu in acest capitol, asa ca nici nu vom incerca Desi Win32 API este disponibil pe Windows 98 (la fel ca si pe sistemele de operare pentru electronice de consum, Windows CE), nu orice versiune de Windows implementeaza toate apelurile si uneori sunt diferente minore De exemplu, Windows 98 nu are niciun fel de securitate, asa ca acele apeluri API care au legatura cu securitatea returneaza erori pe Windows 98 De asemenea, numele de fisiere din Windows 2000 folosesc caracterul Unicode set, care nu este disponibil pe Windows 98, iar numele de fisiere din Windows 98 nu sunt case sensitive, in timp ce numele de fisiere din Windows 2000 sunt case sensitive (desi unele cautari de nume de fisiere nu sunt case sensitive) Exista, de asemenea, diferente de parametri la unele functii de apel API Pe Windows 2000, de exemplu, toate coordonatele de ecran date in functii grafice sunt numere pe 32 de biti, iar pe Windows 98 sunt folositi doar cei mai putini semnificativi 16 biti deoarece codul majoritatii subsistemelor grafice este pe 16 biti Existenta Win32 API pe anumite sisteme de operare diferite face mai usoara transmiterea de programe intre ele, dar din moment ce aceste variatii minore exista, trebuie sa avem grija pentru a realiza transmiterea de programe Bibliografie Capitol  Silberschat & Galvin – Operating System Concepts 7th edition  Achyut S Godbole – Operating systems 91  http://en.wikipedia.org/  http://msdn.microsoft.com 92 ... model provenit de la Unix şi adoptat de MSDOS, Linux, şi cele mai moderne sisteme de operare Ỵn sistemul de operare Unix, cele mai multe tipuri de operaţiuni de intrare şi ieşire sunt considerate... KDE conţine părţi independente: platforma de dezvoltare KDE (”KDE Development Platform”), Spațiul de lucru KDE (”KDE Workspace”) și Aplicații KDE (”KDE Applications”) 33 Hartă KDE2 2.2.1.1 KDE... celalalt (si cu sistemul de operare) este nevoie de un mecanism de protectie Desi acest mecanism trebuie sa fie in hardware el trebuie controlat de sistemul de operare Punctul de vedere de mai sus

Ngày đăng: 20/10/2022, 00:09

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w