-linux looks and feels like unix--compatibility with unix has been a major design goal of linux.
-linux kernel was created and released by in 1991 on intel 80386, a 32 bit processor, by Linus Torvalds.
-first linux kernel version 0.01 was released May 14, 1991. It had no networking and limited device drivers.
-version 1.0 was released Mar 14, 1994. It had networking.
-current major version of linux kernel is version 2.6 that was released in 2003.
-while the kernel code for linux was written from scratch, non kernel code was modeled on GNU, X, BSD etc.
-in recent times, even BSD has taken Linux code in return; eg: pc sound h/w devices, certain math-libraries etc.
-linux in NOT a public domain s/w.
-in public domain s/w the author gives away the copyrights.
-in linux, copyrights are still held by various authors.
-rather linux is free s/w in that while maintaining authors copyrights it permits anyone to read, modify and redistribute it.
-while re-distributing, they have to give away the binaries plus the source code.
-note that its ok to charge a price for the redistribution.
-this means linux is free as in freedom but not necessarily in price/money.
-three components of a linux system:
. kernel - does h/w abstraction eg: cpu scheduling, virtual memory etc.
. system libr - system calls, for apps to talk to kernel
. system utils - individual system procs like daemons that have a specific task
-the processor has two modes - privileged and non privileged.
-the kernel code executes in the processors privileged mode.
-the other code executes in the processors nonpriv mode.
-the 'other' code is everything non kernel code. it could be a system code or user code.
-in privileged mode, the code has full control of system h/w.
-the switch between modes occurs due to system calls which triggers a 'context switch'.
-context switch (cs) is the switch of the processor between two processes.
-the two processes may be in different modes altogether - eg: privileged and unprivileged modes.
-during cs, the state of the current process must be saved in PCB before next process is scheduled.
-during cs, cpu is idle. so if the time spent in cs is minimized, system performance improves.
-cs is h/w dependent. ie, by better design, cs can be made more efficient.
-linux kernel code is a single monolithic binary, ie all the code is part of a single address space.
-it includes code for scheduler, virtual mem, device drivers, filesystem and networking.
-the main reason for putting all this code in one address space is 'performance'.
-bec all kernel code is in a single addr space, no context switch is reqd during os internal tasks.
-eg when a proc calls an os func or h/w interrupt occurs etc, no context switch is reqd.
-despite being monolithic, linux kernel is modular.
-non-essential code is kept outside of the kernel in the form of modules.
-these modules can be dynamically loaded or unloaded.
-modules run in kernel mode and have full access to the device they drive.
-two imp implications of modules outside of the kernel:
. only module code needs to be recompiled (instead of whole kernel) if any changes made
. module code can be distributed on non-GPL proprietary licenses
-in the above, the 2nd point (proprietary modules) would not be possible if module were inside the kernel.
-this is because the kernel is under GPL and forces all code in it to be GPLed.
-this is important because even though the modules run in kernel mode, they need not be under GPL like the kernel code.
... continued ...
-linux kernel was created and released by in 1991 on intel 80386, a 32 bit processor, by Linus Torvalds.
-first linux kernel version 0.01 was released May 14, 1991. It had no networking and limited device drivers.
-version 1.0 was released Mar 14, 1994. It had networking.
-current major version of linux kernel is version 2.6 that was released in 2003.
-while the kernel code for linux was written from scratch, non kernel code was modeled on GNU, X, BSD etc.
-in recent times, even BSD has taken Linux code in return; eg: pc sound h/w devices, certain math-libraries etc.
-linux in NOT a public domain s/w.
-in public domain s/w the author gives away the copyrights.
-in linux, copyrights are still held by various authors.
-rather linux is free s/w in that while maintaining authors copyrights it permits anyone to read, modify and redistribute it.
-while re-distributing, they have to give away the binaries plus the source code.
-note that its ok to charge a price for the redistribution.
-this means linux is free as in freedom but not necessarily in price/money.
-three components of a linux system:
. kernel - does h/w abstraction eg: cpu scheduling, virtual memory etc.
. system libr - system calls, for apps to talk to kernel
. system utils - individual system procs like daemons that have a specific task
-the processor has two modes - privileged and non privileged.
-the kernel code executes in the processors privileged mode.
-the other code executes in the processors nonpriv mode.
-the 'other' code is everything non kernel code. it could be a system code or user code.
-in privileged mode, the code has full control of system h/w.
-the switch between modes occurs due to system calls which triggers a 'context switch'.
-context switch (cs) is the switch of the processor between two processes.
-the two processes may be in different modes altogether - eg: privileged and unprivileged modes.
-during cs, the state of the current process must be saved in PCB before next process is scheduled.
-during cs, cpu is idle. so if the time spent in cs is minimized, system performance improves.
-cs is h/w dependent. ie, by better design, cs can be made more efficient.
-linux kernel code is a single monolithic binary, ie all the code is part of a single address space.
-it includes code for scheduler, virtual mem, device drivers, filesystem and networking.
-the main reason for putting all this code in one address space is 'performance'.
-bec all kernel code is in a single addr space, no context switch is reqd during os internal tasks.
-eg when a proc calls an os func or h/w interrupt occurs etc, no context switch is reqd.
-despite being monolithic, linux kernel is modular.
-non-essential code is kept outside of the kernel in the form of modules.
-these modules can be dynamically loaded or unloaded.
-modules run in kernel mode and have full access to the device they drive.
-two imp implications of modules outside of the kernel:
. only module code needs to be recompiled (instead of whole kernel) if any changes made
. module code can be distributed on non-GPL proprietary licenses
-in the above, the 2nd point (proprietary modules) would not be possible if module were inside the kernel.
-this is because the kernel is under GPL and forces all code in it to be GPLed.
-this is important because even though the modules run in kernel mode, they need not be under GPL like the kernel code.
... continued ...
No comments:
Post a Comment