<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://1984.lsi.us.es/wiki-ssoo/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cridelmar1</id>
		<title>Wiki de Sistemas Operativos - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://1984.lsi.us.es/wiki-ssoo/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cridelmar1"/>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php/Especial:Contribuciones/Cridelmar1"/>
		<updated>2026-05-14T09:35:36Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.29.0</generator>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_monoprogramables&amp;diff=2239</id>
		<title>SO monoprogramables</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_monoprogramables&amp;diff=2239"/>
				<updated>2011-12-20T15:49:56Z</updated>
		
		<summary type="html">&lt;p&gt;Cridelmar1: /* Solapamiento: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En los sistemas operativos monoprogramables la administración de memoria es muy sencilla ya que solo hay un proceso en ejecución que puede usar todo el espacio disponible, la gestión de memoria se limita casi a comprobar si el proceso cabe en el espacio libre en la memoria. El SO se coloca como bloque al principio o al final de la memoria (memoria del sistema), y el resto para el proceso a ejecutar (memoria del proceso):&lt;br /&gt;
                       _______________________                       _______________________ &lt;br /&gt;
                     /|                       | 0                  0|                       |\&lt;br /&gt;
                    | |  zona de memoria del  |                     | zona del S.O en RAM   | |&lt;br /&gt;
                    | |   sistema operativo   |                     |_______________________| | &lt;br /&gt;
                    | |_______________________|                     |                       |\|                      &lt;br /&gt;
                    |/|                       |                     |  zona de memoria del  | | &lt;br /&gt;
       Sistema \    | |                       |                     |  usuario (ejecución   | |    &amp;lt; IBM PC&lt;br /&gt;
       clásico /    | |  zona de memoria del  |                     |  de procesos)         | |    &lt;br /&gt;
                    | |       usuario         |                     |_______________________| | &lt;br /&gt;
                    | |    (ejecución de      |                     |                       |\|&lt;br /&gt;
                    | |       procesos)       |                     |  zona de Lectura      | |  &lt;br /&gt;
                    | |                       |                     |                       | | &lt;br /&gt;
                     \|_______________________| N                  N|_______________________|/        &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solapamiento: ==&lt;br /&gt;
Si el proceso no cabe en el espacio libre en memoria puede recurrirse a 2 estrategias para ejecutarlo:&lt;br /&gt;
*'''Ejecución en cadena:''' El programa se divide en varios &amp;quot;subprogramas&amp;quot; y se ejecutan en cadena. Esto se consigue haciendo que cada programa termine su ejecución solicitando que se ejecute el siguiente.&lt;br /&gt;
*'''Fragmentar el programa en módulos de solapamiento o recubrimiento:''' Dichos módulos se van cargando en memoria según se necesite. Algunos S.O. permiten que los submodulos también se dividan, dando lugar a una estructura en árbol.&lt;br /&gt;
&lt;br /&gt;
         '''______'''&lt;br /&gt;
       ''' |      |'''  &lt;br /&gt;
        '''|      |'''  Datos permanentes: Datos globales,&lt;br /&gt;
        '''|      |'''  programa principal y subprogramas comunes&lt;br /&gt;
        '''|      |&lt;br /&gt;
        '''|      |'''&lt;br /&gt;
       ''' |______|'''_______________________________________________________&lt;br /&gt;
        |      |         __|__          __|__          __|__         __|__            /&lt;br /&gt;
        |      |       ''' |     |        |     |        |     |       |     |'''          |&lt;br /&gt;
        |      |        '''|  A  |        |     |        |  C  |       |  D  |'''          |&lt;br /&gt;
        |      |        '''|_____|        |     |        |     |       |_____|'''         &amp;lt;         Módulos de solapamiento o recubrimiento (A, B, C, D)&lt;br /&gt;
        |      |                       '''|  D  |        |_____|'''                        |&lt;br /&gt;
        |      |                       '''|     |'''                                       |&lt;br /&gt;
        |______|                       '''|_____|'''                                        \&lt;br /&gt;
&lt;br /&gt;
== Protección de memoria: ==&lt;br /&gt;
&lt;br /&gt;
Los sistemas operativos monoprogramables tienen debilidades en cuanto a protección de memoria. Para evitar que un proceso entre en el área del SO, se puede recurrir al uso de:&lt;br /&gt;
*'''Bits de protección''': se le asocia a cada palabra un bit (1 para S.O. y 0 para proceso) para comprobar si la posición de memoria es de SO o del proceso. Este sistema no exige que la región protegida sea contigua, con lo que el sistema operativo puede marcar como suyas algunas posiciones de memoria de subprocesos especiales lo que permite que los mismos accedan de forma controlada a datos y subprogramas del núcleo.&lt;br /&gt;
&lt;br /&gt;
*'''Registros valla o registros límite''': En el limite entre la zona del sistema operativo y la zona para la ejecución de procesos se carga un registro con la primera posición de memoria que ocupa el proceso. Este sistema es mas sencillo y barato que el anterior, pero solo protege una zona (entre la posición de memoria 0 y la posición de memoria del registro) y son necesarios circuitos comparadores rápidos para evitar retrasar la ejecución de las instrucciones. Su funcionamiento es el siguiente: al intentar acceder a una posición de memoria se comprueba si esta dirección es menor que la dirección del registro valla, si es así se lanza un mensaje de error y si no es así se accede a la posición de memoria deseada.&lt;br /&gt;
&lt;br /&gt;
 Ejemplo práctico: &lt;br /&gt;
 Pablo tiene una computadora cuya memoria principal tiene una capacidad de 640KB. El SO (MS-DOS) ocupa el principio de la memoria, dejando libre una &lt;br /&gt;
 zona de 512KB para el proceso conveniente. &lt;br /&gt;
 Esto nos impide jugar al Sensible Soccer, por ejemplo, ya que ocupa 560KB. Una posible solución sería instalar un SO menos pesado, como una version &lt;br /&gt;
 más antigua de MS-DOS.&lt;/div&gt;</summary>
		<author><name>Cridelmar1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Modelos_de_Dise%C3%B1o_de_Sistemas_Operativos&amp;diff=1574</id>
		<title>Modelos de Diseño de Sistemas Operativos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Modelos_de_Dise%C3%B1o_de_Sistemas_Operativos&amp;diff=1574"/>
				<updated>2011-10-30T09:48:37Z</updated>
		
		<summary type="html">&lt;p&gt;Cridelmar1: /* Núcleo del sistema operativo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 2.5. Modelos de Diseño de SSOO =&lt;br /&gt;
&lt;br /&gt;
== Modos de operación del procesador ==&lt;br /&gt;
&lt;br /&gt;
Para entender los modelos de diseño de los sistemas operativos, tenemos que hacer referencia a los modos de ejecución del procesador. El modo de ejecución del procesador indica qué conjunto de instrucciones y a qué recursos del procesador se puede acceder en un cierto instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
En la actualidad, un procesador ofrece como mínimo dos modos de operación(ejecución) que son:&lt;br /&gt;
&lt;br /&gt;
* '''Modo supervisor''', que permite la ejecución de todo el conjunto de instrucciones que ofrece el procesador (no tiene ninguna relación con el modo &amp;quot;root&amp;quot; o administrador de algunos sistemas operativos).&lt;br /&gt;
* '''Modo usuario''', que tiene algunas restricciones de acceso a aspectos del procesador o de ejecución de instrucciones.&lt;br /&gt;
&lt;br /&gt;
== Núcleo del sistema operativo ==&lt;br /&gt;
&lt;br /&gt;
El núcleo del sistema operativo, también conocido por la terminología inglesa ''kernel'', es la parte más esencial del sistema operativo. Se trata de la capa visible del software más baja del sistema que provee y gestiona los recursos del sistema de forma segura a través de las llamadas al sistema.&lt;br /&gt;
&lt;br /&gt;
El núcleo de un sistema operativo suele operar en modo supervisor. Al operar en dicho modo un error de programación en el núcleo del sistema operativo puede resultar en un error fatal del cual el sistema sólo puede recuperarse mediante el reinicio del sistema. A tal error fatal también se le conoce en los sistemas operativos UNIX por la locución inglesa ''[http://es.wikipedia.org/wiki/Kernel_panic kernel panic]'' y en los sistemas operativos Windows por el nombre de ''[http://www.google.es/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CCwQFjAA&amp;amp;url=http%3A%2F%2Fes.wikipedia.org%2Fwiki%2FPantalla_azul_de_la_muerte&amp;amp;ei=s02WTqvCCMjHtAaxuJyBBA&amp;amp;usg=AFQjCNE2tZra15VdohxjrhSogTQZOVedKg Pantallazo azul o BSOD]''.&lt;br /&gt;
&lt;br /&gt;
== Tipos de Sistemas Operativos ==&lt;br /&gt;
&lt;br /&gt;
Los sistemas operativos se pueden clasificar en base a la cantidad de funcionalidad implementada en su núcleo. En general distinguimos dos tipos de sistemas operativos:&lt;br /&gt;
&lt;br /&gt;
* '''Monolíticos:''' son núcleos de gran tamaño (muchas líneas de código) con un alto número de funcionalidades, las cuales normalmente son compiladas junto al núcleo en el mismo momento.&lt;br /&gt;
* '''Micronúcleos:''' son núcleos de pequeño tamaño que fueron compilados sólo con las necesidades más básicas del sistema operativo. El resto de funcionalidades son añadidas mediante la adición de módulos externos al núcleo, lo que les proporciona flexibilidad y facilidad de ampliación en detrimento del desempeño necesario para la gestión dinámica de éstos.&lt;br /&gt;
* '''Pico/Nanonúcleos:''' se puede considerar un subtipo de Micronúcleo, son núcleos muy pequeños y flexibles, incluso mas pequeños que los Micronúcleos. Se usan en sistemas muy específicos, como satélites, en los que ya se sabe los procesos que se van a realizar. Son muy fiables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
No obstante, existen tipologías híbridas o que acentúan algunos aspectos, que también detallamos en esta sección.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Imagen:OS-structure2.svg|880px| Comparativa de distribución de funcionalidades entre distintos tipos de SO]]&lt;br /&gt;
&lt;br /&gt;
=== Sistemas operativos Monolíticos ===&lt;br /&gt;
&lt;br /&gt;
Los sistema operativos monolíticos se caracterizan por emplear un núcleo que implementa la planificación de procesos, el sistema de comunicación de procesos, el sistema de sincronizacion de procesos, la administración de la memoria principal, la administración de ficheros y la gestión de los dispositivos de entrada/salida. Por tanto, a mayor funcionalidad implementada en el núcleo, mayor número de líneas de código que se ejecutan en modo supervisor.&lt;br /&gt;
&lt;br /&gt;
Los sistemas operativos monolíticos son los predominantes hoy día, algunos ejemplos son:&lt;br /&gt;
&lt;br /&gt;
* Sistemas operativos UNIX, tales como FreeBSD, NetBSD y OpenBSD. &lt;br /&gt;
* Sistemas operativos GNU/Linux.&lt;br /&gt;
* DOS, tales como MS-DOS y DR-DOS.&lt;br /&gt;
&lt;br /&gt;
Como inconveniente, al emplear un núcleo que incluye gran parte de las funcionalidades básicas del sistema operativo, dispone de un alto número de líneas de código ejecutándose en modo supervisor. Por ello, un error de programación en el núcleo puede provocar un ''kernel panic''. Además el hecho de añadir nuevas funcionalidades provocaría una nueva recompilación del núcleo llevando a reiniciar el sistema para que se apliquen los nuevos cambios.&lt;br /&gt;
&lt;br /&gt;
Como principal ventaja, los sistemas operativo monolíticos ofrecen un alto rendimiento puesto que las peticiones entre los diferentes componentes se reducen a invocaciones de funciones.&lt;br /&gt;
&lt;br /&gt;
=== Sistemas operativos Micronúcleo ===&lt;br /&gt;
&lt;br /&gt;
También conocidos como sistemas operativos exokernel o exonúcleo, se caracterizan por disponer de un núcleo que implementa únicamente:&lt;br /&gt;
&lt;br /&gt;
* Planificación de procesos&lt;br /&gt;
* Mecanismo de comunicación entre procesos&lt;br /&gt;
* Gestión de interrupciones&lt;br /&gt;
&lt;br /&gt;
Además, existen procesos servidores que están fuera del núcleo, que se ejecutan en modo usuario del procesador, y que implementan la:&lt;br /&gt;
&lt;br /&gt;
* Administración de memoria principal&lt;br /&gt;
* Administración de ficheros&lt;br /&gt;
* Gestión de dispositivos de entrada/salida.&lt;br /&gt;
&lt;br /&gt;
Siguiendo este esquema, cuando un proceso cualquiera solicita un servicio a través de una llamada al sistema, el micronúcleo canaliza la petición al proceso servidor correspondiente. Dicha comunicación se realiza mediante mensajería.&lt;br /&gt;
&lt;br /&gt;
La principal ventaja de los sistemas operativos micronúcleo es que, al ejecutar menos líneas de código en modo supervisor, de manera intuitiva son más fiables. Otras ventajas son que se garantiza el aislamiento de las partes que están fuera del núcleo, como los módulos son independientes unos de otros, si cae alguno de ello los demás no se ven afectados y pueden seguir funcionando.&lt;br /&gt;
&lt;br /&gt;
Sin embargo, el principal problema que presentan es el rendimiento, puesto que cualquier petición requiere mensajería, que lleva consigo un coste extra debido a la construcción de los mensajes, el reparto y la interpretación. Son estos problemas relacionados con el rendimiento los que hacen que no existan sistemas operativos micronúcleo desplegables en productivo, a excepción de Minix 2, que tiene propósitos educativos. Otro ejemplo de micronúcleo es Symbian OS.&lt;br /&gt;
&lt;br /&gt;
=== Sistemas basados en Máquinas Virtuales ===&lt;br /&gt;
&lt;br /&gt;
Implementan el material (hardware) en el software. Algunos sistemas operativos ofrecen técnicas de paravirtualización.&lt;br /&gt;
&lt;br /&gt;
'''Paravirtualización:''' técnica de programación que ofrecen algunos SO anfitrión para facilitar la virtualización y el rendimiento de máquinas virtuales. Ofrecen llamadas directas al sistema &lt;br /&gt;
o acceso a una API especial del anfitrión para acceder directamente a los recursos. Observamos que se deposita una gran confianza en los procesos de la VM por motivos de rendimiento.&lt;br /&gt;
&lt;br /&gt;
* Ventajas de las Máquinas Virtuales&lt;br /&gt;
** Ahorro de coste material.&lt;br /&gt;
** Se pueden tener diferentes SO en un mismo sistema.&lt;br /&gt;
** Se adapta a las necesidades de usuario.&lt;br /&gt;
** Se puede deslocalizar la máquina virtual (deslocalización: migrar a otro SO sin sufrir ningún cambio ).&lt;br /&gt;
&lt;br /&gt;
* Desventajas de las Máquinas Virtuales &lt;br /&gt;
** Rendimiento  (KVM +  paravirtualización 10%).&lt;br /&gt;
** Punto único de fallos(si falla algún componente y las aplicaciones están montadas en él provoca un fallo general).&lt;br /&gt;
&lt;br /&gt;
== Otro material a consultar ==&lt;br /&gt;
&lt;br /&gt;
El estudiante puede encontrar el siguiente material de interés para complementar sus conocimientos:&lt;br /&gt;
&lt;br /&gt;
* Debate entre Linus Torvalds, creador del núcleo Linux, que sigue el paradigma monolítico y Andrew S. Tanembaum, creador de Minux, que sigue el modelo micronúcleo: http://oreilly.com/catalog/opensources/book/appa.html (en inglés).&lt;/div&gt;</summary>
		<author><name>Cridelmar1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Llamadas_al_sistema&amp;diff=1571</id>
		<title>Llamadas al sistema</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Llamadas_al_sistema&amp;diff=1571"/>
				<updated>2011-10-29T10:37:47Z</updated>
		
		<summary type="html">&lt;p&gt;Cridelmar1: /* El dispatcher */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 2.4. Llamadas al sistema =&lt;br /&gt;
&lt;br /&gt;
== Definición ==&lt;br /&gt;
&lt;br /&gt;
Una llamada al sistema es el mecanismo que puede emplear un proceso para solicitar un cierto servicio al sistema operativo. Todo sistema operativo ofrece un conjunto de llamadas al sistema que viene determinado por una cierta API. En el caso de Linux, su version 3.0, ofrece un total de 345 llamadas al sistema. Toda llamada al sistema se identifica de manera únivoca mediante un valor númerico que debe permanecer el mismo a lo largo de la vida del sistema operativo para evitar que se rompa la compatibilidad hacia atrás.&lt;br /&gt;
&lt;br /&gt;
Algunos ejemplos de llamadas al sistema son las siguientes:&lt;br /&gt;
&lt;br /&gt;
* '''time''', que permite obtener la fecha y hora del sistema.&lt;br /&gt;
* '''write''', que se emplea para escribir un dato en un cierto dispositivo de salida, tales como una pantalla o un disco magnético.&lt;br /&gt;
* '''read''', que es usada para leer de un dispositivo de entrada, tales como un teclado o un disco magnético.&lt;br /&gt;
&lt;br /&gt;
Cada sistema operativo implementa su propia API, por eso normalmente un programa diseñado para un cierto sistema operativo no funciona en otro sistema operativo diferente. No obstante, existen APIs estandarizadas, como [http://es.wikipedia.org/wiki/POSIX POSIX], que tienden a ser implementadas por los fabricantes de sistemas operativos.&lt;br /&gt;
&lt;br /&gt;
== Ejemplo de llamada al sistema ==&lt;br /&gt;
&lt;br /&gt;
El siguiente ejemplo muestra el código en ensamblador de x86 para invocar a la llamada al sistema '''write''' que permite escribir un dato en cualquier dispositivo. En concreto, se va a escribir una cadena por el dispositivo de salida '''pantalla''', que se identifica mediante el descriptor de fichero número 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
section .text&lt;br /&gt;
    global _start&lt;br /&gt;
_start:&lt;br /&gt;
    mov eax, 4         ;cargamos el número de la llamada al sistema en el regitro eax&lt;br /&gt;
    mov ebx, 1         ;cargamos el descriptor de fichero sobre el que queremos escribir&lt;br /&gt;
    mov ecx, string    ;cargamos en ecx la dirección de la cadena a imprimir&lt;br /&gt;
    mov edx, lenght    ;cargamos en edx el tamaño de la cadena a imprimir&lt;br /&gt;
    int 80h            ;se invoca al de&lt;br /&gt;
&lt;br /&gt;
    mov eax, 1&lt;br /&gt;
    mov ebx, 0&lt;br /&gt;
    int 80h&lt;br /&gt;
&lt;br /&gt;
section .data&lt;br /&gt;
    string: db &amp;quot;Hola Mundo&amp;quot;, 0x0A&lt;br /&gt;
    lenght: equ 13&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La instrucción ''int'' forma parte del conjunto de instrucciones de procesadores x86. Esta instrucción emite una interrupción por software cuyo tratamiento es realizado por una rutina. En el caso de las llamadas al sistema, la rutina que se encarga del tratamiento de la interrupción por software número 80 es el ''dispatcher''.&lt;br /&gt;
&lt;br /&gt;
== El ''dispatcher'' ==&lt;br /&gt;
&lt;br /&gt;
Se trata de la parte del sistema operativo que se ejecuta cuando se invoca una llamada al sistema. Básicamente, se encarga de invocar a la llamada al sistema que el proceso ha solicitado. En el caso de x86, el dispatcher consulta el registro eax e invoca a la llamada al sistema identificada con dicha numeración.&lt;/div&gt;</summary>
		<author><name>Cridelmar1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Componentes_b%C3%A1sicos_de_un_sistema_operativo&amp;diff=1512</id>
		<title>Componentes básicos de un sistema operativo</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Componentes_b%C3%A1sicos_de_un_sistema_operativo&amp;diff=1512"/>
				<updated>2011-10-22T11:26:45Z</updated>
		
		<summary type="html">&lt;p&gt;Cridelmar1: /* 2.2. Componentes básicos de un Sistema Operativo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=2.2. Componentes básicos de un Sistema Operativo =&lt;br /&gt;
&lt;br /&gt;
Los componentes básicos de un sistema operativo son los siguientes:&lt;br /&gt;
&lt;br /&gt;
*Gestión de procesos, que incluye:&lt;br /&gt;
** Planificación de procesos: se trata de la parte del sistema operativo que decide qué proceso emplea el procesador en cada instante de tiempo.&lt;br /&gt;
** Mecanismos de comunicación entre procesos: permiten comunicar a dos procesos del sistema operativo, tales como la mensajería.&lt;br /&gt;
** Mecanismos de sincronización: permiten coordinar a procesos que realizan accesos concurrentes a un cierto recurso.&lt;br /&gt;
&lt;br /&gt;
* Administración de memoria principal: tiene como objetivo la gestión de la memoria principal, lo que incluye la gestión del espacio de memoria principal libre y ocupada, así como la asignación de memoria principal a los procesos.&lt;br /&gt;
&lt;br /&gt;
* Administración de ficheros: gestiona la manera en que la información se almacena en dispositivos de entrada/salida que permiten el almacenamiento estable.&lt;br /&gt;
&lt;br /&gt;
* Gestión de los dispositivos de entrada/salida (driver): parte del sistema operativo que conoce los detalles específicos de cada dispositivo, lo que permite poder operar con él. &lt;br /&gt;
&lt;br /&gt;
Además, se incluye como parte del sistema operativo:&lt;br /&gt;
&lt;br /&gt;
* Llamadas al sistema: conjunto de servicios que los procesos pueden solicitar al sistema operativo.&lt;br /&gt;
&lt;br /&gt;
* Lanzador de aplicaciones: permite el lanzamiento de un programa.&lt;/div&gt;</summary>
		<author><name>Cridelmar1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Componentes_b%C3%A1sicos_de_un_sistema_operativo&amp;diff=1511</id>
		<title>Componentes básicos de un sistema operativo</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Componentes_b%C3%A1sicos_de_un_sistema_operativo&amp;diff=1511"/>
				<updated>2011-10-22T11:24:57Z</updated>
		
		<summary type="html">&lt;p&gt;Cridelmar1: /* 2.2. Componentes básicos de un Sistema Operativo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=2.2. Componentes básicos de un Sistema Operativo =&lt;br /&gt;
&lt;br /&gt;
Los componentes básicos de un sistema operativo son los siguientes:&lt;br /&gt;
&lt;br /&gt;
*Gestión de procesos, que incluye:&lt;br /&gt;
** Planificación de procesos: se trata de la parte del sistema operativo que decide qué proceso emplea el procesador en cada instante de tiempo.&lt;br /&gt;
** Mecanismos de comunicación entre procesos: permiten comunicar a dos procesos del sistema operativo, tales como la mensajería.&lt;br /&gt;
** Mecanismos de sincronización: permiten coordinar a procesos que realizan accesos concurrentes a un cierto recurso.&lt;br /&gt;
&lt;br /&gt;
* Administración de memoria principal: tiene como objetivo la gestión de la memoria principal, lo que incluye la gestión del espacio de memoria principal libre y ocupada, así como la asignación de memoria principal a los procesos.&lt;br /&gt;
&lt;br /&gt;
* Administración de ficheros: gestiona la manera en que la información se almacena en dispositivos de entrada/salida que permiten el almacenamiento estable.&lt;br /&gt;
&lt;br /&gt;
* Gestión de los dispositivos de entrada/salida (driver): parte del sistema operativo que conoce los detalles específicos de cada dispositivo, lo que permite poder operar con él. A los gestores de dispositivos generalmente se les conoce por el término inglés ''driver''.&lt;br /&gt;
&lt;br /&gt;
Además, se incluye como parte del sistema operativo:&lt;br /&gt;
&lt;br /&gt;
* Llamadas al sistema: conjunto de servicios que los procesos pueden solicitar al sistema operativo.&lt;br /&gt;
&lt;br /&gt;
* Lanzador de aplicaciones: permite el lanzamiento de un programa.&lt;/div&gt;</summary>
		<author><name>Cridelmar1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Conceptos_b%C3%A1sicos&amp;diff=1510</id>
		<title>Conceptos básicos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Conceptos_b%C3%A1sicos&amp;diff=1510"/>
				<updated>2011-10-22T10:49:17Z</updated>
		
		<summary type="html">&lt;p&gt;Cridelmar1: /* Llamadas a sistema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 2.1. Conceptos básicos = &lt;br /&gt;
A continuación se desarrollan conceptos básicos que se emplearán a lo largo de la asignatura.&lt;br /&gt;
&lt;br /&gt;
== Programa ==&lt;br /&gt;
&lt;br /&gt;
Un programa es una secuencia de instrucciones que, al ejecutarse, desarrolla algún tipo de actividad.&lt;br /&gt;
&lt;br /&gt;
Un programa, generalmente, se expresa en un lenguaje de programación de alto nivel (tales como C, C++, Java, Python, Perl, Php, C#, etc) que, mediante un compilador o máquina virtual, se traduce a instrucciones de bajo nivel que corresponden al juego de instrucciones que ofrece el procesador.&lt;br /&gt;
&lt;br /&gt;
El juego de instrucciones del procesador viene determinado por el fabricante.&lt;br /&gt;
&lt;br /&gt;
== Proceso ==&lt;br /&gt;
&lt;br /&gt;
Un ''proceso'' es una instancia de un programa que está en ejecución. De partida todo proceso dispone de una única línea de ejecución. Se puede entender como la vista dinámica (en ejecución) de un programa.&lt;br /&gt;
&lt;br /&gt;
=== Procesos en sistemas operativos tipo Unix ===&lt;br /&gt;
&lt;br /&gt;
* Todo proceso en un sistema operativo tipo Unix tiene un proceso padre y a su vez puede disponer uno o más de un proceso hijo.&lt;br /&gt;
&lt;br /&gt;
* Todo proceso en un sistema operativo tipo Unix tiene un propietario, que se trata del usuario que ha lanzado dicho proceso.&lt;br /&gt;
&lt;br /&gt;
* El proceso ''init'' es el padre de todos los procesos. Es la excepción a la norma general, pues no tiene padre.&lt;br /&gt;
&lt;br /&gt;
* Para mostrar la relación actual de procesos en el sistema se puede emplear la orden ''ps''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ps -ef&lt;br /&gt;
UID        PID  PPID  C STIME TTY          TIME CMD&lt;br /&gt;
root         1     0  0 11:48 ?        00:00:00 /sbin/init&lt;br /&gt;
...&lt;br /&gt;
practica  1712     1 18 12:08 ?        00:00:00 gnome-terminal&lt;br /&gt;
practica  1713  1712  0 12:08 ?        00:00:00 gnome-pty-helper&lt;br /&gt;
practica  1714  1712 20 12:08 pts/0    00:00:00 bash&lt;br /&gt;
practica  1731  1714  0 12:08 pts/0    00:00:00 ps -ef&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La primera columna indica el UID del proceso, la segunda el PID, la tercera el PID del proceso padre. Por último, aparece el nombre del proceso en cuestión.&lt;br /&gt;
&lt;br /&gt;
=== Procesos padre e hijo ===&lt;br /&gt;
&lt;br /&gt;
* Todo proceso (padre) puede lanzar un proceso hijo en cualquier momento, para ello el sistema operativo nos ofrece una llamada al sistema que se denomina ''fork''.&lt;br /&gt;
&lt;br /&gt;
* Un proceso hijo es un proceso clon del padre. Sin embargo, procesos padre e hijo no comparten memoria, son completamente independientes.&lt;br /&gt;
&lt;br /&gt;
* Todo proceso padre es responsable de los procesos hijos que lanza, por ello, todo proceso padre debe recoger el resultado de la ejecución de los procesos hijos para que estos finalicen adecuadamente. Para ello, el sistema operativo ofrece la llamada ''wait'' que nos permite obtener el resultado de la ejecución de uno o varios procesos hijo.&lt;br /&gt;
&lt;br /&gt;
* Si un proceso padre no recupera el resultado de la ejecución de su hijo, se dice que el proceso queda en estado ''zombi''. Un proceso hijo zombi es un proceso que ha terminado su ejecución y que está pendiente de que su padre recoja el resultado de su ejecución.&lt;br /&gt;
&lt;br /&gt;
== Llamadas a sistema ==&lt;br /&gt;
&lt;br /&gt;
* Se implementan a través de una interfaz (o API) que ofrece el Sistema Operativo. Son mecanismos que el S.O. pone a disposición de los procesos para solicitar un servicio o recurso. (Otra definición, según Wikipedia: Llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO.) Estas llamadas a sistema evitan que el proceso acceda directamente a los recursos del hardware.&lt;br /&gt;
En el caso de Linux tiene aproximadamente 350 llamadas al sistema en la versión 3.0.0.&lt;br /&gt;
La mayor parte de los Sistemas Operativos suelen implementar la API POSIX por razones de portabilidad.&lt;br /&gt;
&lt;br /&gt;
== Usuario ==&lt;br /&gt;
&lt;br /&gt;
* Sujeto que interactúa con la computadora. Puede ser un humano o un autómata (software). &lt;br /&gt;
&lt;br /&gt;
* En sistemas UNIX encontramos un código único para cada uno, el UID (User IDentifier). A su vez debe pertenecer a un grupo, definido por el GID (Group IDentifier).&lt;br /&gt;
&lt;br /&gt;
== Fichero ==&lt;br /&gt;
&lt;br /&gt;
* Estructura de datos que almacena información.&lt;br /&gt;
&lt;br /&gt;
Los ficheros se identifican mediante su nombre y su extension (un apendice que se utiliza para indicar el tipo de informacion que contiene el fichero).&lt;br /&gt;
&lt;br /&gt;
El lugar donde se encuentra un fichero viene dado por su directorio. Dentro de un directorio pueden existir otros directorios (llamados subdirectorios) lo que da lugar a una organizacion en forma de arbol.&lt;br /&gt;
&lt;br /&gt;
Al camino que debemos seguir para encontrar un fichero lo llamamos '''camino absoluto'''.&lt;/div&gt;</summary>
		<author><name>Cridelmar1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Conceptos_b%C3%A1sicos&amp;diff=1509</id>
		<title>Conceptos básicos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Conceptos_b%C3%A1sicos&amp;diff=1509"/>
				<updated>2011-10-22T10:44:26Z</updated>
		
		<summary type="html">&lt;p&gt;Cridelmar1: /* Llamadas a sistema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 2.1. Conceptos básicos = &lt;br /&gt;
A continuación se desarrollan conceptos básicos que se emplearán a lo largo de la asignatura.&lt;br /&gt;
&lt;br /&gt;
== Programa ==&lt;br /&gt;
&lt;br /&gt;
Un programa es una secuencia de instrucciones que, al ejecutarse, desarrolla algún tipo de actividad.&lt;br /&gt;
&lt;br /&gt;
Un programa, generalmente, se expresa en un lenguaje de programación de alto nivel (tales como C, C++, Java, Python, Perl, Php, C#, etc) que, mediante un compilador o máquina virtual, se traduce a instrucciones de bajo nivel que corresponden al juego de instrucciones que ofrece el procesador.&lt;br /&gt;
&lt;br /&gt;
El juego de instrucciones del procesador viene determinado por el fabricante.&lt;br /&gt;
&lt;br /&gt;
== Proceso ==&lt;br /&gt;
&lt;br /&gt;
Un ''proceso'' es una instancia de un programa que está en ejecución. De partida todo proceso dispone de una única línea de ejecución. Se puede entender como la vista dinámica (en ejecución) de un programa.&lt;br /&gt;
&lt;br /&gt;
=== Procesos en sistemas operativos tipo Unix ===&lt;br /&gt;
&lt;br /&gt;
* Todo proceso en un sistema operativo tipo Unix tiene un proceso padre y a su vez puede disponer uno o más de un proceso hijo.&lt;br /&gt;
&lt;br /&gt;
* Todo proceso en un sistema operativo tipo Unix tiene un propietario, que se trata del usuario que ha lanzado dicho proceso.&lt;br /&gt;
&lt;br /&gt;
* El proceso ''init'' es el padre de todos los procesos. Es la excepción a la norma general, pues no tiene padre.&lt;br /&gt;
&lt;br /&gt;
* Para mostrar la relación actual de procesos en el sistema se puede emplear la orden ''ps''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ps -ef&lt;br /&gt;
UID        PID  PPID  C STIME TTY          TIME CMD&lt;br /&gt;
root         1     0  0 11:48 ?        00:00:00 /sbin/init&lt;br /&gt;
...&lt;br /&gt;
practica  1712     1 18 12:08 ?        00:00:00 gnome-terminal&lt;br /&gt;
practica  1713  1712  0 12:08 ?        00:00:00 gnome-pty-helper&lt;br /&gt;
practica  1714  1712 20 12:08 pts/0    00:00:00 bash&lt;br /&gt;
practica  1731  1714  0 12:08 pts/0    00:00:00 ps -ef&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La primera columna indica el UID del proceso, la segunda el PID, la tercera el PID del proceso padre. Por último, aparece el nombre del proceso en cuestión.&lt;br /&gt;
&lt;br /&gt;
=== Procesos padre e hijo ===&lt;br /&gt;
&lt;br /&gt;
* Todo proceso (padre) puede lanzar un proceso hijo en cualquier momento, para ello el sistema operativo nos ofrece una llamada al sistema que se denomina ''fork''.&lt;br /&gt;
&lt;br /&gt;
* Un proceso hijo es un proceso clon del padre. Sin embargo, procesos padre e hijo no comparten memoria, son completamente independientes.&lt;br /&gt;
&lt;br /&gt;
* Todo proceso padre es responsable de los procesos hijos que lanza, por ello, todo proceso padre debe recoger el resultado de la ejecución de los procesos hijos para que estos finalicen adecuadamente. Para ello, el sistema operativo ofrece la llamada ''wait'' que nos permite obtener el resultado de la ejecución de uno o varios procesos hijo.&lt;br /&gt;
&lt;br /&gt;
* Si un proceso padre no recupera el resultado de la ejecución de su hijo, se dice que el proceso queda en estado ''zombi''. Un proceso hijo zombi es un proceso que ha terminado su ejecución y que está pendiente de que su padre recoja el resultado de su ejecución.&lt;br /&gt;
&lt;br /&gt;
== Llamadas a sistema ==&lt;br /&gt;
&lt;br /&gt;
* Se implementan a través de una interfaz (o API) que ofrece el Sistema Operativo. Son mecanismos que ofrece el Sistema Operativo a los procesos para solicitar un servicio o recurso. (Otra definición, según Wikipedia: Llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO.) Estas llamadas a sistema evitan que el proceso acceda directamente a los recursos del hardware.&lt;br /&gt;
En el caso de Linux tiene aproximadamente 350 llamadas al sistema en la versión 3.0.0.&lt;br /&gt;
La mayor parte de los Sistemas Operativos suelen implementar la API POSIX por razones de portabilidad.&lt;br /&gt;
&lt;br /&gt;
== Usuario ==&lt;br /&gt;
&lt;br /&gt;
* Sujeto que interactúa con la computadora. Puede ser un humano o un autómata (software). &lt;br /&gt;
&lt;br /&gt;
* En sistemas UNIX encontramos un código único para cada uno, el UID (User IDentifier). A su vez debe pertenecer a un grupo, definido por el GID (Group IDentifier).&lt;br /&gt;
&lt;br /&gt;
== Fichero ==&lt;br /&gt;
&lt;br /&gt;
* Estructura de datos que almacena información.&lt;br /&gt;
&lt;br /&gt;
Los ficheros se identifican mediante su nombre y su extension (un apendice que se utiliza para indicar el tipo de informacion que contiene el fichero).&lt;br /&gt;
&lt;br /&gt;
El lugar donde se encuentra un fichero viene dado por su directorio. Dentro de un directorio pueden existir otros directorios (llamados subdirectorios) lo que da lugar a una organizacion en forma de arbol.&lt;br /&gt;
&lt;br /&gt;
Al camino que debemos seguir para encontrar un fichero lo llamamos '''camino absoluto'''.&lt;/div&gt;</summary>
		<author><name>Cridelmar1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Conceptos_b%C3%A1sicos&amp;diff=1505</id>
		<title>Conceptos básicos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Conceptos_b%C3%A1sicos&amp;diff=1505"/>
				<updated>2011-10-21T15:03:03Z</updated>
		
		<summary type="html">&lt;p&gt;Cridelmar1: /* Procesos padre e hijo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 2.1. Conceptos básicos = &lt;br /&gt;
A continuación se desarrollan conceptos básicos que se emplearán a lo largo de la asignatura.&lt;br /&gt;
&lt;br /&gt;
== Programa ==&lt;br /&gt;
&lt;br /&gt;
Un programa es una secuencia de instrucciones que, al ejecutarse, desarrolla algún tipo de actividad.&lt;br /&gt;
&lt;br /&gt;
Un programa, generalmente, se expresa en un lenguaje de programación de alto nivel (tales como C, C++, Java, Python, Perl, Php, C#, etc) que, mediante un compilador o máquina virtual, se traduce a instrucciones de bajo nivel que corresponden al juego de instrucciones que ofrece el procesador.&lt;br /&gt;
&lt;br /&gt;
El juego de instrucciones del procesador viene determinado por el fabricante.&lt;br /&gt;
&lt;br /&gt;
== Proceso ==&lt;br /&gt;
&lt;br /&gt;
Un ''proceso'' es una instancia de un programa que está en ejecución. De partida todo proceso dispone de una única línea de ejecución. Se puede entender como la vista dinámica (en ejecución) de un programa.&lt;br /&gt;
&lt;br /&gt;
=== Procesos en sistemas operativos tipo Unix ===&lt;br /&gt;
&lt;br /&gt;
* Todo proceso en un sistema operativo tipo Unix tiene un proceso padre y a su vez puede disponer uno o más de un proceso hijo.&lt;br /&gt;
&lt;br /&gt;
* Todo proceso en un sistema operativo tipo Unix tiene un propietario, que se trata del usuario que ha lanzado dicho proceso.&lt;br /&gt;
&lt;br /&gt;
* El proceso ''init'' es el padre de todos los procesos. Es la excepción a la norma general, pues no tiene padre.&lt;br /&gt;
&lt;br /&gt;
* Para mostrar la relación actual de procesos en el sistema se puede emplear la orden ''ps''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ps -ef&lt;br /&gt;
UID        PID  PPID  C STIME TTY          TIME CMD&lt;br /&gt;
root         1     0  0 11:48 ?        00:00:00 /sbin/init&lt;br /&gt;
...&lt;br /&gt;
practica  1712     1 18 12:08 ?        00:00:00 gnome-terminal&lt;br /&gt;
practica  1713  1712  0 12:08 ?        00:00:00 gnome-pty-helper&lt;br /&gt;
practica  1714  1712 20 12:08 pts/0    00:00:00 bash&lt;br /&gt;
practica  1731  1714  0 12:08 pts/0    00:00:00 ps -ef&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La primera columna indica el UID del proceso, la segunda el PID, la tercera el PID del proceso padre. Por último, aparece el nombre del proceso en cuestión.&lt;br /&gt;
&lt;br /&gt;
=== Procesos padre e hijo ===&lt;br /&gt;
&lt;br /&gt;
* Todo proceso (padre) puede lanzar un proceso hijo en cualquier momento, para ello el sistema operativo nos ofrece una llamada al sistema que se denomina ''fork''.&lt;br /&gt;
&lt;br /&gt;
* Un proceso hijo es un proceso clon del padre. Sin embargo, procesos padre e hijo no comparten memoria, son completamente independientes.&lt;br /&gt;
&lt;br /&gt;
* Todo proceso padre es responsable de los procesos hijos que lanza, por ello, todo proceso padre debe recoger el resultado de la ejecución de los procesos hijos para que estos finalicen adecuadamente. Para ello, el sistema operativo ofrece la llamada ''wait'' que nos permite obtener el resultado de la ejecución de uno o varios procesos hijo.&lt;br /&gt;
&lt;br /&gt;
* Si un proceso padre no recupera el resultado de la ejecución de su hijo, se dice que el proceso queda en estado ''zombi''. Un proceso hijo zombi es un proceso que ha terminado su ejecución y que está pendiente de que su padre recoja el resultado de su ejecución.&lt;br /&gt;
&lt;br /&gt;
== Llamadas a sistema ==&lt;br /&gt;
&lt;br /&gt;
* Se implementan a través de una interfaz (o API) que ofrece el Sistema Operativo. Son mecanismos que ofrece el Sistema Operativo a los procesos para que soliciten un servicio o recurso al Sistema Operativo. (Otra definición, según Wikipedia: Llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO.) Estas llamadas a sistema evitan que el proceso acceda directamente a los recursos del hardware.&lt;br /&gt;
En el caso de Linux tiene aproximadamente 350 llamadas al sistema en la versión 3.0.0.&lt;br /&gt;
La mayor parte de los Sistemas Operativos suelen implementar la API POSIX por razones de portabilidad.&lt;br /&gt;
&lt;br /&gt;
== Usuario ==&lt;br /&gt;
&lt;br /&gt;
* Sujeto que interactúa con la computadora. Puede ser un humano o un autómata (software). &lt;br /&gt;
&lt;br /&gt;
* En sistemas UNIX encontramos un código único para cada uno, el UID (User IDentifier). A su vez debe pertenecer a un grupo, definido por el GID (Group IDentifier).&lt;br /&gt;
&lt;br /&gt;
== Fichero ==&lt;br /&gt;
&lt;br /&gt;
* Estructura de datos que almacena información.&lt;br /&gt;
&lt;br /&gt;
Los ficheros se identifican mediante su nombre y su extension (un apendice que se utiliza para indicar el tipo de informacion que contiene el fichero).&lt;br /&gt;
&lt;br /&gt;
El lugar donde se encuentra un fichero viene dado por su directorio. Dentro de un directorio pueden existir otros directorios (llamados subdirectorios) lo que da lugar a una organizacion en forma de arbol.&lt;br /&gt;
&lt;br /&gt;
Al camino que debemos seguir para encontrar un fichero lo llamamos '''camino absoluto'''.&lt;/div&gt;</summary>
		<author><name>Cridelmar1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Conceptos_b%C3%A1sicos&amp;diff=1504</id>
		<title>Conceptos básicos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Conceptos_b%C3%A1sicos&amp;diff=1504"/>
				<updated>2011-10-21T15:00:16Z</updated>
		
		<summary type="html">&lt;p&gt;Cridelmar1: /* Procesos en sistemas operativos tipo Unix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 2.1. Conceptos básicos = &lt;br /&gt;
A continuación se desarrollan conceptos básicos que se emplearán a lo largo de la asignatura.&lt;br /&gt;
&lt;br /&gt;
== Programa ==&lt;br /&gt;
&lt;br /&gt;
Un programa es una secuencia de instrucciones que, al ejecutarse, desarrolla algún tipo de actividad.&lt;br /&gt;
&lt;br /&gt;
Un programa, generalmente, se expresa en un lenguaje de programación de alto nivel (tales como C, C++, Java, Python, Perl, Php, C#, etc) que, mediante un compilador o máquina virtual, se traduce a instrucciones de bajo nivel que corresponden al juego de instrucciones que ofrece el procesador.&lt;br /&gt;
&lt;br /&gt;
El juego de instrucciones del procesador viene determinado por el fabricante.&lt;br /&gt;
&lt;br /&gt;
== Proceso ==&lt;br /&gt;
&lt;br /&gt;
Un ''proceso'' es una instancia de un programa que está en ejecución. De partida todo proceso dispone de una única línea de ejecución. Se puede entender como la vista dinámica (en ejecución) de un programa.&lt;br /&gt;
&lt;br /&gt;
=== Procesos en sistemas operativos tipo Unix ===&lt;br /&gt;
&lt;br /&gt;
* Todo proceso en un sistema operativo tipo Unix tiene un proceso padre y a su vez puede disponer uno o más de un proceso hijo.&lt;br /&gt;
&lt;br /&gt;
* Todo proceso en un sistema operativo tipo Unix tiene un propietario, que se trata del usuario que ha lanzado dicho proceso.&lt;br /&gt;
&lt;br /&gt;
* El proceso ''init'' es el padre de todos los procesos. Es la excepción a la norma general, pues no tiene padre.&lt;br /&gt;
&lt;br /&gt;
* Para mostrar la relación actual de procesos en el sistema se puede emplear la orden ''ps''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ps -ef&lt;br /&gt;
UID        PID  PPID  C STIME TTY          TIME CMD&lt;br /&gt;
root         1     0  0 11:48 ?        00:00:00 /sbin/init&lt;br /&gt;
...&lt;br /&gt;
practica  1712     1 18 12:08 ?        00:00:00 gnome-terminal&lt;br /&gt;
practica  1713  1712  0 12:08 ?        00:00:00 gnome-pty-helper&lt;br /&gt;
practica  1714  1712 20 12:08 pts/0    00:00:00 bash&lt;br /&gt;
practica  1731  1714  0 12:08 pts/0    00:00:00 ps -ef&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La primera columna indica el UID del proceso, la segunda el PID, la tercera el PID del proceso padre. Por último, aparece el nombre del proceso en cuestión.&lt;br /&gt;
&lt;br /&gt;
=== Procesos padre e hijo ===&lt;br /&gt;
&lt;br /&gt;
* Todo proceso (padre) puede lanzar un proceso hijo en cualquier momento, para ello el sistema operativo nos ofrece una llamada al sistema que se denomina ''fork''.&lt;br /&gt;
&lt;br /&gt;
* Un proceso hijo es un proceso clon del padre, es una copia exacta del padre. Sin embargo, procesos padre e hijo no comparten memoria, son completamente independientes.&lt;br /&gt;
&lt;br /&gt;
* Todo proceso padre es responsable de los procesos hijos que lanza, por ello, todo proceso padre debe recoger el resultado de la ejecución de los procesos hijos para que estos finalicen adecuadamente. Para ello, el sistema operativo ofrece la llamada ''wait'' que nos permite obtener el resultado de la ejecución de uno o varios procesos hijo.&lt;br /&gt;
&lt;br /&gt;
* Si un proceso padre no recupera el resultado de la ejecución de su hijo, se dice que el proceso queda en estado ''zombi''. Un proceso hijo zombi es un proceso que ha terminado su ejecución y que está pendiente de que su padre recoja el resultado de su ejecución.&lt;br /&gt;
&lt;br /&gt;
== Llamadas a sistema ==&lt;br /&gt;
&lt;br /&gt;
* Se implementan a través de una interfaz (o API) que ofrece el Sistema Operativo. Son mecanismos que ofrece el Sistema Operativo a los procesos para que soliciten un servicio o recurso al Sistema Operativo. (Otra definición, según Wikipedia: Llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO.) Estas llamadas a sistema evitan que el proceso acceda directamente a los recursos del hardware.&lt;br /&gt;
En el caso de Linux tiene aproximadamente 350 llamadas al sistema en la versión 3.0.0.&lt;br /&gt;
La mayor parte de los Sistemas Operativos suelen implementar la API POSIX por razones de portabilidad.&lt;br /&gt;
&lt;br /&gt;
== Usuario ==&lt;br /&gt;
&lt;br /&gt;
* Sujeto que interactúa con la computadora. Puede ser un humano o un autómata (software). &lt;br /&gt;
&lt;br /&gt;
* En sistemas UNIX encontramos un código único para cada uno, el UID (User IDentifier). A su vez debe pertenecer a un grupo, definido por el GID (Group IDentifier).&lt;br /&gt;
&lt;br /&gt;
== Fichero ==&lt;br /&gt;
&lt;br /&gt;
* Estructura de datos que almacena información.&lt;br /&gt;
&lt;br /&gt;
Los ficheros se identifican mediante su nombre y su extension (un apendice que se utiliza para indicar el tipo de informacion que contiene el fichero).&lt;br /&gt;
&lt;br /&gt;
El lugar donde se encuentra un fichero viene dado por su directorio. Dentro de un directorio pueden existir otros directorios (llamados subdirectorios) lo que da lugar a una organizacion en forma de arbol.&lt;br /&gt;
&lt;br /&gt;
Al camino que debemos seguir para encontrar un fichero lo llamamos '''camino absoluto'''.&lt;/div&gt;</summary>
		<author><name>Cridelmar1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Introducci%C3%B3n_hist%C3%B3rica&amp;diff=1498</id>
		<title>Introducción histórica</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Introducci%C3%B3n_hist%C3%B3rica&amp;diff=1498"/>
				<updated>2011-10-19T08:33:51Z</updated>
		
		<summary type="html">&lt;p&gt;Cridelmar1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 1.2. Introducción histórica a los SSOO =&lt;br /&gt;
&lt;br /&gt;
En 1940, durante la 2º Guerra Mundial, se inicia la primera generación de ordenadores con el [http://es.wikipedia.org/wiki/ENIAC ENIAC] (1943-1945), desarrollado en EEUU. Y posteriormente, en 1949, el [http://es.wikipedia.org/wiki/EDSAC EDSAC], desarrollado en Inglaterra.&lt;br /&gt;
&lt;br /&gt;
Más tarde, se desarrollarían los primeros lenguajes de programación y los primeros ordenadores comerciales, como el IBM 701, 702 y el 650, utilizados principalmente para el cálculo científico en aplicaciones de gestión. También se crearían otros ordenadores como el UNIVAC I o el MARK I (Harvard Mark I).&lt;br /&gt;
&lt;br /&gt;
Máquinas relevantes:&lt;br /&gt;
&lt;br /&gt;
*ENIAC:&lt;br /&gt;
**Máquina de cálculo completamente electrónica.&lt;br /&gt;
**Arquitectura no Von-Neumann.&lt;br /&gt;
**17468 lámparas.&lt;br /&gt;
**20 registros de 10 lámparas para representar el BCD.&lt;br /&gt;
*EDSAC:&lt;br /&gt;
**Primera máquina con arquitectura Von Neumann.&lt;br /&gt;
**Programada en lenguaje ensamblador.&lt;br /&gt;
*Primeras máquinas comerciales (a partir de 1951):&lt;br /&gt;
**Univac I y Mark I&lt;br /&gt;
**IBM 701&lt;br /&gt;
**IBM 702 e IBM 650&lt;br /&gt;
&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
*Durante la 2º Generación de Ordenadores, una generación en donde los equipos eran más fiables, se crearía el primer germen de sistemas operativos, que lo que quería conseguir era un programa para reservar memoria y automatizar ciertas tareas (como por ejemplo lecturas de cintas magnéticas).&lt;br /&gt;
&lt;br /&gt;
-Máquinas relevantes&lt;br /&gt;
A) TRADIC:&lt;br /&gt;
* Ordenador completamente transistorizado.&lt;br /&gt;
* Suficientemente pequeño para montarse en un B-52.&lt;br /&gt;
* Primera unidad destinada a venta: 1958.&lt;br /&gt;
B) IBM 7094&lt;br /&gt;
* Memoria: 32K-palabras de 32 bits.&lt;br /&gt;
* Potencia de cálculo: 0,35MIPS.&lt;br /&gt;
C) PDP-1:&lt;br /&gt;
* Uno de los primeros micro-computadores&lt;br /&gt;
* 4K-palabras de 16 bits&lt;br /&gt;
* Precio: 5% de IBM 7094&lt;br /&gt;
&lt;br /&gt;
-----------------&lt;br /&gt;
&lt;br /&gt;
*En la 3º Generación de Ordenadores (años 1960-1970), se consiguió una alta escala de integración en circuitos, en los que se consigue más capacidad de memoria, y más rendimiento y velocidad en los equipos. Se crean los mainFrame , equipos centrales para procesar una gran cantidad de datos, como por ejemplo IBM 360 y los &amp;quot;mini&amp;quot;ordenadores, en la universidades (DIGITAL PDP - 7 , PDP - 11).&lt;br /&gt;
&lt;br /&gt;
-Máquinas relevantes&lt;br /&gt;
A) Aparece el concepto de familia de ordenadores.&lt;br /&gt;
* Poder elegir diferentes configuraciones.&lt;br /&gt;
* Catálogo de dispositivos y periféricos compatibles.&lt;br /&gt;
B) IBM 360&lt;br /&gt;
* Sistemas operativos: OS/360&lt;br /&gt;
* Lenguaje de control de trabajos: JCL&lt;br /&gt;
* Lenguaje de programación: PL/1&lt;br /&gt;
C) MULTICS&lt;br /&gt;
* Diferentes empresas ayudando en su desarrollo.&lt;br /&gt;
* Sistema operativo interactivo en tiempo compartido.&lt;br /&gt;
* Pensado para dar servicio de computo a toda una ciudad.&lt;br /&gt;
D) Hardware: &lt;br /&gt;
*GE-645, 2 procesadores con 256 K-palabras de 36 bits.&lt;br /&gt;
&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
*En 1973 , se crea el primer sistema operativo de tipo UNIX&lt;br /&gt;
&lt;br /&gt;
*En 1980, los fabricantes más conocidos crean sistemas operativos basados en UNIX, como IBM crea AIX, SUN crea Solaris, Digital crea The64,HP crea HP-UX y Microsoft crea Xenix. También paralelamente en la Universidad de California se crea un sistema operativo llamado BSD que se distribuye para usos didácticos.&lt;br /&gt;
&lt;br /&gt;
*En 1983, Richard Stallman inicia un proyecto llamado GNU que consiste en desarrollar un sistema operativo, que se puede distribuir de manera gratuita y libre.&lt;br /&gt;
&lt;br /&gt;
*En 1990, se crea el Intel 80386 y la universidad de California distrubuye el sistema BSD + un soporte real&lt;br /&gt;
&lt;br /&gt;
*En 1992, se lanza el 1º sistema operativo de tipo GNU / LINUX&lt;/div&gt;</summary>
		<author><name>Cridelmar1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Modelos_de_Dise%C3%B1o_de_Sistemas_Operativos&amp;diff=1330</id>
		<title>Modelos de Diseño de Sistemas Operativos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Modelos_de_Dise%C3%B1o_de_Sistemas_Operativos&amp;diff=1330"/>
				<updated>2011-10-05T19:30:55Z</updated>
		
		<summary type="html">&lt;p&gt;Cridelmar1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 2.4. Modelos de Diseño de SSOO =&lt;br /&gt;
&lt;br /&gt;
== Modos de operación del procesador ==&lt;br /&gt;
&lt;br /&gt;
Para entender los modelos de diseño de los sistemas operativos, tenemos que hacer referencia a los modos de ejecución del procesador. El modo de ejecución del procesador indica que conjunto de instrucciones y a qué recursos del procesador se puede acceder en un cierto instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
En la actualidad, un procesador ofrece como mínimo dos modos de operación que son:&lt;br /&gt;
&lt;br /&gt;
* Modo supervisor, que permite la ejecución de todo el conjunto de instrucciones que ofrece el procesador.&lt;br /&gt;
* Modo usuario, que tiene algunas restricciones de acceso a aspectos del procesador o de ejecución de instrucciones.&lt;br /&gt;
&lt;br /&gt;
== Núcleo del sistema operativo ==&lt;br /&gt;
&lt;br /&gt;
El núcleo del sistema operativo, también conocido por la terminología inglesa ''kernel'', es la parte más esencial del sistema operativo. Se trata de la capa visible de software más baja del sistema y provee y gestiona de forma segura los recursos del sistema a través de las llamadas al sistema.&lt;br /&gt;
&lt;br /&gt;
El núcleo de un sistema operativo suele operar en modo supervisor. Al operar en dicho modo un error de programación en el núcleo del sistema operativo puede resultar en un error fatal del cual el sistema sólo puede recuperarse mediante el reinicio del sistema. A tal error fatal también se le conoce en los sistemas operativos UNIX por la locución inglesa ''[http://es.wikipedia.org/wiki/Kernel_panic kernel panic]''.&lt;br /&gt;
&lt;br /&gt;
== Tipos de Sistemas Operativos ==&lt;br /&gt;
&lt;br /&gt;
Los sistemas operativos se pueden clasificar en base a la cantidad de funcionalidad implementada en su núcleo. En general distinguimos dos tipos de sistemas operativos:&lt;br /&gt;
&lt;br /&gt;
* Monolíticos: son núcleos de gran tamaño con poca flexibilidad pero con una gran cantidad de funcionalidades, las cuales son normalmente compiladas junto al núcleo en el mismo momento.&lt;br /&gt;
* Micronúcleos: son núcleos de pequeño tamaño que fueron compilados sólo con las necesidades más básicas del sistema operativo. El resto de funcionalidades son añadidas mediante la adición de módulos externos al núcleo, lo que les proporciona flexibilidad y facilidad de ampliación en detrimento del desempeño necesario para la gestión dinámica de éstos.&lt;br /&gt;
&lt;br /&gt;
No obstante, existen tipologías híbridas o que acentúan algunos aspectos, que también detallamos en esta sección.&lt;br /&gt;
&lt;br /&gt;
[[Imagen:OS-structure2.svg|880px| Comparativa de distribución de funcionalidades entre distintos tipos de SO]]&lt;br /&gt;
&lt;br /&gt;
=== Sistemas operativos Monolíticos ===&lt;br /&gt;
&lt;br /&gt;
Los sistema operativos monolíticos se caracterizan por emplear un núcleo que implementa la planificación de procesos, el sistema de comunicación de procesos, el sistema de sincronizacion de procesos, la administración de la memoria principal, la administración de ficheros y la gestión de los dispositivos de entrada/salida. Por tanto, a mayor funcionalidad implementada en el núcleo, mayor número de líneas de código que se ejecutan en modo supervisor.&lt;br /&gt;
&lt;br /&gt;
Los sistemas operativos monolíticos son los predominantes hoy día, algunos ejemplos son:&lt;br /&gt;
&lt;br /&gt;
* Sistemas operativos UNIX, tales como FreeBSD, NetBSD y OpenBSD. &lt;br /&gt;
* Sistemas operativos GNU/Linux.&lt;br /&gt;
* DOS, tales como MS-DOS y DR-DOS.&lt;br /&gt;
&lt;br /&gt;
Como inconveniente, al emplear un núcleo que incluye gran parte de las funcionalidades básicas del sistema operativo, dispone de un alto número de líneas de código ejecutándose en modo supervisor. Por ello, un error de programación en el núcleo puede provocar un ''kernel panic''. Además el hecho de añadir nuevas funcionalidades provocaría una nueva recompilación del núcleo llevando a reiniciar el sistema para que se apliquen los nuevos cambios.&lt;br /&gt;
&lt;br /&gt;
Como principal ventaja, los sistemas operativo monolíticos ofrecen un alto rendimiento puesto que las peticiones entre los diferentes componentes se reducen a invocaciones de funciones.&lt;br /&gt;
&lt;br /&gt;
=== Sistemas operativos Micronúcleo ===&lt;br /&gt;
&lt;br /&gt;
También conocidos como sistemas operativos exokernel o exonúcleo, se caracterizan por disponer de un núcleo que implementa únicamente:&lt;br /&gt;
&lt;br /&gt;
* Planificación de procesos&lt;br /&gt;
* Mecanismo de comunicación entre procesos&lt;br /&gt;
* Gestión de interrupciones&lt;br /&gt;
&lt;br /&gt;
Además, existen procesos servidores que están fuera del núcleo, que se ejecutan en modo usuario del procesador, y que implementan la:&lt;br /&gt;
&lt;br /&gt;
* Administración de memoria principal&lt;br /&gt;
* Administración de ficheros&lt;br /&gt;
* Gestión de dispositivos de entrada/salida.&lt;br /&gt;
&lt;br /&gt;
Siguiendo este esquema, cuando un proceso cualquiera solicita un servicio a través de una llamada al sistema, el micronúcleo canaliza la petición al proceso servidor correspondiente. Dicha comunicación se realiza mediante mensajería.&lt;br /&gt;
&lt;br /&gt;
La principal ventaja de los sistemas operativos micronúcleo es que, al ejecutar menos líneas de código en modo supervisor, de manera intuitiva son más fiables. Otras ventajas son que se garantiza el aislamiento de las partes que estan fuera del nucleo, como los modulos son independientes unos de otros, si cae alguno de ello los demas no se ven afectados y pueden seguir funcionando.&lt;br /&gt;
&lt;br /&gt;
Sin embargo, el principal problema que presentan es el rendimiento, puesto que cualquier petición requiere mensajería, que lleva consigo un coste extra debido a la construcción de los mensajes, el reparto y la interpretación. Son estos problemas relacionados con el rendimiento los que hacen que no existan sistemas operativos micronúcleo desplegables en productivo, a excepción de Minix 2, que tiene propósitos educativos.&lt;br /&gt;
&lt;br /&gt;
=== Sistemas basados en Máquinas Virtuales ===&lt;br /&gt;
&lt;br /&gt;
Implementan el material (hardware) en el software. Algunos sistemas operativos ofrecen técnicas de paravirtualización.&lt;br /&gt;
&lt;br /&gt;
Paravirtualización: técnica de programación que ofrecen algunos SO anfitrión para facilitar la virtualización y el rendimiento de máquinas virtuales. Ofrecen llamadas directas al sistema &lt;br /&gt;
o acceso a una API especial del anfitrión para acceder directamente a los recursos. Observamos que se deposita una gran confianza en los procesos de la VM por motivos de rendimiento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ventajas de las Máquinas Virtuales&lt;br /&gt;
** Ahorro de coste material.&lt;br /&gt;
** Se pueden tener diferentes SO en un mismo sistema.&lt;br /&gt;
** Se adapta a las necesidades de usuario.&lt;br /&gt;
** Se puede deslocalizar la máquina virtual (deslocalización: migrar a otro SO sin sufrir ningún cambio ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Desventajas de las Maquinas Virtuales &lt;br /&gt;
** Rendimiento  (KVM +  paravirtualizacion 10%).&lt;br /&gt;
** Punto único de fallos(si falla algún componente y las aplicaciones están montadas en él provoca un fallo general).&lt;br /&gt;
&lt;br /&gt;
== Otro material a consultar ==&lt;br /&gt;
&lt;br /&gt;
El estudiante puede encontrar el siguiente material de interés para complementar sus conocimientos:&lt;br /&gt;
&lt;br /&gt;
* Debate entre Linus Torvalds, creador del núcleo Linux, que sigue el paradigma monolítico y Andrew S. Tanembaum, creador de Minux, que sigue el modelo micronúcleo: http://oreilly.com/catalog/opensources/book/appa.html (en inglés).&lt;/div&gt;</summary>
		<author><name>Cridelmar1</name></author>	</entry>

	</feed>