Laboratorium, SO2 instrukcja 8

background image

Instrukcja do laboratorium Systemów Operacyjnych

(semestr drugi)

wiczenie ósme

Ć

Temat: Operacje na plikach, zajmowanie plików

Opracowanie:

mgr in . Arkadiusz Chrobot

ż

dr in . Grzegorz ukawski

ż

Ł

background image

Wprowadzenie

1. Niskopoziomowa obs uga plików, dost p

ł

ę wspó bie ny

ł

ż

do plików

Programista pisz cy

ą

programy dla rodowiska

ś

uniksowego ma do wyboru dwa

rodzaje obs ugi

ł

plików. Mo e

ż

się pos ugiwa

ł

ć niskopoziomowymi funkcjami

dostarczanymi przez system, lub podprogramami, które oferują biblioteki
wej cia

ś

– wyj cia

ś

wi kszo ci

ę

ś

j zyków

ę

programowania. Pierwsze rozwi zanie

ą

pozwala na bezpo redni

ś

dost p

ę

do plików (tzn. niebuforowany) przy u yciu

ż

deskryptorów plików. Pomimo pozornie ma ej

ł

funkcjonalno ci

ś

to w a nie

ł ś

ten

sposób wykonywania operacji wej cia

ś

– wyj cia

ś

jest zalecany je li

ś

z plikiem

pracuje kilka wspó bie nych

ł

ż

procesów lub w tków.

ą

Pos ugiwanie

ł

się funkcjami

systemowymi nie stanowi jednak samo w sobie rozwi zania

ą

problemu

wspó bie nego

ł

ż

dost pu

ę

do plików. Istnieją pomocnicze mechanizmy nazywane

zajmowaniem pliku, które pozwalają na zak adanie

ł

blokad uniemo liwiaj cych

ż

ą

dost p

ę

do plików lub fragmentów plików innym procesom. Są dwa rodzaje tych

mechanizmów: zajmowanie obowi zkowe

ą

(ang. mandatory) i zalecane (ang.

advisory). Pierwszy został wprowadzony do wersji System V Uniksa i jest
w czony

łą

do standardu POSIX. Drugi pojawił się w wersji BSD Uniksa.

Zajmowanie obowi zkowe

ą

pliku (zwane tak e

ż

narzuconym), wymusza na

systemie operacyjnym kontrolowanie, czy procesy nie naruszają na o onych

ł ż

na

plik blokad. Blokady w tym przypadku są zwi zane

ą

z plikiem, tzn. po

zako czeniu

ń

procesu nie są usuwane. Zajmowanie zalecane (zwane tak e

ż

doradczym) nie wymusza sprawdzania poprawno ci

ś

operacji na pliku przez

j dro

ą

systemu. O to muszą zadbać procesy odwo uj ce

ł

ą

się do pliku. Blokady te

zwi zane

ą

są z procesem

1

, a wi c

ę

po jego zako czeniu

ń

są usuwane. Linux

pozwala na stosowanie obu rodzajów zajmowania, aczkolwiek domy lnie

ś

stosowane jest zajmowanie zalecane. Aby móc pos ugiwa

ł

ć się zajmowaniem

obowi zkowym

ą

nale y

ż

zamontować system plików z odpowiednimi flagami

i odpowiednio skonfigurować prawa dost pu

ę

do plików. Istnieją dwa rodzaje

blokad: dzielone lub do czytania, które pozwalają kilku procesom czytać
wspó bie nie

ł

ż

z pliku (ca ego

ł

lub cz

ci),

ęś

ale zakazują zapisywania i blokady

wy czne

łą

lub do zapisu, które pozwalają tylko jednemu procesowi na zapis do

pliku (ca ego

ł

lub cz

ci).

ęś

Proces b d cy

ę ą

w a cicielem

ł ś

blokady mo e

ż zmienić jej

typ. Je eli

ż

na pliku lub jego obszarze istnieje blokada wspó bie na,

ł

ż

to inny

proces na ten sam plik lub obszar mo e

ż na o y

ł ż ć swoją blokadę do czytania, ale

nie mo e

ż na o y

ł ż ć blokady do zapisu. Je li

ś

na pliku lub obszarze pliku istnieje

blokada wy czna

łą

to aden

ż

proces nie mo e

ż na o y

ł ż ć na ten plik (obszar) adnej

ż

innej blokady.

1 Dok adniej z relacj proces – plik, w przypadku Linuksa jest ona zwi zana z obiektem pliku.

ł

ą

ą

2

background image

2. Funkcje i struktury danych



funkcja open() – otwiera plik. Jako argumenty pobiera cie k

ś

ż ą dost pu

ę

do

pliku i flagi. Mo e

ż

również pobierać prawa dost pu,

ę

je li

ś

plik nie istnieje

i ma być utworzony.

Warto ci

ś ą zwracaną przez funkcję jest deskryptor

pliku. Szczegó y: man 2 open.

ł



funkcja create() – tworzy nowy plik i otwiera go do zapisu, czyli dubluje
cz

ciowo dzia anie open(). Szczegó y: man creat.

ęś

ł

ł



funkcje dup() i dup2() – pozwalają uzyskać kopię deskryptora pliku.
Deskryptor oryginalny i powsta y

ł w wyniku dzia ania

ł

dup() lub dup2() nie

dzielą jedynie ze sobą flagi close_on_exit. Szczegó y:

ł

man dup lub man

dup2.



funkcja read() – odczytuje z pliku okre lon

ś

ą ilość informacji. Jako

argumenty przyjmuje deskryptor pliku, adres zmiennej do której ma
zapisać informacje, oraz ilość informacji jaką ma przeczytać wyra on

ż

ą

w bajtach. Warto ci

ś ą zwracaną przez funkcję jest natomiast liczba

przeczytanych bajtów. Mo e

ż

zostać zastosowana również do odczytu

standardowego wej cia,

ś

którego deskryptor wynosi zero. Szczegó y:

ł

man

2 read.



funkcja write() – zapisuje dane do pliku. Przyjmuje takie same argumenty
jak read(), mo e

ż być u yta

ż

do zapisu na standardowe wyj cie

ś

(deskryptor

1) lub standardowe wyj cie

ś

diagnostyczne (deskryptor 2). Warto ci

ś ą

zwracaną przez funkcję jest ilość zapisanych bajtów. Szczegó y:

ł

man

2 write.



funkcja close() – zamyka plik zwi zany

ą

z przekazanym jej jako argument

deskryptorem. W razie niepowodzenia zwraca wartość -1 w przeciwnym
przypadku warto

0.

ść



funkcja lseek() – zmienia warto

wska nika pliku. Szczegó y: man lseek.

ść

ź

ł



funkcja flock() – zak ada

ł

lub usuwa blokadę z pliku. Jest zwi zana

ą

z mechanizmem zalecanego zajmowania. Blokadę mo na

ż

na o y

ł ż ć tylko

i wy cznie na ca o

pliku. Szczegó y: man 2 flock.

łą

ł ść

ł



funkcja lockf() – zwi zana

ą

z mechanizmem zajmowania obowi zkowego.

ą

3

background image

W Linuksie stanowi interfejs na o ony

ł ż

na funkcję fcntl(). Szczegó y:

ł

man

lockf.



funkcja fcntl() – generalnie pozwala na manipulowanie deskryptorem
otwartego

pliku.

Pozwala

również

zak ada

ł

ć

blokady

zwi zane

ą

z zajmowaniem

obowi zkowym,

ą

lecz

domy lnie

ś

stosuje

zajmowanie

doradcze (podobnie jak lockf()). Pozwala na zajmowanie ci le

ś ś

okre lonych

ś

obszarów plików lub ca ych plików. Szczegó y: man fcntl.

ł

ł

Zadania

1. Napisz program, który przepisze z istniej cego

ą

pliku tekstowego czterdzie ci

ś

znaków z pocz tku i czterdzie ci znaków z ko ca do nowego pliku.

ą

ś

ń

2. Zademonstruj dzia anie funkcji replikuj cej deskryptory plików.

ł

ą

3. Zademonstruj dzia anie

ł

funkcji flock() na przyk adzie,

ł

w którym kilka procesów

wspó bie nych b dzie si ubiega o o mo liwo

zapisu lub odczytu z pliku.

ł

ż

ę

ę

ł

ż

ść

4. Powtórz zadanie trzecie u ywaj c fcntl() i blokuj c wybrane fragmenty pliku.

ż

ą

ą

5. Napisz program, który przeczyta i wypisze na ekran plik tekstowy o dowolnej

wielko ci.

ś

Nazwę

pliku

nale y

ż

przekazywać

jako

argument

wywo ania

ł

programu. W programie nie wolno korzysta z funkcji printf() ani pokrewnych.

ć

6. Napisz odpowiednik programu „cp”.

7. Napisz program, w którym dwa procesy b d

ę ą zapisywa y

ł

do jednego pliku,

a trzy b d

ę ą odczytywa y.

ł

Zastosuj zajmowanie zalecane do synchronizacji pracy

procesów.

8. Napisz program, który otworzy do odczytu wskazany plik tekstowy, a nast pnie

ę

wywo a

ł

funkcję fork(). Jeden z powsta ych

ł

procesów policzy sumę liczb

parzystych znalezionych w otwartym pliku, a drugi liczb nieparzystych.

9. Napisz dwa programy: pierwszy b dzie

ę

generował losowe liczby i zapisywał je

porcjami do pliku, drugi dzia aj c

ł ą wspó bie nie

ł

ż

z pierwszym b dzie

ę

odczytywał

je i szukał warto ci

ś

maksymalnej. Do blokowania fragmentów pliku nale y

ż u y

ż ć

funkcji fcntl().

10.Napisz program, w którym stworzysz cztery procesy. Ka dy

ż

z tych uzyska

kopię deskryptora do pojedynczego pliku, przy czym jeden proces b dzie

ę

do

tego pliku pisa , a pozosta e b d czyta y.

ł

ł

ę ą

ł

4


Wyszukiwarka

Podobne podstrony:
Laboratorium, SO2 instrukcja 6
Laboratorium SO2 instrukcja 1
Laboratorium SO2 instrukcja 2
Laboratorium SO2 instrukcja 9
Laboratorium, SO2 instrukcja 9
Laboratorium, SO2 instrukcja 7
Laboratorium, SO2 instrukcja 1
Laboratorium SO2 instrukcja 4
Laboratorium SO2 instrukcja 10
so2-laboratorium SO2 instrukcja 7
so2-laboratorium SO2 instrukcja 8
Laboratorium SO2 instrukcja 3
Laboratorium, SO2 instrukcja 5
Laboratorium, SO2 instrukcja 6
laboratorium zadanie 4 instrukcja
laboratorium zadanie 2 instrukcja
laboratorium zadanie 2 instrukcja
istan Laboratorium, BHP, Instrukcje-Stanowiskowe
sprawozdanie HP5 - OgarnijTemat.com, SiMR inżynierskie, Semestr 5, PNHiP, LABORATORIUM, SPRAWKA i IN

więcej podobnych podstron