Coding and Signal Processing for Magnetic Recording Systems