Additional functions are added and removed according to political and marketing scenarios
Initial UNIX implementation had built in C compiler (sold separately with almost all modern OS)
Most UNIX OS comes with wide range of servers such as ftp server, telnet server, daytime server, printing server and even HTTP server, J2EE platform, etc.
Many OS also come with GUI (windows, OSX aqua, X Windows) and other user tools (calculator, Text processor etc.)
Microsoft wished to add Internet Explorer, Windows media player etc. as part of the OS. However, the European union prevented the inclusion of media player in all windows sold in Europe… (anti trust reasons)
The course will deal with “CORE OS” functions only. These services are usually managed by the OS “Kernel”
We will focus on UNIX environment, Linux, Xubunto distribution
UNIX is the name of historical OS developed in 1970’s in Bell labs
It’s also a trademark
UNIX may refer to set of standards (POSIX) that defines OS interface that many OS follow
UNIX is also general name for a family of many proprietary OS that were tested for standard completion. None of these OS is called UNIX but usually their name has an X that gives them away (AIX, OSX, HP-UX, IRIX) with Solaris as the exception
Commercial UNIX OS pay royalties to use the UNIX trademark
Since UNICES (plural for UNIX) share the same API and design principle it is relatively easy (but not effortless) to port software from one UNIX to the other.
UNIX (acr. for uniplexed information) was initially pun on multics (OS that is virtually extinct that allowed for multi-user to run multiple tasks on multi process environment) and was the name of OS that was developed at bell labs for their PDP11 computers.
Original UNIX developers wanted to build a better multics.
The OS was initially distributed in source form so that anybody can modify and customize it.
The source was later brunched into two main trunks SYSV and BSD code (with both brunches often borrowing code from each other)
Most modern Unices are usually based on either of those brunches.
Commercial UNIX today mainly in high end server, workstation and desktop market.
Open source UNIX tends to rule several market segments (Linux and apache rule the http serving and Linux practically runs on all Wireless routers.) and is heavy favorite on several others (running database servers)
MIT license – allow you to do what ever you want with the code
BSD license – allow modification and redistribution (modification may not be free). You must keep credits to original author
GNU GPL – modifications (derived work) must be free
GNU LGPL – modification must be free, but linking with GNU source is not a modification (license used by GNU libraries)
Other free licenses - check on FSF website
Commercial Open source – you may view the source but not use it commercially or you may edit the source, but your modification belong to specific company or modifications may not be redistributed. Are not considered “free” (such as Apple public license, Sun Public license, Netscape public license, MySQL)
Dual license – software available as GPL (if you modify you must open the source of the modification) same software is also available with closed source (you can modify and not open the source) for paying customers. This is the business model of many open source companies
open -- open or create a file for reading or writing
int open(const char *path, int oflag, ...);
The file name specified by path is opened for reading and/or writing …
Note section 2 for system call This is a man page from OSX which is BSD system Open is the system call name What the system call does Required header to use this function C style function declaration (prototype) Brief description
An open() function call appeared in Version 6 AT&T UNIX
What the function returns When something interesting/bad happens Related man pages Standards etc.
The difference between system and library function Library function OS function Usually calls OS function Lowest level interface Section 3 of man Section 2 of man Programming language dependent (but not system dependent) System dependent and may not exist on different systems (or used with different name or parameters) Almost always bugfree Almost always bug free Almost always efficient Almost always efficient Usually - user space code Usually – kernel space code