Index
Pod redakcjš Charlesa E. Skinnera Psychologia wychowawcza (13)
Kurcz Ida Pamięć, uczenie się, język (13)
George Orwell Folwark zwierzęcy (13)
rok 2026 10 13
Gordon R. Dickson Smok i Jerzy 7 Smok i sekaty krol
abc.com.pl 7
abc.com.pl 5
Issac Asimov Nemesis (7)
Henryk Sienkiewicz Ogniem i mieczem
Frankl Viktor E. Psychoterapia dla każdego (3)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • grzeda.pev.pl

  • [ Pobierz całość w formacie PDF ]
    .Zadanie 13 - system plików.powrót do spisutreści tematu 6Lab-LinuxSystem PlikówZadanie praktyczne nr 131.WstępW systemie plików systemu Linux istnieje możliwośœć jednoczesnego korzystaniaz jednego pliku przez wiele procesów.Wspólne czytanie nie stwarza oczywiœciewiększych problemów, a dla zapewnienia bezpieczeństwa przy wspólnym pisaniupodczas zapisu nakładana jest na i-węzeł pliku blokada uniemożliwiającajednoczesny zapis wielu procesom.Przy zwykłym korzystaniu z jednego pliku przez wiele procesów, znacznikibieżących pozycji w pliku są dla tych procesów niezależne od siebie; gdyjeden proces przesuwa swój znacznik to znaczniki należące do innych procesówpozostają niezmienione.Jest to niezwykle wygodne, znakomicie utrudniajednak wykonanie wielu interesujących operacji jak choćby zlecanie innemuprocesowi znalezienia czegoœ w pliku, bez koniecznoœści przekazywania następniebieżącej pozycji w tymże pliku metodami w rodzaju kolejki komunikatów lubpamięci dzielonej (metodami skądinąd niezwykle użytecznymi, jednakże, wydajesię, zbyt wyszukanymi na przekazanie kilku zaledwie bajtów danych).Istnieje wprawdzie możliwoœść dzielenia znacznika pozycji w pliku przezwiele procesów, co umożliwia np.wykonanie rzeczonych operacji, jest onajednak ograniczona do przypadku, gdy procesy te są ze sobą spokrewnionenp.jeden jest potomkiem drugiego.Jest to możliwe dzięki temu, że procespotomny dziedziczy od swego przodka tablicę deskryptorów.Umożliwienie współdzielenia znacznika bieżącej pozycji w pliku byłow istocie główną motywacją wprowadzenia trójstopniowoœci w odwoływaniusię do fizycznego pliku.Nietrudno jednak zauważyć, że nie jest możliwe współdzielenie znacznikapozycji w pliku przez wiele procesów jeœli nie są one spokrewnione - zadaniepolega na stworzeniu takiej możliwoœci.2.SzczegółyNależy uzupełnić funkcję open() w ten sposób,by otwierała plik w sposób, jak to nazwałem, symultaniczny tzn.tak,, żewszystkie korzystające symultanicznie z danego pliku procesy współdzieląten sam znacznik pozycji w pliku.Procesy otwierające ten sam plik w sposóbtradycyjny korzystają z własnych znaczników pozycji i fakt, że plik zostałotwarty symultanicznie przez inne procesy nie ma wpływu na ich działanie.Oczywiœście również w ramach tego samego procesu możliwe jest otwarciejednego pliku raz tradycyjnie, a raz symultanicznie.Również funkcja lseek() powinna zostać uzupełniona tak, byumozliwić 'przesuwanie' bądź 'prywatnego' znacznika pozycji w pliku, bądŸźznacznika 'symultanicznego' - wspólnego dla wszystkich procesów korzystającychz pliku symultanicznie.Przy czym samo wywołanie funkcji lseek()nie powinno się w żaden sposób zmienić - to funkcja ma rozstrzygnąć, czyplik jest symultaniczny, czy nie.Należy także odpowiednio uzupełnić inne funkcje systemowe, by wykorzystaniesymultanicznoœści było jak najpełniejsze.Bardzo ważną kwestią jest, przy rozwiązywaniu zadania, zachowanie bezpieczeństwawykonywanych działań, co w szczególnoœci oznacza traktowanie fragmentówkodu, w których jest możliwośœć jednoczesnych zapisów, jako sekcji krytycznychi odpowiednie do tej sytuacji obchodzenie się z nimi.Należy także przygotować serię testów pokazujšcych skutecznoœć dokonanychzmian w kodzie jądra.3.UwagiNie jest konieczne dodanie żadnych nowych funkcji systemowych ani nowychstruktur danych jądra - należy dokonać zmian (uzupełnień) w funkcjach istrukturach już istniejących.Należy pamiętać, że procesy 'nie wiedzące' o nowej możliwośœci otwarciapliku mają dokonanej w kodzie jądra zmiany nie zauważać i działać tak,jak przedtem.Nowy sposób wywołania powinien dotyczyć tylko funkcji open(),tzn.wywołanie innych, modyfikowanych i niemodyfikowanych, funkcji niepowinno ulec zmianie.Wywołanie funkcji dup() powinno duplikować deskryptor tak,że symultanicznośœć pliku lub jego 'niesymultanicznoœść' jest zachowana.Dotyczy to również dziedziczenia deskryptorów przez proces potomny - symultanicznośœćlub 'nie' musi być zachowana dla plików potomka.Można przyjąć, jeżeli takowe założenie okaże się niezbędne, że symultanicznoœśćpliku pociąga za sobą jego synchronicznośœć.Należy pamiętać o kontroli praw dostępu do otwieranego pliku - symultaniczneotwarcie pliku ma być możliwe wtedy i tylko wtedy gdy ten plik możnabyotworzyć tradycyjnie.Autor: Adam Kieżun [ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • aceton.keep.pl
  • 
    Wszelkie Prawa Zastrzeżone! Kawa była słaba i bez smaku. Nie miała treści, a jedynie formę. Design by SZABLONY.maniak.pl.