Red de Respuestas Legales - Asesoría legal - Algunas cuestiones conceptuales en los sistemas operativos

Algunas cuestiones conceptuales en los sistemas operativos

El sistema operativo es un programa que administra los recursos de software y hardware de la computadora y también es el núcleo y la piedra angular del sistema informático. El sistema operativo es responsable de tareas básicas como administrar y configurar la memoria, determinar la prioridad de oferta y demanda de los recursos del sistema, controlar los dispositivos de entrada y salida, operar la red y administrar el sistema de archivos. El sistema operativo también proporciona a los usuarios una interfaz operativa para interactuar con el sistema.

Existen muchos tipos de sistemas operativos. Los sistemas operativos instalados en diferentes máquinas pueden variar desde simples hasta complejos, desde sistemas integrados en teléfonos móviles hasta sistemas operativos a gran escala en supercomputadoras. Muchos fabricantes de sistemas operativos tienen diferentes definiciones de su cobertura. Por ejemplo, algunos sistemas operativos integran interfaces gráficas de usuario, mientras que otros sólo utilizan interfaces de texto y tratan las interfaces gráficas como aplicaciones innecesarias.

La teoría de los sistemas operativos es una rama activa de la informática con una larga trayectoria. El diseño y la implementación de sistemas operativos son la base y el núcleo de la industria del software.

Los sistemas operativos modernos suelen tener una interfaz gráfica de usuario para el dispositivo de dibujo utilizado y añaden un dispositivo de entrada distinto del teclado, como un ratón o un panel táctil. Los sistemas operativos más antiguos o los servidores orientados al rendimiento no suelen tener una interfaz tan fácil de usar y, en su lugar, utilizan la interfaz de línea de comandos (CLI) y el teclado como dispositivos de entrada. Las dos interfaces anteriores son en realidad llamadas shells y su función es aceptar y procesar instrucciones del usuario (como presionar un botón o escribir instrucciones en el símbolo del sistema).

La elección del sistema operativo a instalar suele tener mucho que ver con su arquitectura de hardware. Sólo Linux y BSD pueden ejecutarse en casi todas las arquitecturas de hardware, mientras que Windows NT sólo ha sido portado a DEC Alpha y MIPS Magnum. A principios de la década de 1990, las opciones de computadoras personales se limitaban a las series Windows, las series tipo Unix y Linux. Hasta el día de hoy, Linux y Mac OS X siguen siendo las alternativas más importantes.

Los mainframes y los sistemas integrados utilizan una variedad de sistemas operativos. Recientemente, muchos hosts han comenzado a admitir Java y Linux para poder disfrutar de los recursos de otras plataformas. Los sistemas integrados han sido debatidos recientemente por varias escuelas de pensamiento, desde Berkeley Tiny OS para redes de sensores hasta Windows CE que puede ejecutar Microsoft Office.

Computadora personal: Apple Macintosh - Computadora Apple OS X, sistema Windows (solo plataforma Intel), Linux, BSD.

IBM es compatible con PC-Windows, Linux, BSD y Mac OS X (soportado no oficialmente).

Anfitrión: Burroughs MCP-B5000, IBM OS/360-IBM System/360, univac exec 8-univac 1108.

Sistemas integrados: Los sistemas integrados utilizan una gama muy amplia de sistemas operativos (como VxWorks, eCos, Symbian OS y Palm OS), así como algunas versiones simplificadas de Linux u otros sistemas operativos. En algunos casos, un sistema operativo se refiere a un enorme programa universal con software de aplicación fija incorporado. En muchos de los sistemas integrados más simples, el llamado SO se refiere al único programa de aplicación que contiene.

Sistema tipo Unix: La denominada familia tipo Unix hace referencia a una amplia variedad de sistemas operativos, incluidos System V, BSD, Linux, etc. Al ser Unix una marca registrada de Open Group, se refiere a un sistema operativo que se adhiere a los comportamientos definidos por esta empresa. Similar a Unix generalmente se refiere a un sistema operativo que contiene más funciones que el Unix original.

Los sistemas Unix pueden ejecutarse en una variedad de arquitecturas de procesador y tener altas tasas de utilización en sistemas de servidores, como estaciones de trabajo en universidades o aplicaciones de ingeniería. Las variantes de software libre de Unix, como Linux y BSD, se han vuelto cada vez más populares recientemente y han logrado grandes avances en el mercado de las computadoras de escritorio personales, como los sistemas Ubuntu.

Algunas variantes de Unix, como HP-UX de Hewlett-Packard y AIX de IBM, están diseñadas sólo para sus propios productos de hardware, mientras que Solaris de SUN se puede instalar en su propio hardware o en computadoras x86. Sistema operativo Mac de Apple Computer

Después de varios años de duro trabajo, el sistema Unix, gratuito y de código abierto, ha ido erosionando poco a poco el campo profesional del software propietario. Por ejemplo, el sistema IRIX de SGI, el gigante de las operaciones de animación por computadora, ha sido reemplazado por los sistemas Project No. 9 e Inferno diseñados por la familia Linux y el equipo de I+D de Bell Labs, los cuales se utilizan para entornos de expresión descentralizados. A diferencia de otros sistemas Unix, optan por interfaces gráficas de usuario integradas. El Plan 9 no fue popular porque no era software libre cuando se lanzó por primera vez. Posteriormente, tras el lanzamiento de la licencia de software gratuito de código abierto Lucent Public License, empezó a tener una gran cantidad de usuarios y comunidades. Inferno se vendió a Vita Four Star Dragon y se lanzó bajo la licencia GPL/MIT.

Actualmente, 472 de los 500 ordenadores más importantes del mundo utilizan Linux, 6 utilizan Windows y el resto son Unix como BSD.

Microsoft Windows: Los sistemas operativos de la serie Microsoft Windows son sistemas operativos gráficos basados ​​en MS-DOS diseñados por Microsoft para máquinas IBM. Los sistemas Windows actuales, como Windows 2000 y Windows XP, se crean en el kernel moderno de Windows NT. El kernel NT está tomado de OS/2 y OpenVMS. Windows se ejecuta en procesadores Intel y AMD de 32 y 64 bits, pero las versiones anteriores también se ejecutan en arquitecturas DEC Alpha, MIPS y PowerPC. Aunque la participación de mercado de Windows ha disminuido debido al mayor interés en los sistemas operativos de código abierto, en 2004, los sistemas operativos Windows representaban el 90% del mercado mundial de sistemas operativos de escritorio. [3]

Los sistemas Windows también se utilizan en servidores de nivel bajo y medio y admiten algunas funciones, como los servicios de bases de datos de servicios web. Recientemente, Microsoft ha invertido muchos fondos en investigación y desarrollo para que Windows sea capaz de ejecutar grandes programas empresariales.

Apple Mac OS: Mac OS es un sistema operativo que se ejecuta en los ordenadores de la serie Macintosh de Apple. Mac OS fue la primera interfaz gráfica de usuario exitosa en el mundo comercial.

Chrome OS: Google Chrome OS es un proyecto de sistema operativo informático ligero de Google, basado en el kernel Linux del navegador Chrome de Google.

Gestión de procesos: ya sea un programa residente o un programa de aplicación, se ejecuta en función del proceso. Cuando se construye una computadora con la arquitectura von Neumann, cada CPU solo puede ejecutar un proceso a la vez. Los primeros sistemas operativos (como DOS) no permitían que ningún programa rompiera esta restricción. DOS solo tenía un proceso ejecutándose al mismo tiempo (aunque DOS afirmaba tener la capacidad de terminar y esperar la suspensión (TSR), lo que podía hacerlo de manera parcial y difícil). resolver este problema). Los sistemas operativos modernos, incluso con una sola CPU, pueden aprovechar las capacidades multitarea para ejecutar múltiples procesos simultáneamente. La gestión de procesos se refiere a la capacidad del sistema operativo para ajustar procesos complejos.

Debido a que la mayoría de las computadoras contienen solo una unidad central de procesamiento, en el caso de un solo núcleo, el multiprocesamiento simplemente cambia los procesos rápidamente para que cada proceso pueda ejecutarse. En el caso de multinúcleo o multiprocesador, todos los procesos se transforman en cada procesador o núcleo mediante muchas técnicas cooperativas. Cuantos más procesos se ejecuten simultáneamente, menor proporción de tiempo podrá asignar cada proceso. Muchos sistemas operativos encontrarán este problema, como efectos de sonido intermitentes o saltos del mouse (lo que se denomina agitación del sistema, el sistema operativo solo puede seguir ejecutando su propio programa de administración y agotar los recursos del sistema, y ​​otros usuarios o programas de hardware no pueden ejecutarlo). La gestión de procesos suele practicar el concepto de tiempo compartido y la mayoría de los sistemas operativos pueden cambiar la proporción de tiempo compartido de cada proceso especificando diferentes niveles de privilegios. Cuanto mayor sea el privilegio, mayor será la prioridad de ejecución y mayor será la proporción de unidad de tiempo. El sistema operativo interactivo también proporciona un mecanismo de retroalimentación hasta cierto punto, lo que permite que los procesos que interactúan directamente con los usuarios tengan mayores privilegios.

Además de la gestión de procesos, el sistema operativo también es responsable de la comunicación entre procesos (IPC), la terminación anormal del proceso, la detección y el manejo de interbloqueos y otros problemas.

Todavía hay problemas con la ejecución de subprocesos en el proceso, pero la mayoría de los sistemas operativos no manejarán los problemas encontrados al ejecutar subprocesos. Normalmente, el sistema operativo solo proporciona un conjunto de API para que los usuarios operen por sí mismos o controlen la interacción entre subprocesos en ejecución a través del mecanismo de administración de la máquina virtual.

Gestión de la memoria: Según la ley de Parkinson: "Si le das al programa más memoria, el programa hará todo lo posible para agotarla". Por lo tanto, los programadores suelen esperar que el sistema le dé de forma ilimitada e infinita. memoria rápida. La mayoría de las arquitecturas de memoria de las computadoras modernas son jerárquicas, con los registros más rápidos y menos numerosos primero, seguidos por el caché, la memoria principal y los dispositivos de almacenamiento en disco más lentos. La administración de memoria del sistema operativo proporciona funciones para buscar espacio de memoria disponible, asignar y liberar espacio de memoria e intercambiar el contenido de la memoria y los dispositivos de almacenamiento de baja velocidad. Esta característica también se llama administración de memoria virtual y aumenta en gran medida el espacio de memoria disponible para cada proceso (generalmente 4 GB, aunque la cantidad real de RAM es mucho menor). Sin embargo, también tiene la desventaja de reducir ligeramente la eficiencia operativa y, en casos graves, incluso puede provocar que el proceso falle.

Otra actividad clave de la gestión de memoria es la gestión de ubicaciones virtuales con ayuda de la CPU. Si hay varios procesos almacenados en un dispositivo de memoria al mismo tiempo, el sistema operativo debe evitar que interfieran con el contenido de la memoria de cada uno (a menos que se ejecuten dentro de un rango controlable a través de algún protocolo que limite el rango de memoria accesible). Particionar el espacio de la memoria funciona. Cada proceso solo verá que todo el espacio de memoria (desde 0 hasta el límite superior máximo del espacio de memoria) está configurado para sí mismo (por supuesto, algunas ubicaciones están reservadas por el sistema operativo y su acceso está prohibido). La CPU almacena previamente varias tablas para comparar ubicaciones virtuales con ubicaciones de memoria reales. Este enfoque se llama configuración de paginación.

El sistema operativo también puede liberar fácilmente toda la memoria ocupada por un proceso a la vez creando un espacio de ubicación separado e independiente para cada proceso. Si el proceso no libera la memoria, el sistema operativo puede salir del proceso y liberar la memoria automáticamente.

Disco y sistema de archivos: El llamado sistema de archivos generalmente se refiere al sistema que administra los datos del disco y puede almacenar datos en forma de directorios o archivos. Cada sistema de archivos tiene su propio formato y funcionalidad especiales, como la gestión de registros o la reorganización sin disco.

Los sistemas operativos tienen muchos sistemas de archivos integrados. Por ejemplo, Linux tiene varios sistemas de archivos integrados como ext2, ext3, ext4, ReiserFS, Reiser4, GFS, GFS2, OCFS, OCFS2, NILFS y Google File System. Linux también admite sistemas de archivos no nativos como XFS, JFS, series FAT y NTFS. Por otro lado, los únicos sistemas de archivos que Windows puede soportar son FAT12, FAT16, FAT32 y NTFS. El sistema NTFS es el sistema de archivos más confiable y eficiente de Windows. Otras familias FAT son más antiguas que NTFS y tienen restricciones significativas en cuanto a la longitud de los archivos y la capacidad del disco de partición, lo que causa muchos problemas. La mayoría de los sistemas de archivos UNIX son UFS y Solaris, una rama de UNIX, recientemente comenzó a admitir un nuevo tipo de ZFS.

La mayoría de los sistemas de archivos anteriores tienen dos métodos de construcción. El sistema puede basarse en un sistema de archivos con registro en diario o en un sistema de archivos sin registro en diario. Un sistema de archivos registrado en diario puede ejecutar la recuperación del sistema de una manera más segura. Si un sistema de archivos sin un registro sufre una falla repentina del sistema, lo que provoca que la creación de datos se detenga a mitad de camino, el sistema necesita una herramienta especial de verificación del sistema de archivos para deshacer el tipo de registro y poder restaurarlo automáticamente. NTFS de Microsoft y ext3, ext4, reiserFS y JFS de Linux son sistemas de archivos de registro.

Cada sistema de archivos implementa una arquitectura de directorio/subdirectorio similar, pero detrás de las similitudes hay muchas diferencias. Microsoft usa el símbolo "\" para crear relaciones de directorio/subdirectorio, y los nombres de archivos ignoran las diferencias entre mayúsculas y minúsculas; los sistemas UNIX usan "/" para crear patrones de directorio, y los nombres de archivos tienen diferentes diferencias entre mayúsculas y minúsculas.

Red: muchos sistemas operativos modernos tienen la capacidad de ejecutar el protocolo de comunicación de red principal TCP/IP. En otras palabras, un sistema operativo de este tipo puede ingresar al mundo de la red y compartir recursos como archivos, impresoras y escáneres con otros sistemas.

Muchos sistemas operativos también admiten varios protocolos de comunicación de red de la era pasada de la iluminación de redes, como SNA creado por IBM, la arquitectura DECnet establecida por DEC en su sistema y los protocolos de comunicación dedicados desarrollados por Microsoft para Windows. . También existen muchos protocolos de comunicación desarrollados para funciones especiales, como el sistema NFS, que puede proporcionar acceso a archivos en la red. Actualmente se utiliza una gran cantidad de protocolos UDP para la transmisión de medios y mensajes de juegos.

Seguridad: La mayoría de los sistemas operativos incluyen algunos mecanismos de seguridad de la información. El mecanismo de seguridad de la información se basa principalmente en dos conceptos:

El sistema operativo proporciona al mundo exterior acceso directo o indirecto a una variedad de recursos, como archivos en unidades de disco locales, llamadas al sistema privilegiadas protegidas y Datos privados del usuario y servicios proporcionados por los programas que se ejecutan en el sistema.

El sistema operativo puede autorizar solicitudes de acceso a recursos. Permita solicitudes de autenticación, rechace solicitudes ilegales que no puedan aprobarse y otorgue los permisos adecuados a las solicitudes. El mecanismo de autenticación de algunos sistemas simplemente separa los recursos en privilegiados y no privilegiados, y cada solicitud tiene un número de identificación único, como un nombre de usuario. Las solicitudes de recursos generalmente se dividen en dos categorías:

Recursos internos: generalmente solicitudes de recursos de un programa en ejecución. En algunos sistemas, una vez que un programa se está ejecutando, puede hacer cualquier cosa (como los virus de la era DOS), pero generalmente el sistema operativo le da al programa un código de identificación y, cuando el programa realiza una solicitud, su código se compara con el acceso a la información requerida. relación de recursos entre permisos.

Fuentes externas: solicitudes de recursos de equipos no locales, como inicios de sesión remotos en el equipo local o algunas solicitudes de conexión de red (FTP o HTTP). Para identificar estas solicitudes externas, el sistema puede imponer requisitos de autenticación a la solicitud. Normalmente se le pedirá que introduzca un nombre de usuario y la contraseña correspondiente. En ocasiones, el sistema utiliza otros métodos de autenticación, como tarjetas magnéticas o datos biométricos. En algunos casos, como las comunicaciones de red, a menudo se puede acceder a los recursos (como servidores FTP anónimos o servicios P2P) sin autenticación.

Además de permitir/denegar formas de seguridad, los sistemas de alta seguridad proporcionarán opciones de registro que permitirán registrar varias solicitudes de acceso a recursos (por ejemplo, "¿Quién leyó este archivo?").

Dado que las organizaciones militares y comerciales registran datos confidenciales en las computadoras, los mecanismos de seguridad han sido una preocupación y un debate de larga data a lo largo de la historia de los sistemas operativos. El Departamento de Defensa de EE. UU. (DoD) estableció el Programa de evaluación de sistemas informáticos confiables (TCSEC), que estableció los principios básicos para evaluar la efectividad de los mecanismos de seguridad. Esto es muy importante para los autores de sistemas operativos porque TCSEC es un procedimiento estándar utilizado para evaluar, clasificar y seleccionar sistemas informáticos que procesan, almacenan y adquieren datos sensibles o confidenciales.

Seguridad de la información interna: La seguridad de la información interna puede verse como un medio para evitar que los programas en ejecución accedan a los recursos del sistema a voluntad. La mayoría de los sistemas operativos permiten que programas comunes operen directamente la CPU de la computadora, por lo que surgen algunos problemas, como cómo detener por la fuerza un programa que puede manejar transacciones como el sistema operativo y ejecutar las mismas instrucciones especiales. Después de todo, en este caso el sistema operativo es simplemente otro programa igual.

Las CPU fabricadas para sistemas operativos de uso general suelen implementar el concepto de protección de instrucciones especiales hasta cierto punto a nivel de hardware. Normalmente, los programas con niveles de privilegios más bajos se bloquean cuando quieren ejecutar algunas instrucciones especiales, como acceder directamente a dispositivos externos como discos duros. Por lo tanto, el programa debe pedirle al sistema operativo que ejecute instrucciones especiales para acceder al disco. Por lo tanto, el sistema operativo tiene la oportunidad de verificar la identidad del programa y aceptar o rechazar su solicitud en consecuencia.

En hardware que no admite una arquitectura de instrucciones especiales, otro y único método de protección es que el sistema operativo no utiliza directamente la CPU para ejecutar el programa del usuario, sino que simula una CPU o proporciona un sistema de código p (pseudo código máquina en ejecución), permitiendo que el programa se ejecute en una máquina virtual como Java.

El mecanismo de seguridad interno es particularmente importante en computadoras multiusuario: permite que cada usuario del sistema tenga sus propios archivos y directorios personales a los que otros usuarios no pueden acceder ni eliminar a voluntad. Debido a que es probable que cualquier programa eluda el monitoreo del sistema operativo, es aún más probable que eluda el monitoreo del programa de skimming, y un mecanismo de seguridad interno convincente también es muy importante cuando se inicia el skimming.

Seguridad de la información externa: Normalmente, un sistema operativo proporciona (aloja) diversos servicios a ordenadores o usuarios de otras redes. Estos servicios suelen ser proporcionados por un punto de acceso numérico detrás de un puerto o dirección de red del sistema operativo. Normalmente, este servicio incluye uso compartido de archivos (NTFS), uso compartido de impresiones, correo electrónico, servicios web y Protocolo de transferencia de archivos (FTP). La vanguardia de la seguridad de la información externa son los dispositivos de hardware como los firewalls. A menudo se instalan muchos tipos de firewalls de software dentro del sistema operativo. Se pueden configurar firewalls de software para aceptar o rechazar conexiones entre los servicios que se ejecutan en el sistema operativo y el mundo exterior. Por lo tanto, cualquiera puede instalar y ejecutar algún servicio de red inseguro como Telnet o FTP y configurar un mecanismo para bloquear todas las demás conexiones, excepto algunos canales privados, para evitar malas conexiones.

Interfaz de Usuario: La mayoría de los sistemas operativos actuales incluyen una interfaz gráfica de usuario. Hay varios sistemas operativos más antiguos que integran estrechamente la interfaz gráfica de usuario con el núcleo, como las primeras implementaciones de Windows y Mac OS. Este método puede proporcionar una capacidad de respuesta de gráficos más rápida y ahorrar esfuerzo sin cortar módulos, pero tendrá fuertes efectos secundarios. Por ejemplo, una falla del sistema de gráficos provocará que todo el sistema falle, como una pantalla azul de la muerte. Muchos sistemas operativos modernos se han vuelto modulares, separando los subsistemas de la interfaz gráfica del núcleo (se sabe que Linux y Mac OS X fueron diseñados originalmente de esta manera, y algunas versiones extendidas de Windows finalmente adoptaron este enfoque).

Muchos sistemas operativos permiten a los usuarios instalar o crear cualquier interfaz gráfica que deseen[6]. La mayoría de los sistemas Unix y derivados de Unix (BSD, Linux y Minix) suelen instalar el sistema X Window utilizando el entorno de escritorio GNOME o KDE. Sin embargo, algunos sistemas operativos no tienen interfaces gráficas de usuario tan flexibles, como Windows. Este tipo de sistema operativo solo puede cambiar su interfaz gráfica de usuario a través de programas adicionales, o incluso cambiar solo partes como el estilo del menú o la configuración del color [solicitud de fuente].

Las interfaces gráficas de usuario se mantienen al día. Por ejemplo, Windows cambiará su interfaz gráfica de usuario cada vez que se lance una nueva versión, y la GUI de Mac OS también sufrirá cambios importantes cuando se lance Mac OS X.

Controlador: El llamado controlador de dispositivo se refiere a un software informático diseñado para interactuar con el hardware. Por lo general, es una interfaz de interacción de dispositivo bien diseñada que utiliza el subsistema de programación informática o el subsistema de comunicación conectado al hardware para proporcionar al dispositivo la función de ordenar y recibir información y, en última instancia, proporciona mensajes al sistema operativo o programa de aplicación; Los controladores son software diseñado para hardware y sistema operativo específicos. Generalmente se ejecutan bajo el kernel del sistema operativo en forma de módulos centrales del sistema operativo, paquetes de software de aplicación o programas informáticos comunes para lograr el efecto de una interacción transparente y fluida con el hardware y proporcionar un hardware. Se requiere un controlador de interrupciones cuando se manejan interfaces de hardware asíncronas que varían en el tiempo.

El objetivo principal del diseño de controladores es abstraer operaciones. Cualquier módulo de hardware, incluso el mismo dispositivo, tiene grandes diferencias en el diseño de hardware. Los módulos más nuevos de los fabricantes son generalmente más confiables, más eficientes y se controlan de manera diferente. Las computadoras y sus sistemas operativos a menudo no pueden predecir la diferencia entre los dispositivos existentes y los nuevos y, por lo tanto, no pueden saber cómo funcionan. Para resolver este problema, el sistema operativo generalmente formula activamente el modo operativo de cada dispositivo, y la función del controlador es traducir las descripciones de comportamiento formuladas por el sistema operativo a un modo operativo personalizado que el dispositivo pueda comprender.

Una vez instalados los controladores teóricamente adecuados, el nuevo dispositivo correspondiente se ejecutará sin problemas. Este nuevo controlador puede hacer que el dispositivo encaje perfectamente en el SO, de forma que los usuarios no sepan que se trata de una función que el SO no tiene originalmente.