Software interrupt vs hardware interrupt