how to display the list of unread nodes and read nodes
Using the Flag module seems like a no brainer to me to get this to work: introduce a flag that is used to flag relevant nodes as "read". To actually do so, just use the Rules module (using a Rules event like "When viewing content", a kind of getting started with Rules).

With the above in place, you've reduced your question to creating an appropriate view (using Views) which shows the node(s) for which their flagging status corresponds to "read", or "NOT read", or "all of them". If you want, you can created 3 tabs in your view to show these all / read / not read nodes.

Ps: I'm assuming this is about D7.