CSE 331. Computer Organization
Download
Report
Transcript CSE 331. Computer Organization
ECE 569
Database System Engineering
Fall 2004
Yanyong Zhang www.ece.rutgers.edu/~yyzhang
Course URL www.ece.rutgers.edu/~yyzhang/fall04
ECE569 Lecture 03-1.1
Fall 2004
Warm-up Discussion
Address space, virtual memory
Memory magement
How does file system interact with virtual memory?
What happens when the user makes a “read” call?
ECE569 Lecture 03-1.2
Fall 2004
Questions to answer in this class?
If a query tries to access tuple T, how can the
system locate where T is?
ECE569 Lecture 03-1.3
Fall 2004
Media and File Management
Abstraction
Array of fixed length blocks
Size varies dynamically, space permitting
Notation
Blocks – File system objects
Pages – Units of virtual address space
Slots – Units of storage on disk
All of these items are identical in size and there is a direct
mapping from one to the other.
We will generally use them interchangeably.
ECE569 Lecture 03-1.4
Fall 2004
Data structure for Block
#define
typedef
typedef
typedef
EIGHTK 8192
unsigned int FILENO;
unsigned int BLOCKID;
struct {int
flip;
FILENO
fileno;
BLOCKID
blockno;
} BLOCKHEAD;
typedef struct {BLOCKHEAD header;
char
contents[EIGHTK-sizeof(header)-2];
int
flop;
} BLOCK, *BLOCKP;
ECE569 Lecture 03-1.5
Fall 2004
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.
ECE569 Lecture 03-1.6
Fall 2004
Mapping Blocks onto Slots
Disk allocation schemes determine the mapping
between blocks onto slots
Issues in disk space allocation:
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?
ECE569 Lecture 03-1.7
Fall 2004
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.
+ fault-tolerance
- extra slots
ECE569 Lecture 03-1.8
Fall 2004
Static and Contiguous Allocation
At file creation time, the total number of blocks a
file needs is allocated at one time in contiguous
slots.
Address translation is easy
sb = the slot holding block 0;
sb+k = the slot holding block k
Advantage: Supports both block-direct access and
sequential access
Disadvantages: Files cannot grow, cannot shrink
Discussion: database systems by third-party
vendor prefer such file organizations
ECE569 Lecture 03-1.9
Fall 2004
Extent-based Allocation
Provides many of the advantages of contiguous
allocation without many of the problems
The Idea
Allocate an initial chunk that is probably big enough
(primary allocation)
If file runs out of space, allocate another chunk
(secondary allocations)
Successive allocations increase in size
Characteristics
Good clustering allows efficient sequential I/O
More complex address translation than contiguous
allocation
ECE569 Lecture 03-1.10
Fall 2004
Extent-based Allocation
Why do we need extent directory?
• transparency
• easy lock name
ECE569 Lecture 03-1.11
Fall 2004
Single-Slot Allocation
extent-based allocation with extent size of 1 slot.
Used by original UNIX file system, and
implemented by the idea of i-node.
10 + n + n2 + n3 blocks can be addressed, where n
is the number pointers that can be held by one slot
(e.g., 8192 / 4 = 2048).
Poor random access performance for large files.
ECE569 Lecture 03-1.12
Fall 2004
Mapping Relations to Disks
ECE569 Lecture 03-1.13
Fall 2004
Buffer management
Database buffer is the mediator between the basic
file system and the tuple-oriented file system.
A tuple is addressed as <fileno, pageno, page-offset>
Main purpose
To make the pages addressable in main memory
To coordinate the writing of pages to disks with the log
manager and recovery manager
To minimize the number of actual disk accesses.
ECE569 Lecture 03-1.14
Fall 2004
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.
ECE569 Lecture 03-1.15
Fall 2004
Buffer Management
ECE569 Lecture 03-1.16
Fall 2004
Buffer Management vs. Read operation
Share vs private (lost update anomaly)
In buffer management, the clients tell whether they
are using the page or not.
ECE569 Lecture 03-1.17
Fall 2004
Lost Update Anomoly
This implies that the buffer
should be shared by multiple
processes.
ECE569 Lecture 03-1.18
Fall 2004
The Need for Synchronization
ECE569 Lecture 03-1.19
Fall 2004
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.
ECE569 Lecture 03-1.20
Fall 2004
The Fix / Use / Unfix Protocol
page P
use
page R
fix page P
use
use
unfix page P
use
fix page R
page Q
unfix page R
use
unfix page Q
use
fix page Q
use
use
ECE569 Lecture 03-1.21
Fall 2004
Buffer Control Blocks
typedef struct {
PAGEID
pageid;
/* id of page in file*/
PAGEPTR
pageaddr;
/* base addr. in buffer*/
Int
index;
/* record within page */
Semaphore
*pagesem;
/* pointer to the sem. */
Boolean
modified;
/* caller modif. page*/
Boolean
invalid;
/* destroyed page
*/
} BUFFER_ACC_CB, *BUFFER_ACC_CBP;
ECE569 Lecture 03-1.22
Fall 2004
Buffer Structure
ECE569 Lecture 03-1.23
Fall 2004