Platforms can be grouped into two broad categories, platforms with "consoles" and platforms with "terminals", according to the paradigms that they present to TUI programs. These are not firm divisions, and several platforms are admixtures of the two approaches.
Platforms with "consoles". These platforms provide a concept of a "console" to applications programs. Consoles support direct screen addressing, to the level of character cells at least, and are accessed through an API that is a first-class part of the overall system API.
Platforms with "terminals". These platforms provide a concept of a "terminal" to applications programs. Terminals are not directly addressed, but are communicated with via byte stream communications protocols, involving control characters and control character sequences.
Microsoft Windows NT, IBM OS/2, TAU, and even (to an extent) MS/PC/DR-DOS are platforms with "consoles". Unices (e.g. the various BSDs, Solaris, HP/UX, AIX, and so forth) and Linux are platforms with "terminals".
Confusingly, platforms with terminals often distinguish one terminal as special, and call it "the console". This isn't the same as the console abstraction discussed here. It's really little more than a way of marking one terminal device out of the many potentially attached to the system that is variously (a) available early on in the bootstrap process, (b) allowed to have superusers logging in directly, or (c) used for kernel diagnostic output and "messages to the system operator sitting at the system console". The console abstraction discussed here is nothing to do with this. The abstractions discussed here involve the API and the way that applications programs "see" the services offered to them by the operating system.