UNIX
Na Galipedia, a wikipedia en galego.
Unix é un sistema operativo (ou sistema operacional) portábel, multitarefa e multiusuario orixinalmente criado por Ken Thompson, que traballaba nos Laboratorios Bell (Bell Labs) da AT&T. A marca UNIX é unha propiedade do The Open Group, un consorcio formado por empresas de informática.
Índice |
[editar] Historia
En 1965 formouse un grupo de programadores, incluíndo Ken Thompson, Dennis Ritchie, Douglas McIlroy e Peter Weiner, nun esforzo conxunto da AT&T (Laboratorios Bell), da General Electric (GE) e do MIT (Massachusetts Institute of Technology) para o desenvolvemento dun sistema operativo chamado Multics.
O Multics tería que ser un sistema de tempo compartido para unha grande comunidade de usuarios. Non obstante, os recursos computacionais dispoñíbeis na época, particularmente os do computador utilizado, un GE 645, reveláranse insuficientes para as pretensións do proxecto. En 1969, a Bell retirouse do proxecto. Dúas razóns principais foron citadas para explicar a súa saída. Primeira: tres institucións con obxectivos díspares dificilmente acadarían unha solución satisfactoria para cada unha delas (o MIT facía pesquisa, AT&T monopolizaba os servizos de telefonía americanos e a GE quería vender computadores). A segunda razón é que os participantes sofrían da síndrome do segundo proxecto e, por iso, querían incluír no Multics todo que tiña sido excluído dos sistemas experimentais ata entón desenvolvidos.
Aínda en 1969, Ken Thompson, usando un ocioso computador PDP-7, comezou a reescribir o Multics nun concepto menos ambicioso, ao que chamou Unics, usando linguaxe de asemblador (assembly). Máis tarde, Brían Kernighan mudou o nome do novo sistema para Unix.
Un marco importante foi estabelecido en 1973, cando Dennis Ritchie e Ken Thompson reescribiron o Unix usando a linguaxe de programación C para un computador PDP-11. A linguaxe C fora desenvolvida por Ritchie para substituír e superar as limitacións da linguaxe de programación B, desenvolvida por Thompson. O seu uso é considerado unha das principais razóns para a rápida difusión do Unix.
Ao longo dos anos 70 e 80 foron desenvolvidas as primeiras distribucións de grande dimensión como os sistemas BSD (na Universidade de Berkeley na California) e, máis tarde, os System III e System V (nos Bell Labs ).
En 1977, a AT&T comezou a fornecer o Unix para institucións comerciais. A abertura do mercado comercial para o Unix debe moito a Peter Weiner - cientista de Yale e fundador da Interactive System Corporation. Weiner conseguiu da AT&T, entón xa desnudada do seu monopolio nas comunicións e ceibe para actuación no mercado de software, licenza para transportar e comercializar o Unix para o computador Interdata 8/32 para ambiente de automoción de escritorio. O Unix saía da liña das máquinas PDP, da Digital Equipment Corporation (DEC), demostrando a relativa facilidade de migración (transporte) para outros computadores, e que, en parte, debeuse ao uso da linguaxe C. O suceso da Interactive de Weiner co seu produto provou que o Unix era vendíbel e encoraxou outros fabricantes a seguiren o mesmo curso. Iniciábase a abertura do chamado mercado Unix.
Coa crecente oferta de microcomputadores, outras empresas transportaron o Unix para novas máquinas. Debido á dispoñibilidade das fontes do Unix e á súa simplicidade, moitos fabricantes alteraron o sistema, xerando variantes personalizadas a partir do Unix básico licenciado pola AT&T. De 1977 a 1981, a AT&T integrou moitas variantes no primeiro sistema Unix comercial chamado System III. En 1983, após engadir varios melloramentos ao System III, a AT&T presentaba o novo Unix comercial, agora chamado System V. Hoxe, o Unix System V é o padrón intermacional de feito no mercado Unix, constando das licitacións de compra de equipamentos de grandes clientes na América, Europa e Ásia.
Actualmente, Unix (ou *nix) é o nome dado a unha grande familia de Sistemas Operativos que comparten moitos dos conceptos dos Sistemas Unix orixinais, sendo todos eles desenvolvidos consonte a padróns como o POSIX (Portable Operating System Interface) e outros. Algúns dos sistemas operativos derivados do Unix son: desde os BSD (FreeBSD, OpenBSD e NetBSD ), Solaris (anteriormente coñecido por SunOS), IRIX, AIX, HP-UX, Tru64, Linux (nas súas centenas de distribucións), deica o Mac OS X (baseado nun kernel Mach BSD chamado Darwín ). Existen máis de corenta sistemas operativos *nix, desde celulares a supercomputadores, de reloxos de pulso a sistemas mainframe.
[editar] Características
[editar] Sistema operativo multitarefa
Multitarefa significa executar unha ou máis tarefas ou procesos simultaneamente. En verdade, ter varios procesos en execución significa dicir que son executados secuencialmente de forma tan rápida que todos eles parecen estar sendo executados simultaneamente. O Unix escalona a execución deles e resérvalles recursos do computador (intervalo de tempo de procesamento, espazo en memoria RAM e un espazo no disco ríxido).
O Unix é un sistema operativo de multitarefa preemptiva. Iso significa que, cando se esgota un determinado intervalo de tempo (chamado cuanto), o Unix suspende a execución do proceso, salva o seu contexto (informacións necesarias para a execución do proceso) para que poida ser retomado posteriormente, e coloca en execución o próximo proceso da fila de espera. O Unix tamén determina cando será executado cada proceso, a duración de súa execución e a súa prioridade sobre os outros.
A multitarefa fai non só que o conxunto de tarefas sexa executado máis rapidamente, mais tamén que o usuario e o computador fiquen libres para realizaren outras tarefas co tempo economizado.
[editar] Sistema operativo multiusuario
Unha característica importante do Unix é ser multiusuario. Bovet e Cesatí definen un sistema multiusuario como "aquel capaz de executar, concorrente e independentemente, varias aplicacións pertencentes a dous ou máis usuarios". O Unix posibilita que varios usuarios usen un mesmo computador simultaneamente, xeralmente por medio de terminais. Cada terminal componse dun monitor, un teclado e, eventualmente, un mouse. Varios terminais poden ser conectados ao mesmo computador nun sistema Unix. Hai alguns anos eran usadas conexións serie, pero actualmente é máis común o uso de redes locales, principalmente para o uso de terminais gráficos (ou terminais X), usando o protocolo XDMCP.
O Unix xestiona os pedidos que os usuarios fan, evitando que un interfira con outros. Cada usuario posúe dereitos de propiedade e permisións sobre arquivos. Calquera arquivos modificados polo usuario conservarán eses dereitos. Programas executados por un usuario común estarán limitados en termos de a cales arquivos poderán acceder.
O sistema Unix posúe dous tipos de usuarios: o usuario root (tamén coñecido como superusuario), que posúe a misión de administrar o sistema, podendo manipular todos os recursos do sistema operativo; e os usuarios comuns, que posúen dereitos limitados.
Para que o sistema opere adecuadamente en modo multiusuario, existen alguns mecanismos: (i) un sistema de autenticación para identificación de cada usuario (o programa login, p.ex., autentica o usuario verificando unha base de dados, normalmente gardada no arquivo /etc/passwd); (ii) sistema de arquivos con permisións e propiedades sobre arquivos (os dereitos anteriormente citados); (iii) protección de memoria, impedindo que un proceso de usuario acceda a dados ou interfira con outro proceso. Ese último mecanismo é implementado coa axuda do hardware, que consiste na división do ambiente de procesamento e memoria en modo supervisor (ou modo kernel) e modo usuario.
[editar] Estrutura
Un sistema Unix consiste, basicamente, en dúas partes:
- kernel - o núcleo do sistema operativo, a parte que se relaciona directamente co hardware, e que se executa nun espazo de memoria privilexiado. Axenda procesos, xestiona a memoria, controla o acceso a arquivos e a dispositivos de hardware (estes, por medio dos controladores de dispositivo - drivers - e interrupcións). O acceso ao kernel, polas aplicacións, é feita por chamadas ao sistema, que son funcións fornecidas polo kernel; esas funcións son dispoñibilizadas polas bibliotecas de sistema (LibC).
- programas de sistema - son aplicacións, que se executan en espazos de memoria non privilexiados, e que fan a interface entre o usuario e o kernel. Consisten, principalmente, en:
-
-
- Conxunto de bibliotecas C (LibC)
-
-
-
- Shell - un ambiente que permite que o usuario dixite comandos.
-
-
-
- Programas utilitarios diversos - son programas usados para manipular arquivos, controlar procesos, etc.
-
-
-
- Ambiente gráfico (GUI) graphics user interface - eventualmente utilízase tamén un ambiente gráfico para facilitar a interacción do usuario co sistema.
-
Nun sistema Unix, o espazo de memoria utilizado polo kernel é denominado espazo do kernel ou supervisor (kernel space); a área de memoria para os outros programas é denominada espazo do usuario (user space). Esa separación é un mecanismo de protección que impede que programas comuns interfiron co sistema operativo.
[editar] Procesos
Un proceso, na visión máis simple, é unha instancia dun programa en execución. Un programa, para ser executado, debe ser cargado en memoria; a área de memoria utilizada é dividida en tres partes: código (text), dados inicializados (data) e pila (stack).
Por ser un sistema multitarefa, o Unix utiliza unha estrutura chamada táboa de procesos, que contén informacións sobre cada proceso, tales como: identificación do proceso (PID), dono, área de memoria utilizada, estado (status). Apenas un proceso pode ocupar o procesador en cada instante - o proceso encóntrase no estado "executando" (running). Os outros procesos poden estar "prontos" (ready), agardando na fila de procesos, ou entón están "durmindo" (asleep), esperando algunha condición que permita a súa execución.
Un proceso en execución pode ser retirado do procesador por dúas razóns: (i) necesita accesar algún recurso, facendo unha chamada ao sistema - neste caso, após a súa retirada do procesador, o seu estado será alterado para "durmindo", ata que o recurso sexa liberado polo kernel; (ii) o kernel pode interromper o proceso (preempción) - neste caso, o proceso irá para a fila de procesos (estado "pronto"), agardando nova oportunidade para executar - ben porque a porción de tempo esgotouse, ben porque o kernel necesita realizar algunha tarefa.
Existen catro chamadas ao sistema principais asociadas a procesos: fork, exec, exit e wait. fork é usada para criar un novo proceso, que irá executar o mesmo código (programa) do programa chamador (proceso-pai); exec irá determinar o código a ser executado polo proceso chamado (proceso-fillo); exit termina o proceso; wait fai a sincronización entre a finalización do proceso-fillo e o proceso-pai.
[editar] Sistema de arquivos
Sistema de arquivos é unha estrutura lóxica que posibilita o almacenamento e recuperación de arquivos. No Unix, os arquivos son contidos en directorios (ou cartafoles), os cales son conectados nunha árbore que comeza no directorio raiz (designado por /). Mesmo os arquivos que se encontran en dispositivos de almacenamento diferentes (discos ríxidos, disquetes, CDs, DVDs, sistemas de arquivos en rede) precisan ser conectados á árbore para que o seu contido poida ser accesado. Cada dispositivo de almacenamento posúe a súa propia árbore de directorios.
O proceso de conectar a árbore de directorios dun dispositivo de almacenamento á árbore de directorios raiz é chamado "montar dispositivo de almacenamento" (montaxe) e é realizado por medio do comando mount. A montaxe asocía o dispositivo a un subdirectorio.
[editar] Estrutura de directorios
A árbore de directorios do Unix é dividida en varias ramificacións menores e pode variar dunha versión para outra. Os directorios máis comuns son os seguintes:
/
— Directorio raiz - este é o directorio principal do sistema. Dentro del están todos os directorios do sistema.
/bin
— Contén arquivos programas do sistema que son usados con frecuencia polos usuarios.
/boot
— Contén arquivos necesarios para a inicialización do sistema.
/dev
— Contén arquivos usados para accesar dispositivos (periféricos) existentes no computador.
/etc
— Arquivos de configuración de seu computador local.
/home
— Directorios contendo os arquivos dos usuarios.
/lib
— Bibliotecas compartidas polos programas do sistema e módulos do kernel.
/mnt
— Directorio de montaxe de dispositivos.
/mnt/cdron
— Subdirectorio onde son montados os CD. Após a montaxe, o contido do CD se encontrará dentro deste directorio.
/mnt/floopy
— Subdirectorio onde son montados os disquetes. Após a montaxe, o contido do disquete se encontrará dentro deste directorio.
/proc
— Sistema de arquivos do kernel. Este directorio non existe, é colocado aquí polo kernel e usado por diversos programas.
/root
— Directorio do usuario root.
/sbin
— Directorio de programas usados polo superusuario (root) para administración e control do funcionamento do sistema.
/tmp
— Directorio para almacenamento de arquivos temporarios criados por programas.
/usr
— Contén a meirande parte dos programas. Normalmente accesíbel soamente como lectura.
/var
— Contén a meirande parte dos arquivos que son gravados con frecuencia polos programas do sistema.
[editar] Particularidades
Un sistema Unix é orientado a arquivos, case todo nel é arquivo. Os seus comandos son en verdade arquivos executábeis, que son encontrados en lugares previsíbeis na súa árbore de directorios, e ata mesmo a comunicación entre entidades e procesos é feita por estruturas parecidas con arquivos. O acceso a arquivos é organizado através de propiedades e proteccións. Toda a seguranza do sistema depende, en grande parte, da combinación entre as propiedades e proteccións definidas nos seus arquivos e as súas contas de usuarios.
[editar] Aplicacións
O Unix permite a execución de paquetes de software de aplicación para apoio das diversas actividades empresariais. Entre estes paquetes destácanse:
- xeradores gráficos
- planillas eletrónicas
- procesadores de textos
- xeradores de aplicacións
- linguaxes de 4° xeración
- bases de dado
O Unix posúe recursos de apoio á comunicación de dados, que proporcionan a súa integración con outros sistemas Unix, e ata con outros sistemas operativos distintos. A integración con sistemas heteroxéneos permite as seguintes facilidades:
- compartimento de recursos e informacións
- transferencia de informacións
- comunicación entre usuarios remotos
- submisión de programas para seren executados en computadores remotos
- utilización dos terminais dunha máquina Unix como terminais de outras máquinas remotas, mesmo con sistemas operativos distintos.
Para última, o Unix ofrece un ambiente integrado e amigábel, voltado para a xestión automatizada de escritorio, con servizos que atenderán ás seguintes áreas:
- arquivamento electrónico de informacións
- procesador de documentos
- axenda e calendario
- calculadora
- correo electrónico
[editar] Ambiente gráfico do Unix
[editar] X Window System
Alén do shell , o Unix soporta interface gráfica de usuario. Nas primeiras versións do Unix as interfacces do usuario eran baseadas apenas en caracteres (modo texto) e o sistema compúñase apenas do kernel, de bibliotecas de sistema, do shell e de alguns outros aplicativos. As versións máis recentes do Unix, alén de manteren o shell e seus comandos, inclúen o X Window System que, grazas ao xestor de exhibición e ao xestor de xanelas, posúe unha interface atraente e intuitiva que aumenta en moito a produtividade do usuario.
Desenvolvido no MIT (Masachusets Institute of Technology), o X Window System (tamén pode ser chamado X-window) tornouse o sistema gráfico do Unix. O X-window funciona como xestor de exhibición e por si só, non fai moita cousa. Para termos un ambiente gráfico produtivo e completo, precisamos tamén dun xestor de xanelas.
O xestor de xanelas proporciona ao ambiente gráfico a aparencia e as funcionalidades esperadas incluíndo as bordas das xanelas, botóns, truques de mouse, menús etc. Como no sistema Unix o xestor de exhibición (X Window System) é separado do xestor de xanelas, dicimos que o seu ambiente gráfico é do tipo cliente-servidor. O X-window funciona como servidor e interactúa diretamente co mouse, o teclado e o vídeo. O xestor de xanelas funciona como cliente e se aproveita dos recursos dispoñibilizados polo X-window.
O feito de o Unix posuír o xestor de exhibición (X-window) separado do xestor de xanelas tornou posíbel o xurdimento de decenas de xestores de xanelas diferentes. Os xestores de xanelas máis comuns no mundo Unix son o Motif, Open Look, e o CDE. Tamén existen outros xestores de xanelas que son bastante utilizados no Unix, principalmente nos sistemas Unix-Like (clones do Unix sen posuír a marca UNIX®). Son eles: KDE, Gnome, FVWM, BlackBox, Enlightenment, Window Maker etc.