Spring 2003 ECE569 Lecture ECE 569 Database System Engineering Spring 2003 Yanyong Zhang Course URL
Spring 2003 ECE569 Lecture Warm-up Discussion How do we access files? I-node, buddy system
Spring 2003 ECE569 Lecture Questions to answer in this class? If a query tries to access tuple T, how can the system locate where T is?
Spring 2003 ECE569 Lecture Media and File Management Abstraction l Array of fixed length blocks l Size varies dynamically, space permitting Notation l Blocks – File system objects l Pages – Units of virtual address space l Slots – Units of storage on disk l All of these items are identical in size and there is a direct mapping from one to the other. l We will generally use them interchangeably.
Spring 2003 ECE569 Lecture Data structure for Block # defineEIGHTK 8192 typedefunsigned int FILENO; typedefunsigned int BLOCKID; typedefstruct { intflip; FILENO fileno; BLOCKIDblockno; } BLOCKHEAD; typedef struct { BLOCKHEADheader; char contents[EIGHTK-sizeof(header)-2]; int flop; } BLOCK, *BLOCKP;
Spring 2003 ECE569 Lecture File System API STATUS create(filename, allocparmp) -- create and allocate a new file STATUS delete(filename) -- delete a file and deallocate space for it STATUS open(filename,ACCESSMODE,FILEID) -- Open file in desired mode and return file handle STATUS close(FILEID) -- Close an open file STATUS extend(FILEID,allocparamp) -- extend existing file by specified amount STATUS read(FILEID,BLOCKID,BLOCKP) -- read contents of specified block into a buffer STATUS readc(FILEID,BLOCKID,blockcount,BLOCKP) -- read a certain number of block into consecutive buffers in memory. STATUS write(FILEID,BLOCKID,BLOCKP) -- write a buffer to the specified block on disk. STATUS writec(FILEID,BLOCKID,blockcount,BLOCKP) -- write a number of blocks from consecutive pages to disk.
Spring 2003 ECE569 Lecture Issues in Managing Disk Space Initial allocation: When a file is created, how many contiguous slots should be allocated to it? Incremental expansion: If an existing file grows beyond the number of slots currently allocated, how many additional contiguous blocks should be assigned to that file? Reorganization: When and how should the free space on the disk be reorganized?
Spring 2003 ECE569 Lecture Free Space Management +Bit Map - One bit represents each block - Easy to find contiguous free spaces for allocation +Free List - Link free blocks together into a free list - Can use all techniques for memory free-list management, first-fit, best-fit, etc.
Spring 2003 ECE569 Lecture Extent-based Allocation Provides many of the advantages of contiguous allocation without many of the problems The Idea l Allocate an initial chunk that is probably big enough l If file runs out of space, allocate another chunk l Successive allocations increase in size Characteristics l Good clustering allows efficient sequential I/O l More complex address translation than contiguous allocation
Spring 2003 ECE569 Lecture Extent-based Allocation Why do we need extent directory?
Spring 2003 ECE569 Lecture Mapping Relations to Disks
Spring 2003 ECE569 Lecture Buffer Management
Spring 2003 ECE569 Lecture Logic of Buffer Manager +Search in buffer: Check if the requested page is in the buffer. If found, return the address F of this frame to the caller. +Find free frame: If the page is not in the buffer, find a frame that holds no valid page. +Determine replacement victim: If no such frame exists, determine a page that can be removed from the buffer (in order to reuse its frame). +Write modified page: If replacement page has been changed, write it. +Establish frame address: Denote the start address of the frame as F. +Determine block address: Translate the requested PAGEID P into a FILEID and a block number. Read the block into the frame selected. +Return: Return the frame address F to the caller.
Spring 2003 ECE569 Lecture Lost Update Anomoly This implies that the buffer should be shared by multiple processes.
Spring 2003 ECE569 Lecture The Need for Synchronization
Spring 2003 ECE569 Lecture The Fix / Use / Unfix Protocol +FIX: The client requests access to a page using the bufferfix interface. +USE: The client uses the page and the pointer to the frame containing the page will remain valid. +UNFIX: The client explicitly waives further usage of the frame pointer; that is, it tells the buffer manager that it no longer wants to use that page.
Spring 2003 ECE569 Lecture The Fix / Use / Unfix Protocol
Spring 2003 ECE569 Lecture Buffer Control Blocks typedef struct { PAGEIDpageid;/* id of page in file*/ PAGEPTRpageaddr;/* base addr. in buffer*/ Intindex;/* record within page */ Semaphore*pagesem;/* pointer to the sem. */ Booleanmodified;/* caller modif. page*/ Booleaninvalid;/* destroyed page*/ } BUFFER_ACC_CB, *BUFFER_ACC_CBP;
Spring 2003 ECE569 Lecture Buffer Structure
Spring 2003 ECE569 Lecture Buffer Control Policies +Steal policy: When the buffer manager needs space, it can decide to replace dirty pages. +No-Steal policy: Pages can be replaced only if they are clean. +Force policy: At end of transaction, all modified pages are forced to disk in a series of synchronous write operations. +No-Force policy: No modified page is forced during commit. REDO log records are written to the log.