Documente Academic
Documente Profesional
Documente Cultură
Sisteme de operare
Coordonator:
Conf. Dr. Marin Vlada
Student:
Irava Radu-Florin
Cuprins:
Prezentare PCLinuxOS..
a.
..3
Istorie.....
b.
c.
.4
Versiuni...........................................4
Caracteristici.........
d.
5
Proiecte...
2.
.....5
Creearea masinii virtuale...
3.
.....7
Instalarea sistemului de operare.
4.
.......14
Configurarea sistemului de operare....
.......23
Problema productora.
consumator..31
Metoda semafoarelor.
b.
32
Metoda transmiterii de mesaje....
2.
.34
Problema brbierului
3.
somnoros...........35
Problema cititori/scriitori..............................
4.
.....38
Problema cinei filozofilor
chinezi.....40
2 | Page
5.
Problema rezervrii
6.
biletelor.............43
Problema grdinii
7.
ornamentale....43
Problema emitorreceptor...44
1. Prezentare PCLinuxOS
3 | Page
a. Istorie
Prevestitorul lui PCLinuxOS a fost un set de pachete RPM (package
manager) create pentru a imbunatati versiunile succesive ale Mandrake Linux
(acum denumit Mandriva Linux). Aceste pachete au fost create de Bill Reynolds
(cunoscut ca si Texstar). Din 2000 pana in 2003, Texstar si-a mentinut depozitul
de pachete RPM in paralel cu site-ul PCLinuxOnline. Intr-un interviu, Reynolds a
declarat ca a inceput PCLinuxOS pentru a-si exprima pasiunea nebuna pentru
pachete de cod sursa, fara a avea de a face cu orgolii, aroganta si politica.
In octombrie 2003, Texstar a creat un branch din Mandrake Linux 9.2.
Lucrand in paralel si la The Live CD Project, Texstar a implementat inca de atunci
acel branch, ca fiind independent, intr-o distributie complet noua.
b. Versiuni
4 | Page
Versiune
2012.2
2011.9
2011.6
2010.12
2010.10
2010.7
2010.1
2010
2009.2
2009.1
2008 "MiniMe"
Data
2 Feb 2012
23 Sep 2011
27 Iun 2011
15 Dec 2010
28 Oct 2010
5 Iul 2010
5 Mai 2010
19 Apr 2010
30 Iun 2009
11 Mar 2009
7 Ian 2008
P.94 "2007"
P.93a "Big Daddy"
P.93a "Junior"
P.93a "MiniMe"
P.93 "MiniMe"
P.92
P.91
P.81a
P.8
P.7
P.5
Release-ul initial
21 Mai 2007
21 Aug 2006
9 Aug 2006
4 Aug 2006
21 Apr 2006
21 Noi 2005
7 Iul 2005
2005
2005
2004
2004
Oct 2003
c. Caracteristici
PCLinuxOS este distribuit ca si Live CD, care poate fi de asemenea instalat
pe hard disk-ul local sau pe un flash drive USB. Versiunea 2009.1 ofera un
installer USB pentru a crea un Live USB, unde configuratiile utilizatorului si datele
personale pot fi salvate daca se doreste. Un Live USB pentru versiuni mai vechi
ale PCLinuxOS poate fi creat manual sau cu UNetbootin. Intregul CD poate fi rulat
din memorie, presupunand ca sistemul are suficient RAM. PCLinuxOS foloseste
APT-RPM, bazat pe Advanced Packaging Tool (APT), un sistem de management al
pachetelor (originar din distributia Debian), impreuna cu Synaptic Package
Manager, un GUI pentru APT, pentru a adauga, sterge sau updata pachete. Daca
sistemul are destula memorie si o conexiune activa la internet, Live CD-ul poate
updata pachete. PCLinuxOS este de asemenea creat astfel incat, dupa ce se face
o configurare initiala, acesta sa poata fi usor de instalat pe mai multe sisteme.
Acest lucru se poate face prin creearea unui Live CD folosind unealta Mklivecd.
5 | Page
d. Proiecte
Distributii third-party
De cand PCLinuxOS include si scriptul mklivecd, exista o varietate de
distributii bazate pe PCLinuxOS, printre care Karoshi, BugnuX, BEL Project, ZENmini Gnome.
Revista PCLinuxOS
Acest proiect este o publicatie gratuita condusa de useri PCLinuxOS ai
MyPCLinuxOS. Numerele revistei sunt disponibile atat in format PDF cat si in
format HTML. Revista este publicata lunar.
MiniMe
Este un Live & Install CD pentru utilizatori avansati care doresc sa isi
adauge propria selectia de pachete. PCLinuxOS 2008 MiniMe a fost lansat pe 1
Iulie 2008.
KDE Fullmonty
Este un pachet ce contine obisnuitul PCLinuxOS la care se adauga niste
layout-uri speciale pentru desktop si multe aplicatii si drivere preinstalate.
Fullmonty aplica un nou concept: desktop-uri virtuale orientate pe activitatile si
nevoile anumitor tipuri de utilizatori, facandu-le viata mai usoara. Exista sase
tipuri de desktop virtual:
6 | Page
7 | Page
8 | Page
9 | Page
10 | P a g e
11 | P a g e
12 | P a g e
13 | P a g e
14 | P a g e
15 | P a g e
16 | P a g e
17 | P a g e
18 | P a g e
19 | P a g e
20 | P a g e
21 | P a g e
22 | P a g e
23 | P a g e
Unul dintre softurile pe care utilizatorii le plac cel mai mult este
ChBg. Acesta este un tool folosit pentru derularea anumitor imagini pe
background.
24 | P a g e
25 | P a g e
26 | P a g e
27 | P a g e
28 | P a g e
29 | P a g e
30 | P a g e
31 | P a g e
1. Problema productor-consumator
Fie
serie
PRODUCTOR).
de
Aceste
procese
date
concurente
sunt
consumate
care
de
produc
alte
date
(procese
procese
(procese
a. Metoda semafoarelor
32 | P a g e
procesele vor fi blocate. Se intr ntr-o excludere mutual cu protocolul bussywait i procesele vor fi deblocate atunci cnd semscriere diferit de n sau
semcitire diferit de 0.
Mutexurile mutexscrierei mutexcitirefolosesc pentru excluderea mutual
ntre dou procese de acelai tip:mutexscriere pentru procesele de tip
productor i mutexcitire pentru procesele de tip consumator.
Procesele productor vor citi numere
//Procese productor
int valoare, tastatur;
while(1)
{ valoare=scanf(%d,&tastatura);
wait(semscriere) ;
33 | P a g e
lock(mutexscriere) ;
tampon[scriere]=valoare ;
scriere=(scriere+1)%n ;
unlock(mutexscriere) ;
signal(semcitire) ;}
//Procese Consumator
int valoare;
while(1)
{wait(semcitire);
lock(mutexcitire);
valoare=tampon[citire];
citire=(citire+1)%n;
unlock(mutexcitire);
signal(semscriere);}
respectiv
productor
fa
de
alte
eventuale
procese
productor
tampon[scriere]=valoarese
fa
de
scrie
alte
efectiv
scriere=(scriere+1)%nse
actualizeaz
unlock(mutexscriere)
elibereaz
se
procese
poziia
mutexul
productoare.
valoarea
de
de
scriere
scriere,
signal(semcitire)
buffer.
n
Prin
Prin
buffer.
Prin
permind
altor
se contorizeaz
34 | P a g e
dect
productorul.
Toate
mesajele
vor
fi
golite
ateptnd
ca
# define n 10000
{int val;
void productor()
message m;
while(1)
{val=produce element();
receive(consumator,&m);
construieste mesaj(&m,val);
send(consumator,&m);}}
void consumator()
35 | P a g e
{int i,val;
message m;
for(i=1;i<=n;i++)
send(productor,&m);
while(1){
receive(productor,&m);
val=extrageremesaj(&m);
send(productor,&m);
consuma element(val);}}
Enun
Prvlia unui brbier este format din dou camere, una la strad, folosit
ca sal de ateptare, i una n spate, n care se gsete scaunul pe care se
aeaz clienii pentru a fi servii. Dac nu are clieni, brbierul somnoros se
culc. S se simuleze activitile care se desfoar n prvlia brbierului.
Rezolvare
Aceast problem este o reformulare a problemei productor/consumator,
n care locul bufferului de obiecte este luat de scaunul brbierului iar
consumatorul este brbierul care i servete (consum) clienii.
36 | P a g e
scaun este pentru un client. Dac nu sunt clieni, brbierul doarme n scaunul de
frizerie. Cnd vine primul client l trezete pe brbier i brbierul l servete pe
client, aezndu-l n scaunul de frizerie. Dac n acest timp sosesc i ali clieni,
ei vor atepta pe cele n scaune. Cnd toate scaunele sunt ocupate i mai vine
nc un client, acesta prsete prvlia.
Problema const n a programa aceste activiti n aa fel nct s nu se
ajung la aa numitele condiii de curs. Este o problem clasic cu multe
aplicaii, mai ales n cele de helpdesk.
Pentru implementarea soluiei vom utiliza dou semafoare i un mutex:
#define scaune 20
/*declaraii i
iniializri*/
semafor brbier=0;
mutexc=1;
int clientiinasteptare=0;
void brbier()
{while(1){
wait(clienti);
wait(mutexc);
clientiinasteptare--;
signal(brbier);
signal(mutexc);
tunde();
}
void clienti()
{wait(mutexc);
if(clientiinasteptare<scaune)
{clientiinasteptare++;
signal(clienti);
signal(mutexc);
clienttuns();
}
else
signal(mutexc);}}
38 | P a g e
3. Problema cititori/scriitori
Varianta 1
Nici un cititor nu va fi inut n ateptare, dect dac un scriitor a obinut
deja permisiunea de acces la obiectul partajat.La un acces simultan la obiectul
partajat, att al scriitorilor ct i al cititorilor, cititorii au prioritate.
Varianta 2
Cnd un scriitor este gata de scriere, el va executa scrierea ct mai curnd
posibil.La un acces simultan, scriitorii sunt prioritari.
Oricum, n ambele cazuri, problema principal ce trebuie rezolvat este
nfometarea, adic ateptarea la infinit a obinerii dreptului de acces.
S implementm un program pentru prima variant, folosind urmtoarele
semafoare, mutexuri i variabile:
seciune critic;
contorcitire o variabil care are rolul de a ine evidena numrului de
procese existente n cursul citirii;
39 | P a g e
void scriitor()
{wait(scrie) ;
scriereobiect() ;
signal(scrie) ;}
void cititor()
{wait(semcontor) ;
contor citire++;
if(contorcitire==1)wait(scrie);/*primul cititor*/
signal(semcontor);
citireobiect();
wait(semcontor);
contor citire--;
if(contorcitire==0)signal(scrie);/*ultimul cititor*/
signal(semcontor);}
40 | P a g e
Cinci filozofi chinezi i petrec viaa gndind i mncnd n jurul unei mese
circulare nconjurat de cinci scaune, fiecare filozof ocupnd un scaun. n centrul
mesei este un platou cu orez i n dreptul fiecrui filozof se afl o farfurie. n
stnga i n dreapta farfuriei cte un beior. Deci, n total, cinci farfurii i cinci
beioare. Un filozof poate efectua dou operaii: gndete sau mnnc. Pentru
a putea mnca, un filozof are nevoie de dou beioare, unul din dreapta i unul
din stnga. Dar un filozof poate ridica un singur beior odat. Problema cere o
soluie pentru aceast cin.
1
3
5
4
Exist multe soluii ale acestei probleme, marea majoritate utiliznd excluderea
mutual.
Pentru a nu aprea interblocarea se folosesc, n general, soluii de
prevenire a acesteia adic se impun unele restricii n ceea ce privete aciunile
filozofilor, cum ar fi:
41 | P a g e
filozoful i;
mutexfil un mutex pentru excludere mutual;
funciafilozof(i) este funcia principal care coordoneaz toate celelalte
Implementarea este:
42 | P a g e
#define n 5
#define stang(i+n-1)%n
#define drept(i+1)%n
#define gandeste 0
#defineinfometat 1
#define mananca 2
typedef int semafor;
typedef int mutex;
int stare[n];
mutex mutexfil=1
semafor sem[n];
void filozof(int i)
while(i) {
gandeste();
ridicabetisor(i);
mananca();
punebetisor(i);
void ridicabetisor(int i)
{wait(mutexfil);
stare[i]=infometat;
test(i);
signal(mutexfil);
wait(sem[i]);}
void punebetisor(int i)
{wait(mutexfil);
stare [i]=gandeste;
test(stang);
test(drept);
signal(mutexfil);
/*filozoful i gndete*/
/*filozoful i ridic cele dou
beioare*/
/*filozoful i mnnc*/
/*filozoful i pune pe mas
dou beioare*/
/*se intr n regiunea critic*/
/*filozoful i este n starea
nfometat*/
/*ncearc s acapareze cele
dou beioare*/
/*se iese din regiunea
critic*/
/*procesul se blocheaz dac
nu se pot lua cele dou
beioare*/
/*se intr n regiunea critic*/
/*filozoful i a terminat de
gndit*/
/*se testeaz dac vecinul
din stnga filozofului i
mnnc*/
/*se testeaz dac vecinul
din dreaptafilozofului i
mnnc*/
/*se iese din regiunea
critic*/
43 | P a g e
}
void test(int i);
{if stare [i]==
infometat&&stare[stang]!=
mananca&&stare[drept]!=
mananca)
{stare[i]=mananca;
signal(sem[i]);}}
7. Problema emitor-receptor
Enun
Un emitor emite succesiv mesaje, fiecare dintre ele trebuind s fie
recepionate de toi receptorii, nainte ca emitorul s emit mesajul urmtor.
Rezolvare
Este o aplicaie de tipul client-server. n acest tip de aplicaii, un proces
server este un proces ce ofer servicii altor procese din sistem iar un proces
client este unul care solicit servicii de la server i le consum.
Dac procesele client i server nu sunt pe acelai calculator, atunci
aceast aplicaie este distribuit. Implementarea ei, cel mai adesea utilizat n
sistemele multicalculator, se face prin transmisie de mesaje.
45 | P a g e