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