Oracle 805, OS-Unix
Some of my sessions were waiting due to locks on table, I tried to kill the session using
SQL> alter system kill session '11,1234';
Checking the status in V$SESSION shows KILLED and never goes out from V$SESSION. WHY?????

The objects locked by killed session keeps holding the locks on the objects for long time.
When killing the session from OS (kill -9 processid) releases the locks and V$SESSION also doen't shows that session any more.

Why it is so that killing at OS level cleaned the things which were not cleaned by alter system kill session?
Why not use OS kill command always to kill the session? Is there any disadvantage in doing so?