When does a session which is "Marked for Kill" actually die?

Sessions which are active or using I/O or running a Transaction aren't killed instantly, but are Marked for kill.

Are they killed when they complete, or is there some kind of clean up process which runs periodically and kills them off?

Any help appreciated

Many thanks