A good tutorial is here:
glish.com : CSS layout techniques : 3 columns, the holy grail
The problem is usually with 100% page height, assuming that you mean the <body> tag by page. DIVs stretch only to the height of their content. Workaround is a container div (with contains all the columns) and has a background, thereby providing a "fake" column background.
If you need divs always at top/bottom, then best way is to use absolute positioning. Absolute works in reference to browser window, but there's a trick where if you place an absolutely positioned div into a relatively positioned div, then the absolute is in reference to the relative containing div.