2.
soporte del sistema operativo
2.1 Instalación
y Configuración del Sistema Operativo
Instalación
de Windows Xp
Ejecución
del programa de instalación de Windows XP. El Asistente para la instalación de
Windows XP recopila información, como la configuración regional, nombres y
contraseñas. A continuación, el asistente copia los archivos correspondientes
al disco duro, comprueba el hardware y configura la instalación. Cuando la
instalación se haya completado, podrá iniciar sesión en Windows XP Professional.
Tenga en cuenta que el equipo se reiniciará varias veces durante el proceso.
La
forma de iniciar el Asistente para la instalación de Windows XP depende de si
va a realizar una actualización o va a instalar una copia nueva de Windows.
Elija un método de instalación, vaya a la sección correspondiente de estas
notas de la versión y, después, siga el procedimiento de instalación que ha
elegido.
Si
va a instalar una copia nueva (instalación limpia)
Si
el disco duro del equipo está en blanco o el sistema operativo actual no es
compatible, debe iniciar el equipo con el disco compacto de Windows XP
Professional. Algunas unidades de CD-ROM pueden iniciar la instalación desde el
disco compacto y ejecutar automáticamente el Asistente para la instalación de Windows
XP.
>>>
Para instalar una copia nueva mediante el disco compacto:
1.
Inicie el equipo con el sistema operativo actual e inserte el disco compacto de
Windows XP Professional en la unidad de CD-ROM.
2.
Si Windows detecta el disco compacto automáticamente, haga clic en Instalar
Windows. Se iniciará el Asistente para la instalación de Windows XP. Si Windows
no detecta automáticamente el disco compacto, haga clic en Inicio y, después,
en Ejecutar. Escriba la siguiente ruta de acceso al archivo de instalación; si
es necesario, reemplace "d" por la letra de su unidad de CD-ROM:
d:\setup.exe
3.
Presione ENTRAR.
4.
Cuando se le pida que elija un tipo de instalación, seleccione Instalación
nueva y, después, haga clic en Siguiente.
5.
Siga las instrucciones que aparecen en la pantalla.
>>>
Para instalar una copia nueva mediante una conexión de red:
1.
Con el sistema operativo actual, establezca la conexión con la carpeta de red
compartida que contiene los archivos del programa de instalación. También puede
utilizar un disco MS-DOS(r) o de instalación de red para conectarse al servidor
de red si el disco contiene software de cliente de red. El administrador de la
red le podrá proporcionar esta ruta de acceso.
2.
Si el equipo ejecuta actualmente Windows 98, Windows Millennium Edition o una
versión anterior de Windows NT, en el símbolo del sistema, escriba la ruta de
acceso al archivo setup.exe.
3.
Presione ENTRAR.
4.
Siga las instrucciones que aparecen en la pantalla.
Si
va a actualizar
El
proceso de actualización es sencillo. El Asistente para la instalación de
Windows XP detecta e instala los controladores adecuados, o crea un informe
acerca de los dispositivos que no se pudieron actualizar para que sepa con
seguridad que su hardware y software son compatibles con Windows XP
Professional.
>>>
Para actualizar desde el disco compacto:
1.
Inicie el equipo con el sistema operativo actual e inserte el disco compacto de
Windows XP Professional en la unidad de CD-ROM.
2.
Si Windows detecta automáticamente el disco compacto, aparecerá el cuadro de
diálogo del disco compacto de Windows XP Professional. Para iniciar la
actualización, haga clic en Instalar Windows.
Si Windows no detecta automáticamente el disco compacto, haga clic en
Inicio y, después, en Ejecutar. A continuación, escriba la ruta de acceso al
archivo de instalación; si es necesario, reemplace "d" por la letra
de su unidad de CD-ROM: d:\setup.exe
3.
Presione ENTRAR.
4.
Cuando se le pida que elija un tipo de instalación, seleccione Actualizar y,
después, haga clic en Siguiente.
5.
Siga las instrucciones que aparecen en la pantalla.
>>>
Para actualizar desde una conexión de red:
1.
Con el sistema operativo existente, establezca una conexión con la carpeta de
red compartida que contiene los archivos del programa de instalación. Si
dispone de un disco MS-DOS o de instalación de red que contenga software de
cliente de red, puede utilizar ese disco para conectar con la carpeta
compartida. El administrador de la red le podrá proporcionar esta ruta de
acceso.
2.
En el símbolo del sistema, escriba la ruta de acceso al archivo setup.exe.
3.
Presione ENTRAR.4. Haga clic en el botón Actualizar, y después, en Siguiente.
5.
Siga las instrucciones que aparecen en la pantalla.
Recopilar
información del usuario y del equipo
El Asistente
para la instalación de Windows XP le ayuda a recopilar información acerca de
usted y su equipo. Aunque gran parte de este proceso de instalación es
automático, es posible que necesite proporcionar cierta información o
seleccionar algunos valores de configuración en las siguientes páginas, en
función de la configuración actual del equipo:
*
Contrato de licencia. Si está de acuerdo con los términos y desea continuar con
el proceso de instalación, seleccione Acepto este contrato.
*
Seleccionar opciones especiales. Puede personalizar la instalación de Windows
XP, el idioma y la configuración de accesibilidad para instalaciones nuevas.
Puede configurar Windows XP para que utilice varias configuraciones regionales
e idiomas.
*
Seleccionar un sistema de archivos. Windows XP Professional puede convertir
automáticamente las particiones del disco duro a NTFS, que es el sistema de
archivos recomendado para Windows XP Professional; también se puede optar por
mantener el sistema de archivos que se utiliza actualmente. Si va a actualizar,
el asistente utilizará el sistema de archivos actual.
*
Configuración regional. Puede cambiar la configuración regional del usuario y
el sistema para los distintos idiomas y regiones.
*
Personalice su software. Puede escribir el nombre completo de la persona y,
opcionalmente, de la organización a quien se concede la licencia de esta copia
de Windows XP Professional.
*
Nombre de equipo y Contraseña de administrador. Escriba un nombre de equipo
único que sea diferente de otros nombres de equipo, grupo de trabajo o dominio
de la red. El asistente propone un nombre de equipo, pero usted puede
cambiarlo.
Durante
la instalación, el asistente crea automáticamente una cuenta de administrador.
Cuando utilice esa cuenta, tendrá todos los derechos sobre la configuración del
equipo y podrá crear cuentas de usuario. Es decir, al iniciar sesión como
administrador después de instalar Windows XP Professional recibirá los
privilegios administrativos necesarios para iniciar sesión y administrar el equipo.
Escriba una contraseña para la cuenta de administrador. Por motivos de
seguridad siempre se debe asignar una contraseña a la cuenta de administrador.
Asegúrese de recordar y proteger la contraseña.
*
Configuración de fecha y hora. Compruebe la fecha y hora de su región,
seleccione la zona horaria adecuada y, después, seleccione si desea que Windows
XP Professional cambie automáticamente el horario de verano.
*
Configuración de red. A menos que sea un usuario avanzado, seleccione la opción
de configuración Típica para la configuración de red. Seleccione la opción de
configuración Personalizada para configurar manualmente los clientes, servicios
y protocolos de red.
*
Grupo de trabajo o dominio del equipo. Durante el proceso de instalación, debe
unirse a un grupo de trabajo o a un dominio. Para obtener más información,
consulte la sección "Proporcionar información de red", posteriormente
en este documento.
*
Asistente para identificación de red. Si su PC está conectado a una red, este
asistente le pedirá que identifique a los usuarios que utilizarán el equipo. Si
especifica que usted será el único usuario, recibirá derechos de administrador.
Proporcionar
información de red
Durante
el proceso de instalación o una vez concluido éste, debe unirse a un grupo de
trabajo o a un dominio. Si no va a trabajar en una red, opte por unirse a un
grupo de trabajo.
Unirse
a un grupo de trabajo
Un
grupo de trabajo se compone de uno o varios equipos con el mismo nombre de
grupo de trabajo (por ejemplo, una red "de igual a igual"). Cualquier
usuario puede unirse a un grupo de trabajo si especifica el nombre del grupo de
trabajo, ya que no es necesario tener permisos especiales para unirse a un
grupo de trabajo. Debe proporcionar el nombre de un grupo de trabajo nuevo o
existente, o puede utilizar el nombre que sugiere el Asistente para la
instalación de Windows XP.
2.2
Núcleo del S.O. (kernel)
Definición:
Según
la teoría clásica de sistemas operativos entendemos que un S.O. es como un
intermediario entre los programas de usuario y el hardware, es decir el
software encargado de proporcionar el entorno necesario dónde será posible
ejecutar otros programas. Cada aplicación de usuario se ejecuta sobre la
máquina utilizando los que llamamos un proceso (que podría entenderse como un
programa en ejecución). Pero es necesario ser consciente de que existe mucho
bajo del concepto de proceso. No es necesario decir que nuestra máquina,
realmente (como norma general) no posee más que un microprocesador, y este no
es capaz de ejecutar más de una instrucción por ciclo. Sin embargo todo el que
ha trabajado con cualquier sistema operativo medianamente serio a sido capaz de
simultanear entre varias aplicaciones y tenerlas ejecutando en paralelo. ¿ Cómo
es esto posible ? o mejor dicho ¿ Quién es el responsable de que esto ocurra ?
Imaginemos
por un momento una carrera de tortugas con varios carriles por dónde circularán
para intentar obtener la victoria. Ahora, sin embargo, sólo existe un carril
por dónde, evidentemente, sólo puede circular una tortuga en un momento
determinado. En esta extraña competición se nos encarga la ardua tarea de
gestionar ese único carril para que las tortugas puedan correr en él y efectuar
una competición digna. Podríamos hacer lo siguiente: tomamos una tortuga al
azar y la colocamos en la línea de partida, esta comenzará a moverse; tras un
período fijado de tiempo anotamos su posición, la sacamos y tomando de nuevo
otra aleatoriamente para colocarla en la línea de partida. Si utilizamos el
mismo intervalo de tiempo y procuramos que todas las tortugas puedan acceder a
la pista por igual (colocándolas haciendo cola por ejemplo) podríamos simular
una carrera con un sólo carril.
Esta
pequeña metáfora refleja una de las funciones del núcleo de un sistema
operativo, el planificador de procesos. Pretendemos mostrar al sistema
operativo como el software encargado de proporcionar el soporte necesario para
habilitar la ejecución de aplicaciones y compartición de recursos como la
memoria o la CPU (el único carril de nuestro circuito).
Podemos
definir un kernel entonces como el software que constituye el núcleo del
sistema operativo, dónde se realizan las funcionalidades básicas como la
gestión de procesos, la gestión de memoria y de entrada salida. Pero entonces,
¿un kernel es en sí un sistema operativo? No realmente, depende de la
definición de sistema operativo. Hay quién afirma que el shell también forma
parte de él. Desde nuestro punto de vista la pregunta anterior no es cierta,
dado que existen otros conceptos que iremos comprendiendo a lo largo del
artículo y que constituyen, en sí mismos piezas fundamentales del sistema
operativo.
El
kernel ó núcleo en linux se puede definir como el corazón de este sistema
operativo. Es el encargado de que el software y el hardware de la computadora
puedan trabajar juntos.
Las
funciones más importantes del mismo, aunque no las únicas, son:
*
Administración de la memoria para todos los programas y procesos en ejecución.
*
Administración del tiempo de procesador que los programas y procesos en
ejecucion utilizan.
* Es
el encargado de que podamos acceder a los periféricos/elementos de nuestro
ordenador de una manera cómoda.
Tipos
de kernel
En
función del tamaño y de las funcionalidades que posea el kernel podemos
clasificarlo. Realmente, y pese a seguidores incondicionales en un modelo u
otro, existe una tendencia básica a reducir el tamaño del núcleo proporcionando
menos funcionalidades, que son desplazadas a módulos que se cargan en tiempo de
ejecución.
En
función a esta idea tenemos tres tipos fundamentales de kernel:
Kernel
monolítico.
Todas
las funcionalidades posibles están integradas en el sistema. Se trata de un
programa de tamaño considerable que deberemos recompilar al completo cada vez
que queramos añadir una nueva posibilidad. Esta es la estructura original de
Linux. Por tratarse de una técnica clásica y desfasada el creador de Linux fue
muy criticado.
Kernel
modular.
Se
trata de la tendencia actual de desarrollo. En el kernel se centran la
funcionalidades esenciales como la administración de memoria, la planificación
de procesos, etc. Sin embargo no tiene sentido que el núcleo de un sistema
operativo englobe toda la parafernalia para comunicarse con todas las posibles
de tarjetas de vídeo o de sonido. En otros sistemas operativos esto se
soluciona con unos ficheros proporcionados por el fabricante llamados drivers.
En Linux se creó un interfaz adecuado para posibilitar el desarrollo de módulos
que cumplieran esas funcionalidades. Esos módulos pueden ser compilados por
separado y añadidos al kernel en tiempo de ejecución.
Estructura
de microkernel
Esta
técnica pretende reducir a su mínima expresión el kernel, dejando a los niveles
superiores el resto de las funcionalidades. Existen algunos kernels que lo
utilizan, si bien el que centra nuestra atención es Hurd. Se trata del último
kernel GNU llamado a sustituir a Linux como núcleo del sistema operativo.
Aunque esta estrategia de diseño es tan antigua como la modular, no ha sido
tenida en cuenta hasta ahora debido a las limitaciones de rendimiento que
tenía.
2.3
Modos de ejecución
Modo
usuario y modo núcleo
El
núcleo reside permanentemente en memoria principal así como el proceso
actualmente en ejecución también denominado proceso actual (o partes del mismo,
por lo menos). Cuando se compila un programa, el compilador genera un conjunto
de direcciones de memoria asociadas al programa que representan las direcciones
de las variables y de las estructuras de datos, o las direcciones de
instrucciones como por ejemplo funciones. El compilador genera las direcciones
para una máquina virtual considerando que ningún otro programa sería ejecutado
simultáneamente en la máquina física.
Cuando
un programa se ejecuta en la máquina, el núcleo le asigna espacio en memoria
principal, pero las direcciones virtuales generadas por el compilador no
necesitan ser idénticas a las direcciones físicas que ocupan en la máquina. El
núcleo se coordina con el hardware de la máquina para traducir las direcciones
virtuales a direcciones físicas. Esta traducción depende de las capacidades del
hardware de la máquina, y en consecuencia las partes del sistema UNIX que se
ocupan de la misma son dependientes de la máquina.
Con
el objetivo de poder implementar una protección eficiente del espacio de
direcciones de memoria asociado al núcleo y de los espacios de direcciones
asociados a cada proceso, la ejecución de los procesos en un sistema UNIX está
dividida en dos modos de ejecución: un modo de mayor privilegio denominado modo
núcleo o supervisor y otro modo de menor privilegio denominado modo usuario.
Un
proceso ejecutándose en modo usuario sólo puede acceder a unas partes de su
propio espacio de direcciones (código, datos y pila). Sin embargo, no puede
acceder a otras partes de su propio espacio de direcciones, como aquellas
reservadas para estructuras de datos asociadas al proceso usadas por el núcleo.
Tampoco puede acceder al espacio de direcciones de otros procesos o del mismo
núcleo. De esta forma se evita una posible corrupción de los mismos.
Por
otra parte, un proceso ejecutándose en modo núcleo puede acceder a su propio
espacio de direcciones al completo y al espacio de direcciones del núcleo, pero
no puede acceder al espacio de direcciones de otros procesos. Debe quedar claro
que cuando se dice que un proceso se está ejecutando en modo núcleo, en
realidad el que se está ejecutando es el núcleo pero en el nombre del proceso.
Por ejemplo, cuando un proceso en modo usuario realiza una llamada al sistema
está pidiendo al núcleo que realice en su nombre determinadas operaciones con
el hardware de la máquina.
Entre
los principales casos que producen que un proceso ejecutándose en modo usuario
pase a ejecutarse en modo núcleo se encuentran: las llamadas al sistema, las
interrupciones (hardware o software) y las excepciones.
Tipos
de procesos
Los
procesos en el sistema UNIX pueden ser de tres tipos: procesos de usuario,
procesos demonio y procesos del núcleo o del sistema.
Los
procesos de usuario son aquellos procesos asociados a un determinado usuario.
Se ejecutan en modo usuario excepto cuando realizan llamadas al sistema para
acceder a los recursos del sistema, que pasan a ser ejecutados en modo núcleo.
Los procesos
demonio no están asociados a ningún usuario. Al igual que los proceso de
usuario, son ejecutados en modo usuario excepto cuando realizan llamadas al
sistema que pasan a ser ejecutados en modo núcleo. Los procesos demonio
realizan tareas periódicas relacionadas con la administración del sistema, como
por ejemplo: la administración y control de redes, la ejecución de actividades
dependientes del tiempo, la administración de trabajos en las impresoras en
línea, etc.
Los
procesos del núcleo no están asociados a ningún usuario. Se ejecutan
exclusivamente en modo núcleo. Son similares a los procesos demonio en el
sentido de que realizan tareas de administración del sistema, como por ejemplo,
el intercambio de procesos (proceso intercambiador) o de páginas (proceso
ladrón de páginas) a memoria secundaria. Su principal ventaja respecto a los
procesos demonio es que poseen un mayor control sobre sus prioridades de
planificación puesto que su código es parte del núcleo. Por ello pueden acceder
directamente a los algoritmos y estructuras de datos del núcleo sin hacer uso
de las llamadas al sistema, en consecuencia son extremadamente potentes. Sin
embargo no son tan flexibles como los procesos demonio, ya que para
modificarlos se debe de recompilar el núcleo.
Interrupciones
y Excepciones
El
sistema UNIX permite al reloj del sistema, a los periféricos de E/S o a los
terminales interrumpir a la CPU mientras se está ejecutando un proceso. Estos
dispositivos usan el mecanismo de interrupciones para notificar al núcleo que
se ha completado una operación de E/S o que se ha producido un cambio en su
estado. Así, las interrupciones hardware son eventos asíncronos que ocurren
entre la ejecución de dos instrucciones de un proceso y pueden estar asociadas
a eventos totalmente ajenos a la ejecución del proceso actualmente en
ejecución.
Las
interrupciones software o traps, se producen al ejecutar ciertas instrucciones
especiales y son tratadas de forma síncrona. Son utilizadas, por ejemplo, en
las llamadas al sistema, en los cambios de contexto, en tareas de baja
prioridad de planificación asociadas con el reloj del sistema, etc.
Las
excepciones hacen referencia a la aparición de eventos síncronos inesperados,
típicamente errores, causados por la ejecución de un proceso, como por ejemplo,
el acceso a una dirección de memoria ilegal, el rebose de la pila de usuario,
el intento de ejecución de instrucciones privilegiadas, la realización de una
división por cero, etc. Las excepciones se producen durante el transcurso de la
ejecución de una instrucción.
Tanto
las interrupciones (hardware o software) como las excepciones son tratadas en
modo núcleo por determinadas rutinas del núcleo, no por procesos del núcleo.
Puesto
que existen diferentes eventos que pueden causar una interrupción, puede
suceder que llegue una petición de interrupción mientras otra interrupción está
siendo atendida. Por lo tanto es necesaria asignar a cada tipo de interrupción
un determinado nivel de prioridad de interrupción (npi) o nivel de ejecución
del procesador. De tal forma que las interrupciones de mayor npi tenga
preferencia sobre las de menor npi. Por ejemplo, una interrupción del reloj de
la máquina debe tener preferencia sobre una interrupción de un dispositivo de
red, puesto que ésta última requerirá un mayor tiempo de uso de la CPU, varios
tics de reloj, para ser atendida.
El
npi se almacena en un campo del registro de estado del procesador. Las
computadoras típicamente poseen un conjunto de instrucciones privilegiadas para
comparar y configurar el npi a un determinado valor. Además el núcleo también
dispone de rutinas, típicamente implementadas como macros por motivos de
eficiencia, para explícitamente comprobar o configurar el npi.
Cuando
el núcleo se encuentra realizando ciertas actividades críticas para el correcto
funcionamiento del sistema no debe atender ciertos tipos de interrupciones para
evitar la corrupción de determinadas estructuras de datos. Para ello, fija el
npi a un determinado valor. Así las interrupciones del mismo nivel o de niveles
inferiores quedan enmascaras o bloqueadas, por lo que sólo se atenderán las
interrupciones de los niveles superiores.
El
número de niveles de prioridad de interrupción permitidos depende de cada
distribución de UNIX. Usualmente, el menor npi es 0.
2.4 Llamadas al Sistema
En
Computación, llamada al sistema o System Call, en inglés, es el mecanismo usado
por un programa aplicativo para solicitar un servicio al Sistema Operativo.
Las
llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa
que el procesador transfiera el control a un código privilegiado, previamente
especificado por el mismo código. Esto permite al código privilegiado
especificar donde él va a ser conectado así como el estado del procesador.
Cuando
una llamada al sistema es invocada, la ejecución del programa que invoca es
interrumpida y sus datos son guardados, normalmente en su PCB, para poder
continuar ejecutándose luego. El procesador entonces comienza a ejecutar las
instrucciones de código de alto nivel de privilegio, para realizar la tarea
requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su
ejecución. El retorno al proceso demandante no obligatoriamente es inmediato,
depende del tiempo de ejecución de la llamada al sistema y del algoritmo de
planificación de CPU.
La
implementación de las llamadas al sistema requiere un control de transferencia
que involucra características específicas de la arquitectura del procesador.
Una forma típica de implementar es usar una interrupción por software. Linux
usa esta implementación en la arquitectura x86.
Las
llamadas al sistema proveen una interfaz entre los procesos y el Sistema de
Operación. Por lo general estas llamadas se encuentran disponibles como
instrucciones en lenguaje ensamblable. En algunos sistemas podemos realizar
llamadas al sistema desde programas en lenguajes de alto nivel, en cuyo caso se
asemejan a llamadas a funciones o procedimientos.
Las
llamadas al sistema
Ya
se ha comentado que el sistema operativo es una interfaz que oculta las peculiaridades
del hardware. Para ello ofrece una serie de servicios que constituyen una
máquina virtual más fácil de usar que el hardware básico. Estos servicios se
solicitan mediante llamadas al sistema.
La
forma en que se realiza una llamada al sistema consiste en colocar una serie de
parámetros en un lugar específico (como los registros del procesador), para
después ejecutar una instrucción del lenguaje máquina del procesador denominada
trap (en castellano, trampa).
La ejecución de esta instrucción máquina hace que
el hardware guarde el contador de programa y la palabra de estado del
procesador (PSW, Processor Status Word) en un lugar seguro de la memoria,
cargándose un nuevo contador de programa y una nueva PSW. Este nuevo contador
de programa contiene una dirección de memoria donde reside una parte (un
programa) del sistema operativo, el cual se encarga de llevar a cabo el
servicio solicitado. Cuando el sistema operativo finaliza el servicio, coloca
un código de estado en un registro para indicar si hubo éxito o fracaso, y
ejecuta una instrucción return from trap, esta instrucción provoca que el
hardware restituya el contador de programa y la PSW del programa que realizó la
llamada al sistema, prosiguiéndose así su ejecución.
Normalmente
los lenguajes de alto nivel tienen una (o varias) rutinas de biblioteca por
cada llamada al sistema. Dentro de estos procedimientos se aísla el código
(normalmente en ensamblador) correspondiente a la carga de registros con
parámetros, a la instrucción trap, y a obtener el código de estado a partir de
un registro. La finalidad de estos procedimientos de biblioteca es ocultar los
detalles de la llamada al sistema, ofreciendo una interfaz de llamada al
procedimiento. Como una llamada al sistema depende del hardware (por ejemplo,
del tipo de registros del procesador), la utilización de rutinas de biblioteca
hace el código portable.
El
número y tipo de llamadas al sistema varía de un sistema operativo a otro.
Existen, por lo general, llamadas al sistema para ejecutar ficheros que
contienen programas, pedir más memoria dinámica para un programa, realizar
labores de E/S (como la lectura de un carácter de un terminal), crear un
directorio, etc. Ejemplos de rutinas de biblioteca que realizan llamadas al
sistema en un entorno del sistema operativo C-UNIX son: read, write, malloc,
exec, etc.
2.5
ANSI C
A
finales de la década de 1970, C empezó a sustituir a BASIC como lenguaje de
programación de microcomputadores predominante. Durante la década de 1980 se
empezó a usar en los IBM PC, lo que incrementó su popularidad
significativamente. Al mismo tiempo, Bjarne Stroustrup empezó a trabajar con
algunos compañeros de Bell Labs para añadir funcionalidades de programación
orientada a objetos a C. El lenguaje que crearon, llamado C++, es hoy en día el
lenguaje de programación de aplicaciones más común en el sistema operativo
Microsoft Windows; mientras que C sigue siendo más popular en el entorno Unix.
Otro lenguaje que se desarrolló en esa época, Objective C, también añadió
características de programación orientada a objetos a C. Aunque hoy en día no
es tan popular como C++, se usa para desarrollar aplicaciones Cocoa para Mac OS
X.
En
1983, el Instituto Nacional Estadounidense de Estándares organizó un comité,
X3j11, para establecer una especificación estándar de C. Tras un proceso largo
y arduo, se completó el estándar en 1989 y se ratificó como el "Lenguaje
de Programación C" ANSI X3.159-1989. Esta versión del lenguaje se conoce a
menudo como ANSI C, o a veces como C89 (para distinguirla de C99).
En
1990, el estándar ANSI (con algunas modificaciones menores) fue adoptado por la
Organización Internacional para la Estandarización (ISO) en el estándar ISO/IEC
9899:1990. Esta versión se conoce a veces como C90. No obstante,
"C89" y "C90" se refieren en esencia al mismo lenguaje.
Uno
de los objetivos del proceso de estandarización del ANSI C fue producir una
extensión al C de Kernighan y Ritchie, incorporando muchas funcionalidades no
oficiales. Sin embargo, el comité de estandarización incluyó también muchas
funcionalidades nuevas, como prototipos de función, y un preprocesador
mejorado. También se cambió la sintaxis de la declaración de parámetros para
hacerla semejante a la empleada habitualmente en C++:
main(argc,
argv)
int
argc;
char **argv;
{
...
}pasó a ser
int
main(int argc, char *argv[])
{ ...
}
ANSI
C está soportado hoy en día por casi la totalidad de los compiladores. La
mayoría del código C que se escribe actualmente está basado en ANSI C.
Cualquier programa escrito sólo en C estándar sin código que dependa de un
hardware determinado funciona correctamente en cualquier plataforma que
disponga de una implementación de C compatible. Sin embargo, muchos programas
han sido escritos de forma que sólo pueden compilarse en una cierta plataforma,
o con un compilador concreto, esto puede ser debido a diversos motivos:
* La
utilización de bibliotecas no estándar, como interfaces gráficos de usuario.
* El
uso de compiladores que no cumplen las especificaciones del estándar.
* El
uso de tipos de datos suponiendo que tendrán el mismo tamaño u orden de los
bits en todas las plataformas.La macro __STDC__ puede usarse para dividir el
código en secciones ANSI y K&R para el compilador.
#if
__STDC__
extern
int getopt(int,char * const *,const char *);
#else
extern
int getopt();
#endif
2.6
IEEE POXIS
No hay comentarios:
Publicar un comentario