Best7-1 Les 7: Bestandssystemen "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible,

Slides:



Advertisements
Verwante presentaties
PROS2 Les 13 Programmeren en Software Engineering 2.
Advertisements

SSD gebruik in “WMC“ Nico Oosterwijk.
Workshop harde schijf indelen
Gebruikers, groepen en permissies – theorie
BESTURINGS SYSTEMEN Vincent Naessens.
1 Device driver. 2 Hardware Operating Systeem Prog1Prog2 System calls/ API Device drivers Gebruiker afschermen van de hardware.
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
Het ontwerpen van een klasse
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 5: Bestanden.
1 SOCS Hoofdstuk 1 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
Hoofdstuk 2 Hallo, C# !.
Geheugenbeheer ICT Infrastructuren hoofdstukken 7 en 8.1.
Opleiding ICT © J.W. Jonker Dia 1/16 Systemen Besturingssoftware Windows XP Mark van Heck.
Numerieke Natuurkunde
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
Linux Workshop 2 Installatie en partities. Linux in VMware  VMware Workstation  Versie >= (voor volledige ondersteuning Ubuntu 10.10, en ook Windows.
Backup & Recovery Windows 2003 Server Onderhoud en Beheer Netwerken 4.
Algoritmiek Object-georiënteerd Programmeren
Algoritmiek Dataweergave en bewerking Hoorcollege 2 - Ma. 11 sept L.M. Bosveld-de Smet.
P. 1 Deel I: Programmeertaal C 4. Functies en Macro’s Prof.Dr.Ir. Filip De Turck.
Inleiding Informatica
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Deel XXI 1 Internetapplicaties Internetprogrammeren Capita Selecta.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 15: Herhaling Java-programmatie en geautomatiseerd testen.
Schijvenbeheer Disk Management t/m
Tircms02-p les 7 systemcalls linux vervolg. Inleiding Onder /usr/include/linux staan bestanden die de linuxkernel o.a. gebruikt om drivers aan te spreken.
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
Tircms02-p les 4 Preprocessor In- en uitvoer Diversen.
Datacommunicatie en netwerken
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Deltion College Engels C1 Spreken [Edu/002] thema: A book that deserves to be read can-do : kan duidelijke, gedetailleerde samenvatting geven van een gelezen.
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
tircms02-p les 1 Operating Systems practicum
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
Quota’s in Linux Werner Maes 3 april Quota’s: doel Methode om schijfgebruik te controleren: Per gebruiker Per groep En om schijfgebruik te limiteren:
JAVA: een platformonafhankelijke taal
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets.
Deltion College Engels B1 Luisteren [Edu/002] thema: A cyber listening lab can-do : kan eenvoudige, duidelijke informatie begrijpen © Anne Beeker / Randall.
Les 5: Geheugenbeheer “If we wish to count lines of code, we should not regard them as ‘lines produced’ but as ‘lines spent.’” – Edsger Dijkstra.
Programma zonder window commandline interface. Commandline programma public static void main (String [ ] params) { System. out. println (“Hoi allemaal!”);
INFITT01 - Internettechnologie WEEK 3. Programma Sessies JSP.
WAT IS ER NIET BEHANDELD IN Van BIOS naar UEFI, een zegening of een vloek. WAT IS ER NIET BESPROKEN IN Hoe ziet er een harde schijf uit, de indeling. EN.
1 februari Web concepts formulieren. 2 File i/o (input) $filename = “FILE_IO.CSV” ;// naam van het bestand $filesize = filesize( $filename )
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
Bestanden Lezen Schrijven Afbeeldingen. Bestandstypen.txt.png eigen.
Informatie beoordelen If else Switch En Wiskunde.
H01: Informatie Digitaal Toetsweek1 : VT41, 50 min.
BitMappers Computerclub 2010 Johan Jacobs.  Voor het uitlezen van een hard disk wordt een stappenmotor gebruikt  Lees- en schrijfkoppen bewegen zich.
Module code: 11. I/O-beheer en schijfscheduling 12. Bestandsbeheer 1 Operating Systems.
Soorten Backups Partities Windows eigen tools & Google cloud Vragen?
Computersystemen 2 (TIRCCMS02 - Operating systems)
Computersystemen 2 (TIRCCMS02 - Operating systems)
Gameprogrammeren: Lists en interfaces
Hoofdstuk 9.2 Strings.
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Tinpro015b-les5 Invoer en Uitvoer.
Arjan Egges & Paul Bergervoet
Tinpro015b-les4 Klassen.
Voorbeeld: Simulatie van bewegende deeltjes
Arjan Egges Paul Bergervoet Wouter van Toll
Survivor Steven, Jurgen, Raphael, Samuel, Willem
Welkom woensdag 14 november 2018woensdag 14 november 2018
Les 7: Bestandssystemen
SQL Les 7 24 February 2019.
Transcript van de presentatie:

best7-1 Les 7: Bestandssystemen "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." Brian Kernighan

best7-2 Organisatie bestandssysteem IO-controle fysiek bestandssysteem bestandsorganisatie Logisch bestandssysteem Bestandsnamen Logische bloknummers Fysieke bloknummers Bestandssysteem: logisch Bestandssysteem: fysiek

best7-3 Overzicht Logisch bestandssysteem –Gegevensbestanden –directory's –Bestandssystemen Bestandsorganisatie –directory's –Gegevensbestanden –Vrije ruimte –Partities –Reservekopieën Optimalisaties

best7-4 Gegevensbestanden 8 0 N Attributen Operaties Types Toegangsmethoden Bestand = benoemde verzameling bij elkaar horende gegevens = eenheid van opslag. Gegevensbestand

best7-5 Attributen publieke naam systeemnaam versie plaats (data) de grootte eigenaar creatie-ogenblik creatie-programma protectie-informatie reservekopie-informatie ogenblik van laatste gebruik type (op sommige systemen) toegangsmethode Opgeslagen in een directorybestand Gegevensbestand: attributen

best7-6 Naamgeving String van letters,cijfers en leestekens, –Beperkt in lengte –Soms onderscheid kleine/hoofdletters (Unix, NTFS ), soms niet (Windows, FAT) –NTFS gebruikt unicode: βαДиהت 탁탢齩 Meestal ook bestandsextentie –8.3 notatie: abcdefgh.ijk –Via extensies worden applicaties geassocieerd

best7-7 Operaties op bestanden Win32UnixOmschrijving CreateFilecreatCreëer een bestand OpenFileopenOpen een bestand CreateProcessexecStart een proces Gegevensbestand: operaties

best7-8 Bestanden vs. open bestanden bestand open bestand #include int main() { char buffer[100]; int handle; handle = open (“test.txt”, O_RDWR | O_CREAT | O_TRUNC); write (handle, “ ”, 10); fsync (handle); lseek (handle, 0, SEEK_SET); read (handle, buffer, 10); buffer[10] = '\0'; printf ("String read = %s.\n", buffer); close (handle); return 0; }

best7-9 Operaties op open gegevensbestanden Win32UnixOmschrijving CloseHandlecloseSluit een bestand ReadFilereadLees data uit bestand WriteFilewriteSchrijf data naar bestand SetFilePointerlseekStel de lees/schrijfwijzer in SetEndOfFiletruncateStel de lengte van het bestand in

best7-10 Voorbeeldprogramma Unix Details: man 2

best7-11 Voorbeeldprogramma Windows if (!copyfile(argv[1], argv[2], false)) exit(3);

best7-12 Delen van open bestanden open bestand 1 open bestand 2 open bestand proces 1 proces 2 Bestand (1) Bestand (2) globale bestandentabel schijf lokale bestandentabel

best7-13 Bestandstypes directory's Speciale bestanden (Unix, zie I/O) Links, shortcuts Gegevensbestanden –ASCII: leesbaar –Binair: betekenis enkel zinvol voor programma dat indeling kent –Uitvoerbaar –Magic number s om type te bepalen Speciaal geval: uitvoerbaar bestand, OS kent indeling

best7-14 Toegangsmethoden Sequentiële toegang Directe toegang Geïndexeerde toegang Tegenwoordig: Directe toegang op byte-niveau

best7-15 Sequentiële toegang Toegangstijd naar een bepaalde record hangt af van de plaats van de record in het bestand. huidige positie reset read/write 3 operaties: - reset - read next - write next Toegangsmethode: sequentieel

best7-16 Directe toegang Toegangstijd naar een bepaalde record hangt niet af van de plaats van de record in het bestand. 2 operaties: - read n - write n 3 operaties: - seek n - read next - write next read/write seek n of Toegangsmethode: direct

best7-17 Geïndexeerde toegang Toegangsmethode: geïndexeerd

Directe toegang in Java best7-18 import java.io.File; import java.io.RandomAccessFile; import java.io.IOException; public class DemoRandomAccessFile { public static void main(String[] args) { try { RandomAccessFile raf = new RandomAccessFile(“test.txt”, "rw"); byte ch = raf.readByte(); System.out.println("Read first character of file: " + (char)ch); System.out.println("Read full line: " + raf.readLine()); raf.seek(raf.getFilePointer() - 10); raf.writeBytes(“???”); raf.seek(0); System.out.println("Read full line: " + raf.readLine()); raf.seek(file.length()); raf.writeBytes("This will complete the Demo"); raf.close(); } catch (IOException e) { System.out.println("IOException:"); e.printStackTrace(); } } }

best7-19 Overzicht Logische bestandssysteem –Gegevensbestanden –directory's –Bestandssystemen Bestandsorganisatie –directory's –Gegevensbestanden –Vrije ruimte –Partities –reservekopieën Optimalisaties

best7-20 directory's Directory Gegevensbestanden Operaties Types

best7-21 Operaties op directory's Win32UnixOmschrijving CreateDirectorymkdirMaak een nieuwe directory RemoveDirectoryrmdirLaat een directory weg FindFirstFileopendirOpen een directory FindNextFilereaddirLees een directory-element FindCloseclosedirSluit een directory MoveFilerenameHernoem een bestand SetCurrentDirectorychdirVerander van huidige directory DeleteFileunlinkLaat een bestand weg GetFileAttributesfstatLees een bestandsattribuut

best7-22 Directorytypes 1 niveau 2 niveaus Boomstructuur Acyclische graaf Graaf

best7-23 Eenniveaudirectory testdatamaildoc directory bestanden

best7-24 Tweeniveaudirectory testdatamaildoc User file directory (UFD) bestanden mailmarksmailrep usr1usr2usr3 Master file directory (MFD)

best7-25 Boomgestructureerde directory statmaildistfindcounthexdatamail spellbinprogs root progcopyprtexporderlistfind listobjspellalllastfirst

best7-26 Acyclische graafdirectory's listallwcount words dictspell list root listradew7 Symbolische link

best7-27 Links in Unix % ln -s ttt symlink % ls -al drwx--x--x 2 els users 1024 Dec 3 08:48. drwx--x--x 3 els users 1024 Dec 3 08:47.. lrwx--x--x 1 els users 3 Dec 3 08:48 symlink -> ttt -rw tom users 23 Dec 3 08:48 ttt % cat symlink dit is een testbestand % ln ttt hardlink % ls -al drwx--x--x 2 els users 1024 Dec 3 08:49. drwx--x--x 3 els users 1024 Dec 3 08:47.. -rw tom users 23 Dec 3 08:48 hardlink lrwx--x--x 1 els users 3 Dec 3 08:48 symlink -> ttt -rw tom users 23 Dec 3 08:48 ttt % rm ttt % ls -al drwx--x--x 2 els users 1024 Dec 3 08:49. drwx--x--x 3 els users 1024 Dec 3 08:47.. -rw tom users 23 Dec 3 08:48 hardlink lrwx--x--x 1 els users 3 Dec 3 08:48 symlink -> ttt % cat symlink cat: cannot open symlink: No such file or directory % cat hardlink dit is een testbestand

best7-28 Graafdirectory..mailcountbook avitc unhex root countunhex jim hyp hex % ls -al drwx--x--x 2 kdb digit 1024 Dec 3 08:49. drwx--x--x 3 kdb digit 1024 Dec 3 08:47..

best7-29 Overzicht Logische bestandssysteem –Gegevensbestanden –directory's –Bestandssystemen Bestandsorganisatie –directory's –Gegevensbestanden –Vrije ruime –Partities –Reservekopieën Optimalisaties

best7-30 Monteren van bestandssystemen schijf = subdirectory C:D:E: Monteren(bs) ~ openen(bestand)

best7-31 NFS : Network File System

best7-32 Virtueel bestandssysteem gebruiker kern VFS

best7-33 NFS Architectuur

best7-34 Overzicht Logische bestandssysteem –Gegevensbestanden –directory's –Bestandssystemen Bestandsorganisatie –directory's –Gegevensbestanden –Vrije ruimte –Partities –Reservekopieën Optimalisaties

best7-35 Organisatie van directory's naam1attrib naam2attrib naam3attrib naam4attrib naam5attrib naam6attrib naam1attrib naam2attrib naam3attrib naam4attrib naam5attrib naam6 Directory: f(naam) → adres_van_attributen Lineaire lijst of via hakselfunctie, of b-tree

best7-36 Organisatie van gegevensbestanden Contigue allocatie Gelinkte allocatie Geïndexeerde allocatie

best7-37 Histogram Windows (2010) log2(bestandsgrootte) DataProgramma’s aantal kleinste00 grootste

Cumulatieve distributie best7-38 > 50% bestanden < 8KiB >75 % bestanden < 64 KiB >90% bestanden < 1 MiB

best7-39 Contigue allocatie blokken test.c 3 2 a.out 7 3 test.out 0 1 directory begin lengte blok met byte n = beginblok + n div blokgrootte b.v. CD-ROM (iso9660) Bestandsorganisatie: contigu

best7-40 Gelinkte allocatie blokken test.c 3 2 a.out 7 4 test.out 0 0 directory begin einde blok met byte n = ( n div (blokgrootte-4)) de blok Bestandsorganisatie: gelinkt

best7-41 Allocatietabel blokken test.c 3 a.out 7 test.out 0 directory blok met byte n = ( n div blokgrootte) de gelinkte blok Bestandsorganisatie: fat

best7-42 Indextabel blokken test.c 5 a.out 6 test.out 8 directory blok met byte n = indexblok[n div blokgrootte] Bestandsorganisatie: geïndexeerd

best7-43 Unix: inodes blokken inode Info 12 directe wijzers … … … … Bestandsorganisatie: inode

best7-44 Unix Inode OffsetSizeNameDescription 0x0__le16i_mode 0x2__le16i_uidLower 16-bits of Owner UID. 0x4__le32i_size_loLower 32-bits of size in bytes. 0x8__le32i_atimeLast access time, in seconds since the epoch. 0xC__le32i_ctimeLast inode change time, in seconds since the epoch. 0x10__le32i_mtimeLast data modification time, in seconds since the epoch. 0x14__le32i_dtimeDeletion Time, in seconds since the epoch. 0x18__le16i_gidLower 16-bits of GID. 0x1A__le16i_links_countHard link count. 0x1C__le32i_blocks_lo 0x20__le32i_flags 0x244 bytesUnion osd1: 0x2860 bytesi_block[15] ( )Block map or extent tree. See the section "The Contents of inode.i_block". 0x64__le32i_generationFile version (for NFS). 0x68__le32i_file_acl_loLower 32-bits of extended attribute block. 0x6C__le32i_size_high / i_dir_aclUpper 32-bits of file size. 0x70__le32i_obso_faddr(Obsolete) fragment address. 0x7412 bytesUnion osd2: 0x80__le16i_extra_isizeSize of this inode x82__le16i_checksum_hiUpper 16-bits of the inode checksum. 0x84__le32i_ctime_extraExtra change time bits. This provides sub-second precision. 0x88__le32i_mtime_extraExtra modification time bits. This provides sub-second precision. 0x8C__le32i_atime_extraExtra access time bits. This provides sub-second precision. 0x90__le32i_crtimeFile creation time, in seconds since the epoch. 0x94__le32i_crtime_extraExtra file creation time bits. This provides sub-second precision. 0x98__le32i_version_hiUpper 32-bits for version number.

best7-45 inodes proces 1 proces 2 Globale bestanden- tabel directory inodes schijf kern

best7-46 ijle bestanden main() { int h = open("test.dat", O_CREAT|O_WRONLY, 0777); lseek(h, , SEEK_SET); write(h, "Hallo", 5); close(h); } % ls -al test.dat -rwx--x--x 1 kdb users Nov 15 20:13 test.dat % du –b test.dat 8192 test.dat Bestand: ijl

best7-47 MFT-record Bestand van 9 blokken in 3 runs MFT record

best7-48 MFT-records

Directory best7-49

Compressie best7-50

best7-51 NTFS Streams c:\>echo Hallo > test.txt c:\>dir 15/11/ :46 8 test.txt c:\>more test.txt Hallo c:\>echo Nevenboodschap >test.txt:boodschap c:\>dir 15/11/ :46 8 test.txt C:\>more test.txt Hallo C:\>more test.txt:boodschap Nevenboodschap NTFS: streams

best7-52 Quota

best7-53 Defragmentatie & Compactering schijf

best7-54 Overzicht Logische bestandssysteem –Gegevensbestanden –directory's –Bestandssystemen Bestandsorganisatie –directory's –Gegevensbestanden –Vrije ruimte –Partities –Reservekopieën Optimalisaties

best7-55 Beheer van vrije ruimte: bitmap Soms is het beheer gratis: b.v. FAT blokken In gebruik Bestandssysteem: vrije ruimte

best7-56 Beheer van vrije ruimte: links blokken vrij

best7-57 Beheer van vrije ruimte: wijzerblok blokken vrij

best7-58 Consistentie controleren vrij bezet vrij bezet

best7-59 Loggestructureerde bestandssystemen logbestand transacties Bestandssysteem: loggestructureerd

best7-60 Overzicht Logische bestandssysteem –Gegevensbestanden –directory's –Bestandssystemen Bestandsorganisatie –directory's –Gegevensbestanden –Vrije ruimte –Partities –Reservekopieën Optimalisaties

best7-61 Partities of volumes Partitie A Partitie B Partitie C Partitie D schijf 1 schijf 2 schijf 3 schijf 4 partitie = logische schijf BB MBR

best7-62 Indeling partitie (cooked) BCBPCBFCBrootdata Boot block Super block+free space mgmt i-nodes Root directory Partition boot sector (8 KiB) + BIOS Parameter Block (BPB) Master File Table Unix File System ( UFS ) NTFS

best7-63 Overzicht Logische bestandssysteem –Gegevensbestanden –directory's –Bestandssystemen Bestandsorganisatie –directory's –Gegevensbestanden –Vrije ruimte –Partities –Reservekopieën Optimalisaties

best7-64 Reservekopie ( back-up ) Fysieke reservekopie Logische reservekopie Bescherming tegen Hardwareproblemen Ongelukjes

best7-65 Fysieke reservekopie Schijfblokken 0..N reservekopie: fysiek

best7-66 Logische reservekopie Schijfblokken 0..N Bestand per bestand reservekopie: logisch

best7-67 Logische incrementele reservekopieën reservekopie: incrementeel

best7-68 Overzicht Logische bestandssysteem Bestandsorganisatie Optimalisaties –Vergrendelen bestanden –Variabele blokgrootte –Beperkte dynamische informatie –RAM-disk –Virtuele schijf –Disk caches –Free-behind - Read-ahead –Compressie

Vergrendelen bestanden best7-69 import java.io.*; import java.nio.channels.*; public class LockingExample { public static void main(String arsg[]) throws IOException { RandomAccessFile raf = new RandomAccessFile("file.txt", "rw"); // get the channel for the file FileChannel ch = raf.getChannel(); // this locks the first half of the file - exclusive FileLock exclusiveLock = ch.lock(0, raf.length()/2, false); /** Now modify the data... */ exclusiveLock.release(); // this locks the second half of the file - shared FileLock sharedLock = ch.lock(raf.length()/2+1, raf.length(), true); /** Now read the data... */ sharedLock.release(); } catch (java.io.IOException ioe) { } finally { } } Mandatory locks: hard afgedwongen Advisory locks: kunnen genegeerd worden Bestand: lock

best7-70 Blokgrootte Unix GB

best7-71 Variabele blokgrootte Kleine blokken voor kleine bestanden Grote blokken voor grote bestanden

best7-72 Beperkte dynamische informatie Voornamelijk toegangstijdstippen

best7-73 RAM-disk / tempfs Partitie A Partitie B schijf BB MBR Fysiek geheugen

Virtuele schijf best7-74 Partitie A BB MBR bestand Virtuele schijf BB MBR

best7-75 Disk caches Spoorbuffer hoofdgeheugen CVE Disk cache

best7-76 Free-behind Bij sequentieel lezen is het beter om een gelezen blok vrij te geven bij het inlezen van het volgende blok. Read-ahead Bij sequentieel lezen een aantal extra sequentiële blokken inlezen.

best7-77 Schijfcompressie Verhoogt de capaciteit van de schijf Verhoogt de effectieve bandbreedte naar de schijf

best7-78