Laborator 1Introducere
Sisteme de Operare
25 Februarie - 2 Martie 2016
SO Laborator 1, Introducere 1/21
Cine sunt?
I email
I experienta
I pasiuni relevante
I de ce SO?
SO Laborator 1, Introducere 2/21
Resurse
I Wiki: http://ocw.cs.pub.ro/soI NeedToKnow page:
http://ocw.cs.pub.ro/so/meta/need-to-knowI Folosit, i feed-ul RSS
I Lista de discut, iiI [email protected] Abonat, i-va (detalii pe wiki)
I Catalog Google, calendar Google
I Mas, ini virtuale
I vmchecker (verificare teme)
I Documentat, ie
I cs.curs.pub.ro (rol de portal + workshop)
I Pagina de Facebook
SO Laborator 1, Introducere 3/21
Despre laborator
I Subiecte principaleI ProceseI Thread-uriI Comunicare s, i sincronizareI MemorieI Sisteme de fis, iereI I/O
I POSIX/Win32 API programming (C/C++)
I 7 minute workshop / 15 min prezentare / restul task-uri
I Tutorial-like, task-based, learn by doing
I Karma Points (”pentru cei puternici”)
SO Laborator 1, Introducere 4/21
Workshop
I TestulI 3 ıntrebari din laboratorul curentI Primele 7 minute din laboratorI Intrebari atat teoretice, cat s, i practice
I PunctareI Corectat, i voi: acasa, random s, i anonim cate doua teste;
deadline: o saptamana dupa ıncheierea laboratoruluiI Nota finala pe test: punctajul primit pe test (50%) + punctaj
pe cum at, i corectat (50%)
I Total teste: 5 (la ınceputul laboratoarelor 2, 4, 6, 8, 11)
SO Laborator 1, Introducere 5/21
Teme
I Tema 0 – hash-table
I Tema 1 – mini-shell
I Tema 2 – demand pager/swapper
I Tema 3 – thread scheduler
I Tema 4 – server de fis, iere
I Intense
I Necesare: aprofundare API (laborator) s, i concepte (curs)
I Estimare de timp: 8-20 ore pe tema
I Teste publice
I Suport de testare la submit - feedback imediat
SO Laborator 1, Introducere 6/21
Reguli s, i notare
I http://ocw.cs.pub.ro/courses/so/meta/notare/reguli-notare-cb
I Examen final - 4 puncteI Activitate laborator - 1 punct
I 0.75 puncte workshop, 0.75 puncte task-uri => trunchiere la 1punct
I Prezent, a activa obligatorie la cel put, in 8 laboratoare pentru aintra ın examen
SO Laborator 1, Introducere 7/21
Reguli s, i notare (2)
I Teme - 5 puncte + 4 puncte * corelare punctajI Fiecare tema valoreaza 1punctI Rezolvata pe ambele platforme, fiecare tema este punctata cu
maxim 1 punct, punctajele se cumuleaza s, i se trunchiaza la 1punct.
I Trunchiere la 5 puncte pentru teme
I Depunctare temeI -0.25 puncte pe zi (din 10) timp de 14 zileI Dupa 14 zile tema nu se mai puncteaza
I Punctajul de absolvire a cursului este 4.5
I Dupa restant,e tot punctajul se reseteaza la 0
SO Laborator 1, Introducere 8/21
Karma Awards
I Cum se obt, in Karma Points?I Participare la discut, iile din timpul cursuluiI Participare la discut, iile din timpul laboratoruluiI Raspunsuri pe lista de discut, iiI Editarea wiki-uluiI Exercit, iile bonus din timpul laboratoruluiI Teme elegante
I Coding style consistent, comentarii punctuale, claritateacodului
I Solut, ii simple s, i corecteI Modularitate, cursivitate
SO Laborator 1, Introducere 9/21
Desfas,urare laborator
I Parcurgere laborator acasa - 40 de minute
I Workshop - 7 minute
I Prezentare teoretica + ıntrebari - 15 de minuteI Rezolvare exercit, ii - 80 de minute
I Punctaj ıntre 0 s, i 11I Bucuria rezolvarii unui laborator de SO infinita :)
I WorkshopI 3 ıntrebari din laboratorul curent
SO Laborator 1, Introducere 10/21
Suport de laborator
I Cart, iI TLPI, The Linux Programming Interface, M. KerriskI WSP4, Windows System Programming 4th Edition, J. Hart
I Lista de discut, iiI http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
I Canal IRC, ret,ea Freenode, #cs so
SO Laborator 1, Introducere 11/21
Ce vom ınvat,a ın laborator
I Compilare, depanare, biblioteci
I Operat, ii I/E simple
I Procese
I Gestiunea memoriei
I Comunicarea inter-procese
I Semnale
I Memoria virtuala
I Fire de execut, ie (2)
I Operat, ii de I/E avansate (2)
I Profiling
I Securitate
SO Laborator 1, Introducere 12/21
Laboratorul 1
I CompilareI Traducerea unui program (limbaj sursa, limbaj t, inta)
I MakefileI Automatizarea procesului de compilare
I DepanareI Detectarea erorilor din programe
I BiblioteciI Colect, ie de fis, iere precompilate
SO Laborator 1, Introducere 13/21
Fazele compilarii
SO Laborator 1, Introducere 14/21
GCC
I GNU Compiler CollectionI gcc hello.c
I Compilare simpla, rezulta fis, ierul executabil a.out
I gcc hello.c -o helloI Compilare simpla cu specificarea numelui fis, ierului de ies, ire
I gcc hello.c -c -o hello.oI Oprirea compilarii dupa obt, inerea fis, ierului obiect
I gcc hello.o -o helloI Editarea de legaturi pentru fis, ierul obiect hello.o
SO Laborator 1, Introducere 15/21
cl
I cl.exe - Microsoft CompilerI cl hello.c
I Compilare simpla, rezulta fis, ierul executabil hello.exe
I cl /Fehello win.exe hello.cI Compilare simpla cu specificarea numelui executabilului
I cl /c hello.cI Obt, inerea fis, ierului obiect
I cl /Fehello.objI Editarea de legaturi pentru fis, ierul obiect
I cl /? - help
SO Laborator 1, Introducere 16/21
Fis, iere make
I Automatizarea compilariiI Fis, ier Makefile
I ReguliI ComenziI Variabile
I Compilare ’des, teapta’
I make vs. nmake
SO Laborator 1, Introducere 17/21
gdb
I Fis, ierele sunt compilate cu opt, iunea -gI Execut, ie
I gdb ./a.out
I Comenzi utileI p - printI bt - backtraceI step, nextI set args
SO Laborator 1, Introducere 18/21
Biblioteci
I StaticeI Rezolvare simboluri ın momentul editarii de legaturiI Funct, iile utilizate sunt incluse ın executabilI Dimensiune executabil mai mare, rulare mai rapida
I DinamiceI Rezolvare simbolurilor se poate face
I La ıncarcare (load-time)I La rulare (run-time) (dlopen and friends)
I Executabil de dimensiune redusa
SO Laborator 1, Introducere 19/21
Lucrul cu biblioteci ın Linux
I Crearea unei biblioteci statice (.a)I ar rc libxyz.a f1.o f2.o
I Crearea unei biblioteci partajate (.so)I gcc -fPIC -c f1.cI gcc -shared f1.o -o libxyz.so
I Legarea cu o bibliotecaI -lxyzI -LpathI LD LIBRARY PATH
SO Laborator 1, Introducere 20/21
Lucrul cu biblioteci ın Windows
I Crearea unei biblioteci statice (.lib)I lib /out:<nume.lib> <lista fisiere obiect>
I Crearea unei biblioteci dinamice (.dll)I declspec(dllimport), declspec(dllexport)I link (/dll) sau cl /LD
SO Laborator 1, Introducere 21/21