{"id":1764,"date":"2023-01-31T08:28:03","date_gmt":"2023-01-31T08:28:03","guid":{"rendered":"https:\/\/blog.amt.in\/?p=1764"},"modified":"2023-01-31T08:28:03","modified_gmt":"2023-01-31T08:28:03","slug":"insights-on-unix","status":"publish","type":"post","link":"https:\/\/blog.amt.in\/index.php\/2023\/01\/31\/insights-on-unix\/","title":{"rendered":"Insights on Unix"},"content":{"rendered":"<p>Unix\u00c2\u00a0is a family of\u00c2\u00a0multitasking,\u00c2\u00a0multiuser\u00c2\u00a0computer\u00c2\u00a0operating systems\u00c2\u00a0that derive from the original\u00c2\u00a0AT&amp;T\u00c2\u00a0Unix, development starting in the 1970s at the\u00c2\u00a0Bell Labs\u00c2\u00a0research center by\u00c2\u00a0Ken Thompson,\u00c2\u00a0Dennis Ritchie, and others.<\/p>\n<p>Initially intended for use inside the\u00c2\u00a0Bell System, AT&amp;T\u00c2\u00a0licensed\u00c2\u00a0Unix to outside parties in the late 1970s, leading to a variety of both academic and commercial Unix variants from vendors including\u00c2\u00a0University of California, Berkeley\u00c2\u00a0(BSD),\u00c2\u00a0Microsoft\u00c2\u00a0(Xenix),\u00c2\u00a0Sun Microsystems\u00c2\u00a0(SunOS\/Solaris),\u00c2\u00a0HP\/HPE\u00c2\u00a0(HP-UX), and\u00c2\u00a0IBM\u00c2\u00a0(AIX). In the early 1990s, AT&amp;T sold its rights in Unix to\u00c2\u00a0Novell, which then sold its Unix business to the\u00c2\u00a0Santa Cruz Operation\u00c2\u00a0(SCO) in 1995.\u00c2\u00a0The UNIX trademark passed to\u00c2\u00a0The Open Group, a neutral industry consortium founded in 1996, which allows the use of the mark for certified operating systems that comply with the\u00c2\u00a0Single UNIX Specification\u00c2\u00a0(SUS). However, Novell continues to own the Unix copyrights, which the\u00c2\u00a0SCO Group, Inc. v. Novell, Inc.\u00c2\u00a0court case (2010) confirmed.<\/p>\n<p>Unix systems are characterized by a\u00c2\u00a0modular design\u00c2\u00a0that is sometimes called the &#8220;Unix philosophy&#8221;. According to this philosophy, the operating system should provide a set of simple tools, each of which performs a limited, well-defined function.\u00c2\u00a0A unified\u00c2\u00a0filesystem\u00c2\u00a0(the\u00c2\u00a0Unix filesystem) and an\u00c2\u00a0inter-process communication\u00c2\u00a0mechanism known as &#8220;pipes&#8221; serve as the main means of communication,\u00c2\u00a0and a\u00c2\u00a0shell\u00c2\u00a0scripting and command language (the\u00c2\u00a0Unix shell) is used to combine the tools to perform complex workflows.<\/p>\n<p>Unix distinguishes itself from its predecessors as the first\u00c2\u00a0portable\u00c2\u00a0operating system: almost the entire operating system is written in the\u00c2\u00a0C programming language, which allows Unix to operate on numerous platforms.<\/p>\n<p>Unix was originally meant to be a convenient platform for programmers developing software to be run on it and on other systems, rather than for non-programmers.\u00c2\u00a0The system grew larger as the operating system started spreading in academic circles, and as users added their own tools to the system and shared them with colleagues.<\/p>\n<p>At first, Unix was not designed to be\u00c2\u00a0portable\u00c2\u00a0or for\u00c2\u00a0multi-tasking.\u00c2\u00a0Later, Unix gradually gained portability, multi-tasking and\u00c2\u00a0multi-user\u00c2\u00a0capabilities in a\u00c2\u00a0time-sharing\u00c2\u00a0configuration. Unix systems are characterized by various concepts: the use of\u00c2\u00a0plain text\u00c2\u00a0for storing data; a hierarchical\u00c2\u00a0file system; treating devices and certain types of\u00c2\u00a0inter-process communication\u00c2\u00a0(IPC) as files; and the use of a large number of\u00c2\u00a0software tools, small programs that can be strung together through a\u00c2\u00a0command-line interpreter\u00c2\u00a0using\u00c2\u00a0pipes, as opposed to using a single monolithic program that includes all of the same functionality. These concepts are collectively known as the &#8220;Unix philosophy&#8221;.\u00c2\u00a0Brian Kernighan\u00c2\u00a0and\u00c2\u00a0Rob Pike\u00c2\u00a0summarize this in\u00c2\u00a0The Unix Programming Environment\u00c2\u00a0as &#8220;the idea that the power of a system comes more from the relationships among programs than from the programs themselves&#8221;.<\/p>\n<p>By the early 1980s, users began seeing Unix as a potential universal operating system, suitable for computers of all sizes.\u00c2\u00a0The Unix environment and the\u00c2\u00a0client\u00e2\u20ac\u201cserver\u00c2\u00a0program model were essential elements in the development of the\u00c2\u00a0Internet\u00c2\u00a0and the reshaping of computing as centered in\u00c2\u00a0networks\u00c2\u00a0rather than in individual computers.<\/p>\n<p>Both Unix and the\u00c2\u00a0C programming language\u00c2\u00a0were developed by AT&amp;T and distributed to government and academic institutions, which led to both being ported to a wider variety of machine families than any other operating system.<\/p>\n<p>The Unix operating system consists of many libraries and utilities along with the master control program, the\u00c2\u00a0kernel. The kernel provides services to start and stop programs, handles the\u00c2\u00a0file system\u00c2\u00a0and other common &#8220;low-level&#8221; tasks that most programs share, and schedules access to avoid conflicts when programs try to access the same resource or device simultaneously. To mediate such access, the kernel has special rights, reflected in the distinction of\u00c2\u00a0kernel space\u00c2\u00a0from\u00c2\u00a0user space, the latter being a priority realm where most application programs operate.<\/p>\n<p>In the late 1980s, an open operating system standardization effort now known as\u00c2\u00a0POSIX\u00c2\u00a0provided a common baseline for all operating systems;\u00c2\u00a0IEEE\u00c2\u00a0based POSIX around the common structure of the major competing variants of the Unix system, publishing the first POSIX standard in 1988. In the early 1990s, a separate but very similar effort was started by an industry consortium, the\u00c2\u00a0Common Open Software Environment\u00c2\u00a0(COSE) initiative, which eventually became the\u00c2\u00a0Single UNIX Specification\u00c2\u00a0(SUS) administered by\u00c2\u00a0The Open Group. Starting in 1998, the Open Group and IEEE started the\u00c2\u00a0Austin Group, to provide a common definition of POSIX and the Single UNIX Specification, which, by 2008, had become the Open Group Base Specification.<\/p>\n<p>In 1999, in an effort towards compatibility, several Unix system vendors agreed on SVR4&#8217;s\u00c2\u00a0Executable and Linkable Format\u00c2\u00a0(ELF) as the standard for binary and object code files. The common format allows substantial binary compatibility among different Unix systems operating on the same CPU architecture.<\/p>\n<p>The names and filesystem locations of the Unix components have changed substantially across the history of the system. Nonetheless, the V7 implementation is considered by many\u00c2\u00a0to have the canonical early structure:<\/p>\n<ul>\n<li><i>Kernel<\/i>\u00c2\u00a0\u00e2\u20ac\u201c source code in \/usr\/sys, composed of several sub-components:\n<ul>\n<li><i>conf<\/i>\u00c2\u00a0\u00e2\u20ac\u201c configuration and machine-dependent parts, including boot code<\/li>\n<li><i>dev<\/i>\u00c2\u00a0\u00e2\u20ac\u201c device drivers for control of hardware (and some pseudo-hardware)<\/li>\n<li><i>sys<\/i>\u00c2\u00a0\u00e2\u20ac\u201c operating system &#8220;kernel&#8221;, handling memory management, process scheduling, system calls, etc.<\/li>\n<li><i>h<\/i>\u00c2\u00a0\u00e2\u20ac\u201c header files, defining key structures within the system and important system-specific invariables<\/li>\n<\/ul>\n<\/li>\n<li><i>Development environment<\/i>\u00c2\u00a0\u00e2\u20ac\u201c early versions of Unix contained a development environment sufficient to recreate the entire system from source code:\n<ul>\n<li><i>cc<\/i>\u00c2\u00a0\u00e2\u20ac\u201c\u00c2\u00a0C language\u00c2\u00a0compiler (first appeared in V3 Unix)<\/li>\n<li><i>as<\/i>\u00c2\u00a0\u00e2\u20ac\u201c machine-language assembler for the machine<\/li>\n<li><i>ld<\/i>\u00c2\u00a0\u00e2\u20ac\u201c linker, for combining object files<\/li>\n<li><i>lib<\/i>\u00c2\u00a0\u00e2\u20ac\u201c object-code libraries (installed in \/lib or \/usr\/lib).\u00c2\u00a0<i>libc<\/i>, the system library with C run-time support, was the primary library, but there have always been additional libraries for things such as mathematical functions (<i>libm<\/i>) or database access. V7 Unix introduced the first version of the modern &#8220;Standard I\/O&#8221; library\u00c2\u00a0<i>stdio<\/i>\u00c2\u00a0as part of the system library. Later implementations increased the number of libraries significantly.<\/li>\n<li><i>make<\/i>\u00c2\u00a0\u00e2\u20ac\u201c build manager (introduced in\u00c2\u00a0PWB\/UNIX), for effectively automating the build process<\/li>\n<li><i>include<\/i>\u00c2\u00a0\u00e2\u20ac\u201c header files for software development, defining standard interfaces and system invariants<\/li>\n<li><i>Other languages<\/i>\u00c2\u00a0\u00e2\u20ac\u201c V7 Unix contained a Fortran-77 compiler, a programmable arbitrary-precision calculator (<i>bc<\/i>,\u00c2\u00a0<i>dc<\/i>), and the\u00c2\u00a0awk\u00c2\u00a0scripting language; later versions and implementations contain many other language compilers and toolsets. Early BSD releases included\u00c2\u00a0Pascal\u00c2\u00a0tools, and many modern Unix systems also include the\u00c2\u00a0GNU Compiler Collection\u00c2\u00a0as well as or instead of a proprietary compiler system.<\/li>\n<li><i>Other tools<\/i>\u00c2\u00a0\u00e2\u20ac\u201c including an object-code archive manager (<i>ar<\/i>), symbol-table lister (<i>nm<\/i>), compiler-development tools (e.g.\u00c2\u00a0<i>lex<\/i>\u00c2\u00a0&amp;\u00c2\u00a0<i>yacc<\/i>), and debugging tools.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>The above is a brief about Unix. Watch this space for more updates on the latest trends in Technology.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unix\u00c2\u00a0is a family of\u00c2\u00a0multitasking,\u00c2\u00a0multiuser\u00c2\u00a0computer\u00c2\u00a0operating systems\u00c2\u00a0that<\/p>\n","protected":false},"author":1,"featured_media":1766,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[194,7,660],"tags":[196,18,663],"class_list":["post-1764","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-operating-system","category-techtrends","category-unix","tag-operating-system","tag-technology","tag-unix"],"_links":{"self":[{"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/posts\/1764","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/comments?post=1764"}],"version-history":[{"count":1,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/posts\/1764\/revisions"}],"predecessor-version":[{"id":1765,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/posts\/1764\/revisions\/1765"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/media\/1766"}],"wp:attachment":[{"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/media?parent=1764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/categories?post=1764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/tags?post=1764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}