Extra informatie bij het vak OPSY

Oefenvragen

  1. Bij een server die meerdere clients ondersteunt kan men gebruik maken van meer processen of meer threads. Wat is het verschil? Geef van beide oplossingen een voor- en een nadeel.
  2. Wat is een critical section.
  3. Wat is het verschil tussen een semafoor en een mutex
  4. Beschrijf de verschillen in toegangsmogelijkheden tussen het NTFS filesysteem en het Unix filesysteem.
  5. Een eenvodig C-programma voert vier keer een systemcall fork() uit en onmiddelijk daarna een printf("hallo\n"). Hoe vaak verschijn bij uitvoering het woordje hallo op het scherm? Motiveer uw antwoord.
  6. Wat is het verschil tussen een message en een signal als interprocescommunicatie-mogelijkheid.

Overzicht leerstof OPSY

Computersystemen en embedded systemen

H13: 13.1 tot en met 13.13
H17: 17.1 tot en met 17.4

Operating systems

H3: 3.1 t/m 3.7
H4: 4.1 t/m 4.5
H5: 5.1, 5.3
H7: 7.1 t/m 7.6
H11: 11.1

Belangrijke begrippen:

Unix filesysteem

Inleiding

Het unix filesysteem is gebaseerd op zogenoemde inodes. Een inode is een table met informatie over een file of een directory. Een algemeen overzicht van de diskstructuur van de unixkloon minix Is te zien in dit plaatje. De plaatjes zijn afkomstig uit het boek Operating systems, design and implementation van Tanenbaum. We zien een bootblok. Hier staat de machinecode om het operating system in de lucht te brengen. Vervolgens een superblok met informatie over disk en filesysteem. Hier is onder meer te vinden waar de inodes staan en waar het datagedeelte begint. Daarna bitmaps die gebruikt worden om vrije inodes in het inode gedeelte en vrije zones in het datagedeelte aan te geven (elk bit in de bitmap is een inode of een zone). In het meest eenvoudige geval is een zone een diskblok. In de praktijk is een zone meestal 8 diskblokken groot (4KByte dus).

Structuur van een directory

Een unixdirectory is een verzameling van directory entries. Zo'n entry is heel simpel en bestaat uit een naam en daarbijhorend inodenummer. Kijk op dit plaatje om te zien hoe dat eruit ziet.

Structuur van een inode

Met de inode kunnen we de inhoud van een bestand of directory op de disk terugvinden. De inode bevat de informatie om de zonenummers van de betreffende zones (diskblokken) te vinden. We zullen eerst kijken hoe we met behulp van een inode de zonenummers kunnen vinden. Zie figuur Dit is in eerste instantie heel eenvoudig. De inode bevat gewoon zonenummers. In het geval van minix zijn dat de eerste zeven zones. Voor bestanden of directories die groter zijn kunnen we in eerste instantie een indirecto zone gebruiken dit is een zone met zonenummers. Op deze wijze kunnen we met zonenummers van 32 bits en zones van 4Kbyte weer 1014 extra zonesnummers behorend bij het bestand of de directory opslaan. Is de file nog groter dan is een dubbel inirecte zone mogelijk. Een zone met zonenummers die op hun beurt weer zonenummers bevatten. Opslaggrootte voor een bestand wordt dan weer met 1024 keer 1024 zones vergroot. Grotere unixen kennen ook nog een triple indirecte zone. Zie figuur .
Naast informatie waar alles staat op de disk geeft een inode ook informatie overde toegangsrechten tot een bestand of directory. Ook of het een file of directory betreft. Wie de eigenaar is (UID) en tot welke groep de file behoord (GID) Ook acces en modificatietijden worden in de inode bijgehouden evenals het aantal verwijzingen (links) naar de inode. In deze figuur is dat terug te vinden.
Leo van Moergestel
<leovm@chello.nl>
Aangemaakt 13 oktober 2004
Laatst bijgewerkt 17 oktober 2004