Computer Science/Operating system and software
Expert: John OConnor - 3/30/2010
QuestionSir,
What exactly is an operating system and what is a 'kernel'. How is an operating system different from a software. What are 'Linux' and 'Fedora' and how are they different from Windows. In my college everyone keeps talking about Linux kernel and fedora, but I can't quit understand what these terms are. Where does programming and programming language come in designing an operating system. I am extremely sorry for asking too many questions. Thank you for your time and knowledge.
- Vinod
AnswerHey,
So, there are indeed many questions. I will do my best to answer them in as concise a method as possible, and hopefully can provide you with some links for further study.
Q: What is an operating system?
A: An operating system is a piece of software that allows other software (such as Office or Firefox) to use and communicate with other programs, users (such as you), or computer hardware and peripherals (such as your CD drive, hard drive, or printer). The operating system provides the general interfaces for these things to happen. See
http://en.wikipedia.org/wiki/Operating_system for more information.
Q: What is a 'kernel'?
A: So, when writing software, you usually want to avoid things called "infinite loops". These are pieces of code that will run forever because they point to themselves (ie: 10 goto 10). However, that behavior is exactly what you want in an operating system. The "kernel" is a piece of code in the operating system that runs in an inifinite loop. Depending on the operating system, it can do a number of things. However, the core of it is that the Kernel provides input / output functions (user types a key, and the computer receives the signal from the keyboard), inter process communication (two programs talking to each other), and hardware detection logic (you just plugged in a new printer). See
http://en.wikipedia.org/wiki/Kernel_%28computing%29 for more information.
Q: How is an operating system different from software?
A: An operating system is a piece of software. It is different from "Application" software in that it specifically controls other software as it's primary function. However, it is technically just software.
Q: What are Linux and Fedora?
A: Technically, Linux refers to an Operating System kernel. Linux by itself does not provide any human usable interface. However, Linux coupled with GNU software (called GNU/Linux) is an operating system, and handles the same low-level things that Windows or the Mac OS do. Most people are referring to GNU/Linux when they talk about Linux, so don't worry about the distinction. Just know that it's there.
The difference Between Windows and Linux is that the human readable source code that makes up Linux is completely free (both in price and in what you can do with the code). This means that anyone can use the Linux Operating System free of charge on any computer they want, and can modify it if they know how.
Fedora is a brand of Linux (also called a distribution). It means that someone took the free GNU/Linux software (Linux kernel + GNU software), and bundled their own software together with it. They also might add things like custom fonts, nice background pictures, and new themes. Companies like Red Hat make their money on supporting the free software and providing a specific set of software that they've tested to work well. You can download a CD of Fedora, put it in your computer, and you're technically using Linux (The Linux Kernel, GNU software, and the Fedora extras).
Q: Where does programming and programming language come in designing an operating system?
A: Since an operating system is just software, it has to be written in some programming language. While assembly language (the lowest-level human-readable language) used to be popular, most modern operating systems (Including Linux) are written in C. Since Assembly language is different depending on what processor you're using, software written in assembly has to be re-written for each processor you want to support. This can become very tedious. Using C, the programmers can write the operating system in one language and compile it for multiple processors. This basically means the computer automatically converts the C code (written once by a person) into many assembly languages for different processors.
I hope this helps.