I am very new to operating systems, that's why this question may be very fundamental.
According to the resources which I have read, all program icons, desktop surface, and other symbols of files and folders are generated by the graphical user interface so that the computer-users can manage some processes easily. This is very senseful.
However, after this definition, I started to face the phrase "abstraction". For example, these resources say that file systems are an abstraction.
Actually, I am a little bit confused with the phrase "abstraction". Besides, I cannot understand the difference between abstraction and graphical user interface. Is there anyone who can explain what the abstraction is in operating systems and the difference between abstraction and GUI ?
abstraction | əbˈstrakʃ(ə)n |
noun [mass noun]
- the quality of dealing with ideas rather than events [..]
- the process of considering something independently of its associations or attributes [..]
- the process of removing something [..]
ORIGIN
late Middle English: from Latin abstractio(n-), from the verb abstrahere ‘draw away’.
An abstraction in this context is generally anything that simplifies something to a more understandable form. A computer works just with blips of electricity. That is rather difficult to comprehend on a day-to-day basis. Those electric impulses are first abstracted to "ones and zeros" or "bits". Those are further abstracted to form numbers. Those numbers are used in specific ways to represent readable characters. Bits are also used in certain ways to store data on a spinning disk of metal or in chips, which we generally call a file system. That file system is made visible in a hierarchical form using "files" and "directories". That hierarchy is made visible in a GUI using windows and icons. Interacting with those things is abstracted into using a "mouse" to push around those "icons", which in the end translates back down to moving electric impulses around on metal.
All those abstractions allow you to use a computer without having to be aware of the underlying things that are going on to make it happen.