Top Banner
1 File System Implementation Operating Systems Hebrew University Spring 2007
52

1 File System Implementation Operating Systems Hebrew University Spring 2007.

Dec 20, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

1

File System Implementation

Operating Systems

Hebrew University

Spring 2007

Page 2: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

2

File

• Sequence of bytes, with no structure as far as the operating system is concerned. The only operations are to read and write bytes.

• Interpretation of the data is left to the application using it.

• File descriptor - file system internal structure that lets file system locate file on disk

Page 3: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

3

Permissions and Data Layout

• Owner: the user who owns this file.

• Permissions: who is allowed to access this file.

• Modification time: when this file was last modified.

• Size: how many bytes of data are there.

• Data location: where on the disk the file’s data is stored.

Page 4: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

4

Operations

• Open: gain access to a file.• Close: relinquish access to a file.• Read: read data from a file, usually from the current

position.• Write: write data to a file, usually at the current

position.• Append: add data at the end of a file.• Seek: move to a specific position in a file.• Rewind: return to the beginning of the file.• Set attributes: e.g. to change the access permissions.

Page 5: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

5

Storing and Accessing File Data

• Store data in a file involves:– Allocation of disk blocks to the file.– Read and write operations– Optimization - avoid disk access by caching data

in memory.

Page 6: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

6

Opening a File

• fd=open(“myfile",R), leads to the following sequence of actions:

1. The file system reads the current directory, and finds that “myfile” is represented internally by entry 13 in the list of files maintained on the disk.

2. Entry 13 from that data structure is read from the disk and copied into the kernel’s open files table. This includes various file attributes, such as the file’s owner and its access permissions, and a list of the file blocks.

3. The user’s access rights are checked against the file’s permissions to ascertain that reading (R) is allowed.

4. The user’s variable fd (for “file descriptor”) is made to point to the allocated entry in the open files table.

Page 7: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

7

Opening a File – Cont.

Page 8: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

8

Opening a File – Cont.

The file system reads the current directory, and finds that “myfile” is represented internally by entry 13 in the list of files maintained on the disk.

Entry 13 from that data structure is read from the disk and copied into the kernel’s open files table.

User’s access rights are checked and the user’s variable fd is made to point to the allocated entry in the open files table

Page 9: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

9

Opening a File – Cont.

• Why do we need the open file table?

• Time Locality principle.

• Saving disk’s calls.

• All the operations on the file is performed through the file descriptor.

Page 10: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

10

Reading from a File

• read(fd,buf,100), leads to the following sequence of actions:

1. The argument fd identifies the open file by pointing into the kernel’s open files table.

2. The system gains access to the list of blocks that contain the file’s data.

3. The file system therefore reads disk block number 5 into its buffer cache (Why? – Place Locality principle)..

4. The desired range of 100 bytes is copied into the user’s memory at the address indicated by buf.

Page 11: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

11

Reading from a File – Cont,

Page 12: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

12

Reading from a File – Cont.The argument fd identifies the open file by pointing into the kernel’s open files table.

the system gains access to the list of blocks that contain the file’s data.

The file system therefore reads disk block number 5 into its buffer cache.

the desired range of 100 bytes is copied into theuser’s memory at the address indicated by buf.

Page 13: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

13

Writing to a File

• We have two assumptions:1. We want to write 100 bytes, starting with

byte 2000 in the file. 2. Each disk block is 1024 bytes. • Therefore, the data we want to write spans

the end of the second block to the beginning of the third block.

• The full block must first be read into the buffer cache. Then the part being written is modified by overwriting it with the new data.

Page 14: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

14

Writing to a File – Cont.

We will write 48 bytes at the end of block number 8 and the rest of the data should go into the third block.

The third block must be allocated from the pool of free blocks.Let’s assume that block number 2 on the disk was free, and that this block was allocated.

Page 15: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

15

Writing to a file – Cont.

Q. Is there a need to read it from the disk before modifying it ?Since this is a new block, we can just allocate a block in the buffer cache, prescribe that it now represents block number 2, and copy the requested data to it (52 bytes). Finally, the modified blocks are written back to the disk.

Page 16: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

16

The Location in The File

• The read system call provides a buffer address for placing the data in the user’s memory, but does not indicate the offset in the file from which the data should be taken.

• The operating system maintains the current offset into the file, and updates it at the end of each operation.

• If random access is required, the process can set the file pointer to any desired value by using the seek system call.

Page 17: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

17

Mapping File Blocks

• How do we find the blocks that together constitute the file?

• How do we find the right one if we want to access the file at a particular offset?

Page 18: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

18

The Unix i-node• In Unix, files are represented internally by a structure

known as an inode, it includes an index of disk blocks.

• The index is arranged in a hierarchical manner:• Few (e.g. 10) direct pointers, which list the first

blocks of the file.• One single indirect pointer - points to a whole block

of additional direct pointers.• One double indirect pointer - points to a block of

indirect pointers.• One triple indirect pointer - points to a block of

double indirect pointers.

Page 19: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

19

i-node - Example

• Blocks are 1024 bytes.• Each pointer is 4 bytes.• The 10 direct pointers then provide access to a

maximum of 10 KB.• The indirect block contains 256 additional pointers,

for a total of 266 blocks (266 KB).• The double indirect block has 256 pointers to indirect

blocks, so it represents a total of 65536 blocks.• File sizes can grow to a bit over 64 MB.

Page 20: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

20

i-node Structure

Page 21: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

21

Super Block

• How the kernel assigns inodes and disk blocks?

• In order to make this assignment, the kernel hold a super block, this block contains: – The size of the file system– A list of free blocks available on the fs– A list of free inodes in the fs– Etc…

Page 22: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

22

i-node Assignment to a New File• The file system contain a list of inodes, when a process

needs a new inode, the kernel can search the inodes list for a free one.

• To improve performance, the super block contains the number of free inodes in the file system.

• If the super block list of free inodes is empty, the kernel searches the disk and places as many free inode numbers as possible into the super block.

• Freeing an inode - The kernel places the inode number in the super block free inodes list.

Page 23: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

23

Allocation of Disk Blocks

• When a process writes data to a file, the kernel must allocate disk blocks from the file system for direct or indirect block.

• Super block contains the number of free disk blocks in the file system.

• When the kernel wants to allocate a block from the file system, it allocates the next available block in the super block list.

Page 24: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

24

Direct Memory Access

• When a process needs a block from the disk, the cpu needs to copy the requested block from the disk to the main memory.

• The is a waste of cpu time.• If we could exempt the cpu from this job, it

will be available to run other ‘ready’ processes.

• This is the reason that the operating system contains the DMA.

Page 25: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

25

Direct Memory Access – Cont.

• Sequence of actions:1. Os generates the DMA and pass it the needed parameters

(address on disk, address on main memory, amount of data to copy)

2. The running process is transferred to the blocked queue and a new process from the ready queue is selected to run.

3. The DMA transfers the requested data from the disk to the main memory.

4. The DMA sends an interrupt to the cpu, indicating the IO operation has been finished.

5. The waiting process is transferred to the ready queue.

Page 26: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

26

Sharing a File

• Assume there is a log file that needs to be written by more than one process.

• If each process has its own file pointer, there is a danger that one process will overwrite log entries of another process.

• If the file pointer is shared, each new log entry will indeed be added to the end of the file.

• Unix uses a set of three tables to control access to files.

Page 27: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

27

Sharing a File - Cont.

• The inode table - each file may appear at most once in this table.

• The open files table – an entry in this table is allocated every time a file is opened. Each entry contains a pointer to the inode table and a position within the file. There could be multiple open file entries pointing to the same inode.

• The file descriptor table – separate for each process. Each entry point to an entry in the open files table. The index of this slot is the fd that returned by open.

Page 28: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

28

Sharing a File - Cont.

Page 29: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

29

I/O Management and Disk Scheduling

Page 30: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

30

Disk Structure• Disk drives are addressed as large 1-dimensional

arrays of logical blocks, where the logical block is the smallest unit of transfer.

• The 1-dimensional array of logical blocks is mapped into the sectors of the disk sequentially.– Sector 0 is the first sector of the first track on the outermost

cylinder.

– Mapping proceeds in order through that track, then the rest of the tracks in that cylinder, and then through the rest of the cylinders from outermost to innermost.

Page 31: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

31

Moving-Head Disk Mechanism

Page 32: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

32

Disk Scheduling• The operating system is responsible for using hardware

efficiently - having a fast access time and disk bandwidth.

• Access time has two major components– Seek time is the time for the disk to move the heads to the

cylinder containing the desired sector.

– Rotational latency is the additional time waiting for the disk to rotate the desired sector to the disk head.

• Minimize seek time• Seek time seek distance• Disk bandwidth is the total number of bytes transferred,

divided by the total time between the first request for service and the completion of the last transfer.

Page 33: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

33

Disk Scheduling - Cont.• Whenever a process needs I/O from the disk, it issues

a system call to the OS with the following information.– Whether the operation is input or output

– What the disk address for the transfer is

– What the memory address for the transfer is

– What the number of bytes to be transferred is.

• Several algorithms exist to schedule the servicing of disk I/O requests.

• We illustrate them with a request queue (0-199).98, 183, 37, 122, 14, 124, 65, 67

Head pointer 53

Page 34: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

34

FCFS• FCFS

• Advantage: fair

• Disadvantage: slow

• Illustration shows total head movement of 640 cylinders.

Page 35: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

35

Shortest-Seek-Time-First (SSTF)

• Selects the request with the minimum seek time from the current head position.

• SSTF scheduling is a form of SJF scheduling

• May cause starvation of some requests.

• Illustration shows total head movement of 236 cylinders.

Page 36: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

36

SSTF - Cont.Total head movement=236 cylinders

Page 37: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

37

SCAN or Elevator Algorithm

• The disk arm starts at one end of the disk, and moves toward the other end, servicing requests until it gets to the other end of the disk, where the head movement is reversed and servicing continues.

• Sometimes called the elevator algorithm.– This algorithm does not give uniform wait time.

• Illustration shows total head movement of 236 cylinders.

Page 38: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

38

SCAN - Cont.Total head movement=236 cylinders (or 208 if the head doesn’t reach the edges)

Page 39: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

39

C-SCAN

• Provides a more uniform wait time than SCAN.

• The head moves from one end of the disk to the other. servicing requests as it goes. When it reaches the other end, however, it immediately returns to the beginning of the disk, without servicing any requests on the return trip.

• Treats the cylinders as a circular list that wraps around from the last cylinder to the first one.

Page 40: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

40

C-SCAN - Cont.

Page 41: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

41

C-LOOK

• Version of C-SCAN

• Arm only goes as far as the last request in each direction, then reverses direction immediately, without first going all the way to the end of the disk.

Page 42: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

42

C-LOOK - Cont.

Page 43: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

43

Selecting a Disk-Scheduling Algorithm

• SSTF is common and has a natural advantage over FCFS

• SCAN and C-SCAN perform better for systems that place a heavy load on the disk (little chance to starvation).

• Performance depends on the number and types of requests.

• Requests for disk service can be influenced by the file-allocation method.

• Either SSTF or LOOK is a reasonable choice for the default algorithm.

Page 44: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

44

Layout on Disk• The conventional Unix file system is composed of 3

parts: the superblock, inodes, and data blocks. • The conventional layout: the superblock is the first

block on the disk. Next come all the inodes. All the rest are data blocks.

• The problem with this layout: much seeking. • Consider the example of opening a file named "/a/b/c“:

– access the root inode, to find the blocks used to implement it. – reads these blocks to find which inode has been allocated to

directory a. – read the inode for a to get to its blocks– read the blocks to find b, end so on.

• If all the inodes are concentrated at one end of the disk, while the blocks are dispersed throughout the disk, this means repeated seeking back and forth.

Page 45: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

45

Cylinder Group• Cylinder group - a set of adjacent cylinders. A file system

consists of a set of cylinder groups. • Each cylinder group has a redundant copy of the super block,

space for inodes and a bit map describing available blocks in the cylinder group.

• Basic idea: put related information together in the same cylinder group and unrelated information apart in different cylinder groups.

• Use a bunch of heuristics. – Try to put all inodes for a given directory in the same cylinder group. – Try to put blocks for one file adjacent in the cylinder group. – For long files redirect blocks to a new cylinder group every megabyte.

• Increased block size. The minimum block size is now 4096 bytes. Helps read bandwidth and write bandwidth for big files.

Page 46: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

46

Layout on Disk – Cont.

• A possible solution is to try and put inodes and related blocks next to each other, rather than concentrating all the inodes in one place.

• This was done in the Unix file system.

Page 47: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

47

Indirect Blocks• For large files, most of the file data is in indirect

blocks. The file system therefore switches to a new cylinders group whenever a new indirect block is allocated.

• Assuming 12 direct blocks of size 8 KB each, the first indirect block is allocated when the file size reaches 96 KB.

• Having to perform a seek at this relatively small size leads to a substantial reduction in the achievable bandwidth.

• The solution to this is to make the first indirect block a special case, that stays in the same cylinders group as the inode.

Page 48: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

48

Block Fragment

• Each disk block can be chopped up into 2, 4, or 8 fragments.

• Each file contains at most one fragment which holds the last part of data in the file.

• If have 8 small files they together only occupy one disk block.

• Can allocate larger fragments if the end of the file is larger than one eighth of the disk block.

• When increase the size of the file, may need to copy out the last fragment if the size gets too big.

Page 49: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

49

RAID Structure• Problem with disk

– Data transfer rate is limited by serial access.

– Reliability

• Solution to both problems: Redundant arrays of inexpensive disks (RAID)

• In the past, RAID (combination of cheap disks) was alternative for large and expensive disks.

• Today: RAID is used for their higher reliability and higher data-transfer rate.

• So the ‘I’ in RAID stands for “independent” instead of ‘inexpensive”.

– So RAID stands for Redundant Arrays of Independent Disks.

Page 50: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

50

RAID Approaches

• RAID 1: mirroring —there are two copies of each block on distinct disks.

• This allows for fast reading (you can access the less loaded copy), but wastes disk space and delays writing.

Page 51: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

51

RAID Approaches - Cont

• RAID 3: parity disk — data blocks are distributed among the disks in round-robin manner.

• For each set of blocks, a parity block is computed and stored on a separate disk.

• If one of the original data blocks is lost due to a disk failure, its data can be reconstructed from the other blocks and the parity.

Page 52: 1 File System Implementation Operating Systems Hebrew University Spring 2007.

52

RAID Approaches - Cont

• RAID 5: distributed parity — in RAID 3, the parity disk participates in every write operation (because this involves updating some block and the parity), and becomes a bottleneck.

• The solution is to store the parity blocks on different disks.