Light Mode

Saltar ao contido

UNIX

Na Galipedia, a Wikipedia en galego.
(Redireccion desde <<Unix>>)
UNIX
Instancia de
Subclase de
Eponimo
Influido por
Historia
Implicados
Caracteristicas
Linguaxe de programacion
Datas
Fundacion / creacion
1969
Cronoloxia
Precedido por
Sucedido por
Identificadores
VIAF173851322
Freebase/m/07scx
OpenAlexC112968700
Fontes e ligazons
Paxina WEB
Wikidata C:Commons

UNIX e un sistema operativo portabel, multitarefa e multiusuario orixinalmente desenvolvido por Ken Thompson, que traballaba nos Laboratorios Bell (Bell Labs) da AT&T. A marca UNIX e unha propiedade do The Open Group, un consorcio formado por empresas de informatica.

UNIX foi moi importante, sobre todo no mundo empresarial, debido principalmente a sua fiabilidade e a seguridade que achega cando se traballa nun contorno de rede.

En 1965 formouse un grupo de programadores, incluindo 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 teria que ser un sistema de tempo compartido para unha grande comunidade de usuarios. Non obstante, os recursos computacionais disponibeis na epoca, particularmente os do computador utilizado, un GE 645, revelaronse insuficientes para as pretensions do proxecto. En 1969, a Bell retirouse do proxecto, citando duas razons principais: a primeira, que tres institucions con obxectivos dispares dificilmente acadarian unha solucion satisfactoria para cada unha delas (o MIT facia investigacion, AT&T monopolizaba os servizos de telefonia americanos e a GE queria vender computadores); a segunda razon citada era que os participantes sufrian da "sindrome do segundo proxecto" e, por iso, querian incluir no Multics todo aquilo que fora excluido dos sistemas experimentais ata enton desenvolvidos.

Con todo, en 1969, Ken Thompson, usando un computador PDP-7 ocioso, comezou a reescribir o Multics cun concepto menos cobizoso, ao que chamou Unics, usando linguaxe ensambladora (assembly). Mais tarde, Brian Kernighan mudou o nome do novo sistema para UNIX.

Un marco importante foi estabelecido en 1973,[1] cando Dennis Ritchie e Ken Thompson reescribiron o UNIX usando a linguaxe de programacion C para un computador PDP-11. A linguaxe C fora desenvolvida por Ritchie para substituir e superar as limitacions da linguaxe de programacion B, desenvolvida por Thompson. O seu uso e considerado como unha das principais razons para a rapida difusion do UNIX.

Ao longo dos anos 70 e 80 desenvolveronse as primeiras distribucions de gran dimension, como os sistemas BSD (na Universidade de Berkeley en California) e, mais tarde, os System III e System V (nos Bell Labs).

En 1977, a AT&T comezou a fornecer UNIX para institucions comerciais. A abertura do mercado comercial para UNIX debe moito a Peter Weiner - cientifico de Yale e fundador da Interactive System Corporation. Weiner conseguiu da AT&T, enton xa espida do seu monopolio nas comunicacions e libre para actuar no mercado de software, licenza para migrar e comercializar UNIX para o computador Interdata 8/32 para contorno de escritorio. O UNIX saia da lina das maquinas PDP, da Digital Equipment Corporation (DEC), demostrando a relativa facilidade de migracion (transporte) para outros computadores, e que, en parte, debeuse ao uso da linguaxe C. O exito da Interactive de Weiner co seu produto probou que UNIX era vendibel e encoraxou a outros fabricantes a seguiren o mesmo curso. Iniciabase a abertura do chamado mercado UNIX.

Coa crecente oferta de microcomputadores, outras empresas migraron o UNIX para novas maquinas. Debido a disponibilidade das fontes do UNIX e a sua simplicidade, moitos fabricantes alteraron o sistema, xerando variantes personalizadas a partir do UNIX basico licenciado pola AT&T. De 1977 a 1981, a AT&T integrou moitas variantes no primeiro sistema UNIX comercial chamado System III. En 1983, apos engadir varios melloramentos ao System III, a AT&T presentaba o novo UNIX comercial, agora chamado System V. Hoxe en dia, o UNIX System V e o padron internacional de feito no mercado UNIX, constando das licitacions de compra de equipamentos de grandes clientes na America, Europa e Asia.

Actualmente, UNIX (ou *nix) e 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 padrons como o POSIX (Portable Operating System Interface) e outros. Alguns dos sistemas operativos derivados do UNIX son: BSD (FreeBSD, OpenBSD e NetBSD ), Solaris (anteriormente conecido por SunOS), IRIX, AIX, HP-UX, Tru64, Linux (nas suas centenas de distribucions), Mac OS X (baseado nun kernel Mach BSD chamado Darwin ). Existen mais de corenta sistemas operativos *nix, desde celulares a supercomputadores, de reloxos de pulso a sistemas mainframe.

Caracteristicas

[editar | editar a fonte]

Sistema operativo multitarefa

[editar | editar a fonte]

Multitarefa significa executar unha ou mais tarefas ou procesos simultaneamente. En verdade, ter varios procesos en execucion significa dicir que son executados secuencialmente de forma tan rapida que todos eles parecen estar sendo executados simultaneamente. O UNIX escala a execucion deles e reservalles recursos do computador (intervalo de tempo de procesamento, espazo en memoria RAM e un espazo no disco rixido).

O UNIX e un sistema operativo de multitarefa preventiva. Iso significa que, cando se esgota un determinado intervalo de tempo (chamado cuanto), o UNIX suspende a execucion do proceso, salva o seu contexto (informacions necesarias para a execucion do proceso) para que poida ser retomado posteriormente, e coloca en execucion o proximo proceso da fila de espera. O UNIX tamen determina cando sera executado cada proceso, a duracion da sua execucion e a sua prioridade sobre os outros.

A multitarefa fai non so que o conxunto de tarefas sexa executado mais rapidamente, mais tamen que o usuario e o computador fiquen libres para realizaren outras tarefas co tempo economizado.

Sistema operativo multiusuario

[editar | editar a fonte]

Unha caracteristica importante do UNIX e ser multiusuario. Bovet e Cesati definen un sistema multiusuario como "aquel capaz de executar, concorrente e independentemente, varias aplicacions pertencentes a dous ou mais 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 rato. Varios terminais poden ser conectados ao mesmo computador nun sistema UNIX. Hai alguns anos eran usadas conexions serie, pero actualmente e mais comun o uso de redes locais, principalmente para o uso de terminais graficos (ou terminais X), usando o protocolo XDMCP.

O UNIX xestiona os pedidos que os usuarios fan, evitando que un interfira con outros. Cada usuario posue dereitos de propiedade e permisos sobre ficheiros. Calquera ficheiro modificado polo usuario conservaran eses dereitos. Programas executados por un usuario comun estaran limitados en termos de a cales ficheiros poderan acceder.

O sistema UNIX posue dous tipos de usuarios: o usuario root (tamen conecido como superusuario, ou admin), que posue a mision de administrar o sistema, podendo manipular todolos recursos do sistema operativo; e os usuarios comuns, que posuen dereitos limitados.

Para que o sistema opere adecuadamente en modo multiusuario, existen alguns mecanismos: (i) un sistema de autenticacion para identificacion 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 permisions e propiedades sobre arquivos (os dereitos anteriormente citados); (iii) proteccion de memoria, impedindo que un proceso de usuario acceda a dados ou interfira con outro proceso. Ese ultimo mecanismo e implementado coa axuda do hardware, que consiste na division do ambiente de procesamento e memoria en modo supervisor (ou modo kernel) e modo usuario.

Estrutura

[editar | editar a fonte]

Un sistema UNIX consiste, basicamente, en duas partes:

  • kernel - o nucleo 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 interrupcions). O acceso ao kernel, polas aplicacions, e feita por chamadas ao sistema, que son funcions fornecidas polo kernel; esas funcions son acesas polas bibliotecas de sistema (LibC).
  • programas de sistema - son aplicacions, 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 ficheiros, controlar procesos etc.
  • Ambiente grafico (GUI) graphics user interface - eventualmente utilizase tamen un ambiente grafico para facilitar a interaccion do usuario co sistema.

Nun sistema UNIX, o espazo de memoria utilizado polo kernel e denominado espazo do kernel ou supervisor (kernel space); a area de memoria para os outros programas e denominada espazo do usuario (user space). Esa separacion e un mecanismo de proteccion que impide que programas comuns interfiron co sistema operativo.

Un proceso, na vision mais simple, e unha instancia dun programa en execucion. Un programa, para ser executado, debe ser cargado en memoria; a area de memoria utilizada e dividida en tres partes: codigo (text), dados inicializados (data) e pila (stack).

Por ser un sistema multitarefa, o UNIX utiliza unha estrutura chamada taboa de procesos, que conten informacions sobre cada proceso, tales como: identificacion do proceso (PID), dono, area de memoria utilizada, estado (status). Apenas un proceso pode ocupar o procesador en cada instante - o proceso encontrase no estado "executando" (running). Os outros procesos poden estar "prontos" (ready), agardando na fila de procesos, ou enton estan "durmindo" (asleep), esperando algunha condicion que permita a sua execucion.

Un proceso en execucion pode ser retirado do procesador por duas razons: (i) necesita accesar algun recurso, facendo unha chamada ao sistema - neste caso, apos a sua retirada do procesador, o seu estado sera alterado para "durmindo", ata que o recurso sexa liberado polo kernel; (ii) o kernel pode interromper o proceso (preempcion) - neste caso, o proceso ira para a fila de procesos (estado "pronto"), agardando nova oportunidade para executar - ben porque a porcion 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 e usada para criar un novo proceso, que ira executar o mesmo codigo (programa) do programa chamador (proceso-pai); exec ira determinar o codigo a ser executado polo proceso chamado (proceso-fillo); exit termina o proceso; wait fai a sincronizacion entre a finalizacion do proceso-fillo e o proceso-pai.

Sistema de arquivos

[editar | editar a fonte]

Sistema de arquivos e unha estrutura loxica que posibilita o almacenamento e recuperacion de arquivos. No UNIX, os arquivos son contidos en directorios (ou cartafoles), os cales son conectados nunha arbore que comeza no directorio raiz (designado por /). Mesmo os arquivos que se encontran en dispositivos de almacenamento diferentes (discos rixidos, disquetes, CDs, DVDs, sistemas de arquivos en rede) precisan ser conectados a arbore para que o seu contido poida ser accesado. Cada dispositivo de almacenamento posue a sua propia arbore de directorios.

O proceso de conectar a arbore de directorios dun dispositivo de almacenamento a arbore de directorios raiz e chamado "montar dispositivo de almacenamento" (montaxe) e e realizado por medio do comando mount. A montaxe asocia o dispositivo a un subdirectorio.

Estrutura de directorios

[editar | editar a fonte]

A arbore de directorios do UNIX e dividida en varias ramificacions menores e pode variar dunha version a outra. Os directorios mais comuns son os seguintes:

/ -- Directorio raiz - este e o directorio principal do sistema. Dentro del estan todos os directorios do sistema.
/bin -- Conten arquivos programas do sistema que son usados con frecuencia polos usuarios.
/boot -- Conten arquivos necesarios para a inicializacion do sistema.
/dev -- Conten arquivos usados para accesar dispositivos (perifericos) existentes no computador.
/etc -- Arquivos de configuracion de seu computador local.
/home -- Directorios contendo os arquivos dos usuarios.
/lib -- Bibliotecas compartidas polos programas do sistema e modulos do kernel.
/mnt -- Directorio de montaxe de dispositivos.
/mnt/cdron -- Subdirectorio onde son montados os CD. Apos a montaxe, o contido do CD se encontrara dentro deste directorio.
/mnt/floopy -- Subdirectorio onde son montados os disquetes. Apos a montaxe, o contido do disquete se encontrara dentro deste directorio.
/proc -- Sistema de arquivos do kernel. Este directorio non existe, e colocado aqui polo kernel e usado por diversos programas.
/root -- Directorio do usuario root.
/sbin -- Directorio de programas usados polo superusuario (root) para administracion e control do funcionamento do sistema.
/tmp -- Directorio para almacenamento de arquivos temporais criados por programas.
/usr -- Conten a meirande parte dos programas. Normalmente accesibel soamente como lectura.
/var -- Conten a meirande parte dos arquivos que son gravados con frecuencia polos programas do sistema.

Particularidades

[editar | editar a fonte]

Un sistema UNIX e orientado a arquivos, case todo nel e arquivo. Os seus comandos son en verdade arquivos executabeis, que son encontrados en lugares previsibeis na sua arbore de directorios, e ata mesmo a comunicacion entre entidades e procesos e feita por estruturas parecidas con arquivos. O acceso a arquivos e organizado a traves de propiedades e proteccions. Toda a seguranza do sistema depende, en gran parte, da combinacion entre as propiedades e proteccions definidas nos seus arquivos e as suas contas de usuarios.

O problema do ano 2038

[editar | editar a fonte]

UNIX conta o valor do tempo do sistema como o numero de segundos a partir da media noite do 1 de xaneiro de 1970 (a "UNIX Epoch"). Este valor de tempo e almacenado en variables de tipo time t, que se definiu como "enteiro con signo, de 32 bits". O 19 de xaneiro de 2038, este valor de tempo acadara o valor binario dun 1 seguido de 31 ceros (10000000000000000000000000000000), o que implicara o reseteo do tempo ao ano 1901 ou ao 1970, dependendo de como trate a implementacion o bit de signo (o 1 mais a esquerda). Xa que moitas aplicacions utilizan as bibliotecas do sistema operativo para o calculo de datas futuras, o impacto disto podese notar moito mais cedo que 2038; asi, existe o risco de que as hipotecas a 30 anos se calculen de forma incorrecta a partir do ano 2008.

Posto que as datas anteriores a 1970 moi raramente se representan en tempo UNIX, unha posible solucion que e compatible co formato de 32 bits existente seria redefinir o time_t como "enteiro sen signo, de 32 bits", ainda que isto soamente posponeria o problema ata o 7 de febreiro do 2106, e implicaria a revision de todas as implementacions do tratamento de valores de time_t. Algunhas versions de UNIX xa tratan isto. Por exemplo, en Solaris de 64-bits, o time_t usa 64 bits, permitindo chegar a 292.000 millons de anos.

Aplicacions

[editar | editar a fonte]

O UNIX permite a execucion de paquetes de software de aplicacion para apoio das diversas actividades empresariais. Entre estes paquetes destacanse:

  • xeradores graficos
  • planillas electronicas
  • procesadores de textos
  • xeradores de aplicacions
  • linguaxes de 4deg xeracion
  • bases de dado

O UNIX posue recursos de apoio a comunicacion de dados, que proporcionan a sua integracion con outros sistemas UNIX, e ata con outros sistemas operativos distintos. A integracion con sistemas heteroxeneos permite as seguintes facilidades:

  • compartimento de recursos e informacions
  • transferencia de informacions
  • comunicacion entre usuarios remotos
  • submision de programas para seren executados en computadores remotos
  • utilizacion dos terminais dunha maquina UNIX como terminais doutras maquinas remotas, mesmo con sistemas operativos distintos.

Para ultima, o UNIX ofrece un ambiente integrado e amigabel, orientado a xestion automatizada de escritorio, con servizos que atenderan as seguintes areas:

  • arquivo electronico de informacions
  • procesador de documentos
  • axenda e calendario
  • calculadora
  • correo electronico

Ambiente grafico do UNIX

[editar | editar a fonte]

X Window System

[editar | editar a fonte]

Alen do shell , o UNIX soporta interface grafica de usuario. Nas primeiras versions do UNIX as interfaces do usuario eran baseadas apenas en caracteres (modo texto) e o sistema compunase apenas do kernel, de bibliotecas de sistema, do shell e dalgunhas outras aplicacions. As versions mais recentes do UNIX, alen de manteren o shell e os seus comandos, incluen o X Window System que, grazas ao xestor de exhibicion e ao xestor de xanelas, posue unha interface atrainte e intuitiva que aumenta en moito a produtividade do usuario.

Desenvolvido no MIT (Massachusetts Institute of Technology), o X Window System (tamen pode ser chamado X-window) tornouse o sistema grafico do UNIX. O X-window funciona como xestor de exhibicion e por si so, non fai moita cousa. Para termos un ambiente grafico produtivo e completo, precisamos tamen dun xestor de xanelas.

O xestor de xanelas proporciona ao ambiente grafico a aparencia e as funcionalidades esperadas incluindo as bordas das xanelas, botons, truques de rato, menus etc. Como no sistema UNIX o xestor de exhibicion (X Window System) esta separado do xestor de xanelas, dicimos que o seu ambiente grafico e do tipo cliente-servidor. O X-window funciona como servidor e interactua directamente co rato, o teclado e o video. O xestor de xanelas funciona como cliente e aproveitase dos recursos disponibilizados polo X-window.

Debido a que en UNIX o xestor de exhibicion (X-window) esta separado do xestor de xanelas, isto tornou posibel o xurdimento de decenas de xestores de xanelas diferentes. Os xestores de xanelas mais comuns no mundo UNIX son o Motif, Open Look, e o CDE. Tamen existen outros xestores de xanelas que son bastante utilizados no UNIX, principalmente nos sistemas Unix-like (clons do UNIX sen posuir a marca UNIX(r)). Son: KDE, Gnome, FVWM, BlackBox, Enlightenment, Window Maker etc.

  1. | Ritchie, D. M.; Thompson, K. (1974). "The UNIX Time-Sharing System". CACM 17 (7): 365-375. Arquivado dende o orixinal o 30 de decembro de 2005. Consultado o 20 de agosto de 2015.

Vexase tamen

[editar | editar a fonte]

Outros artigos

[editar | editar a fonte]

Ligazons externas

[editar | editar a fonte]