Anda di halaman 1dari 14

Ingeniería en Desarrollo de Software

Programación de Sistemas Operativos


3er Semestre
Alumno: Daniel Pineda de la Riva
Matricula: es162006588
Docente: Mónica Mora Téllez
Unidad 4
Evidencia de Aprendizaje: Optimización en el diseño
de un sistema operativo.
Identifica y analiza los principios de optimización de un sistema operativo.

Los principios de optimización son reglas que deben estar presentes en todos sistemas o
módulos que se desarrollen para un sistema operativo. Estos son:

Primer principio: Una parte importante para el desarrollo de un software es que su


funcionalidad sea óptima; es decir que funcione de forma rápida y común, que durante la
implantación del sistema no se generen errores de diseño, por lo cual es conveniente
optimizar sólo lo necesario dentro de la arquitectura del sistema.

Segundo principio: Deben considerarse las funciones que se necesitan adicionar a la


estructura y validar si es necesario modificarla para su desempeño, dependiendo de lo
que se requiere del sistema: sencillo y rápido o robusto y lento.

Tercer principio: Por lo general, antes de que se desee optimizar un sistema, se debe
tener presente la dimensión de la arquitectura del sistema para darle la seguridad,
integridad y optimización suficiente para un buen desempeño.

Si se cubren estos puntos, el sistema operativo será óptimo.

Identifica los tipos de cachés y analiza su importancia en la optimización de un


sistema operativo.

La caché es un medio de utilidad de almacenamiento temporal, su función es habilitar el


acceso a datos que han sido recientemente consultados; esto permite hacer más ágil el
proceso de lectura que el sistema hace de los datos al momento de realizar un proceso.

Como ya se mencionó en temas anteriores, el uso de cachés es con la intención de que


aquellos datos que más se utilicen sean colocados al alcance de quien los necesita,
evitando así las constantes llamadas al procesador y así evitar la necesidad de abrir,
consultar y cerrar el archivo cada que sea utilizado. Por lo tanto, se emplea la técnica de
usar cachés que guarda en espacios de memoria aquello que más se utiliza.

Existen diferentes tipos de caches:

 Caché de bloques. es un pequeño segmento de memoria RAM, que se añade a


algún sitio del disco, con la finalidad de almacenar los datos que han sido leído
con anterioridad, teniendo como resultado agilidad al cargar los datos.
 Caché de paginación, para este tipo de caché el almacenamiento se hace en
memoria RAM, dentro del disco duro.
Analiza el contexto del sistema operativo Android.

Android es un sistema operativo para dispositivos móviles como teléfonos inteligentes y


tabletas basado en el núcleo Linux. Es desarrollado por la Open Handset Alliance, la cual
es liderada por Google, usando diversos conjuntos de herramientas de software de código
abierto para dispositivos móviles.

Fue construido para permitir a los desarrolladores la creación de aplicaciones móviles que
aprovechan al máximo el uso de todas las herramientas que un dispositivo como este
puede ofrecer.

Implementa una arquitectura en la que cualquier aplicación puede obtener acceso a las
capacidades del teléfono móvil. Por ejemplo, una aplicación puede llamar una o varias de
las funcionalidades básicas de los dispositivos móviles, tales como realizar llamadas,
enviar mensajes de texto, o utilizar la cámara, facilitando a los desarrolladores crear
experiencias más ricas y con más coherencia para los usuarios.

Está construido sobre el kernel de Linux. Además, se utiliza una máquina personalizada
virtual que fue diseñada para optimizarlos recursos de memoria y de hardware en un
entorno móvil. Android es de código abierto, y además puede ser libremente ampliado
para incorporar nuevas tecnologías de vanguardia que van surgiendo. La plataforma
continuará evolucionando a medida que la comunidad de desarrolladores trabajando
juntos puedan crear aplicaciones móviles innovadoras.

La estructura del sistema operativo Android se compone de aplicaciones que se ejecutan


en un framework Java de aplicaciones orientadas a objetos sobre el núcleo de las
bibliotecas de Java en una máquina virtual Dalvik con compilación en tiempo de
ejecución. Las bibliotecas escritas en lenguaje C incluyen un administrador de interfaz
gráfica (surface manager), un frameworkOpenCore, una base de datos relacional SQLite,
una API gráfica OpenGL ES 2.0 3D, un motor de renderizado WebKit, un motor gráfico
SGL, SSL y una biblioteca estándar de C Bionic.
La arquitectura interna de la plataforma Android, está básicamente formada por 4
componentes: aplicaciones, armazón de aplicaciones, librerías y kernel/Linux, como se
muestra en la siguiente gráfica:
Explica el objetivo del sistema operativo y sus características generales.

APLICACIÓN CARACTERISTÍCAS
Diseño de dispositivo La plataforma es adaptable a pantallas
más grandes, VGA, biblioteca de
gráficos 2D, biblioteca de gráficos 3D
basada en las especificaciones de la
OpenGL ES 2.0 y diseño de teléfonos
tradicionales.

Almacenamiento SQLite, una base de datos liviana, que


es usada para propósitos de
almacenamiento de datos.
Conectividad Android soporta las siguientes
tecnologías de conectividad:
GSM/EDGE, IDEN, CDMA, EV-DO,
UMTS, Bluetooth, Wi-Fi, LTE y WiMAX.
Mensajería SMS y MMS son formas de mensajería,
incluyendo mensajería de texto y ahora
la Android Cloud toDeviceMessaging
Framework (C2DM) es parte del servicio
de PushMessaging de Android.
Navegador web El navegador web incluido en Android
está basado en el motor de renderizado
de código abierto WebKit, emparejado
con el motor JavaScript V8 de Google
Chrome. El navegador obtiene una
puntuación de 93/100 en el test Acid3.
Soporte de Java Aunque la mayoría de las aplicaciones
están escritas en Java, no hay una
máquina virtual Java en la plataforma.
Elbytecode Java no es ejecutado, sino
que primero se compila en un ejecutable
Dalvik y corre en la Máquina Virtual
Dalvik. Dalvik es una máquina virtual
especializada, diseñada específicamente
para Android y optimizada para
dipositivos móviles que funcionan con
batería y que tienen memoria y
procesador limitados. El soporte para
J2ME puede ser agregado mediante
aplicaciones de terceros como el J2ME
MIDP Runner.
Soporte multimedia Android soporta los siguientes formatos
multimedia: WebM, H.263, H.264 (en
3GP o MP4), MPEG-4 SP, AMR, AMR-
WB (en un contenedor 3GP), AAC, HE-
AAC (en contenedores MP4 o 3GP),
MP3, MIDI, OggVorbis, WAV,
JPEG,PNG, GIF y BMP.
Soporte para streaming Streaming RTP/RTSP (3GPP PSS,
ISMA), descarga progresiva de HTML
(HTML5 <video>tag). Adobe Flash
Streaming (RTMP) es soportado
mediante el Adobe Flash Player. Se
planea el soporte de Microsoft
SmoothStreaming con el port de
Silverlight a Android. Adobe Flash
HTTP DynamicStreaming estará
disponible mediante una actualización
de Adobe Flash Player.

Soporte para hardware adicional Android soporta cámaras de fotos, de


vídeo, pantallas táctiles, GPS,
acelerómetros, giroscopios,
magnetómetros, sensores de
proximidad y de presión, termómetro,
aceleración 2D y 3D.

Entorno de desarrollo Incluye un emulador de dispositivos,


herramientas para depuración de
memoria y análisis del rendimiento del
software. El entorno de desarrollo
integrado es Eclipse (actualmente 3.4,
3.5 o 3.6) usando el plugin de
Herramientas de Desarrollo de Android.

Market El AndroidMarket es un catálogo de


aplicaciones gratuitas o de pago en el
que pueden ser descargadas e
instaladas en dispositivos Android sin la
necesidad de un PC.

Multi-táctil Android tiene soporte nativo para


pantallas multi-táctiles que inicialmente
hicieron su aparición en dispositivos
como el HTC Hero. La funcionalidad fue
originalmente desactivada a nivel de
kernel (posiblemente para evitar infringir
patentes de otras compañías). Más
tarde, Google publicó una actualización
para el NexusOne y el Motorola Droid
que activa el soporte para pantallas
multi-táctiles de forma nativa.
Bluetooth El soporte para A2DF y AVRCP fue
agregado en la versión 1.5; el envío de
archivos (OPP) y la exploración del
directorio telefónico fueron agregados
en la versión 2.0; y el marcado por voz
junto con el envío de contactos entre
teléfonos lo fueron en la versión 2.2.
Videollamada Android soporta videollamada a través
de Google Talk desde su versión
HoneyComb.
Multitarea Multitarea real de aplicaciones está
disponible, es decir, las aplicaciones
que no estén ejecutándose en primer
plano reciben ciclos de reloj, a
diferencia de otros sistemas de la
competencia en la que la multitarea es
congelada.

Características basadas en voz La búsqueda en Google a través de voz


está disponible como "Entrada de
Búsqueda" desde la versión inicial del
sistema.

Tethering Android soporta tethering, que permite


al teléfono ser usado como un punto de
acceso alámbrico o inalámbrico (todos
los teléfonos desde la versión 2.2, no
oficial en teléfonos con versión 1.6 o
superiores mediante aplicaciones
disponibles en el AndroidMarket, por
ejemplo PdaNet). Para permitir a un PC
usar la conexión 3G del móvil android se
podría requerir la instalación de software
adicional.
Elabora una herramienta de recopilación de información del análisis inicial del
diseño del sistema operativo.

Transparencia: La transparencia se determina sobre el diseño de interfaces de llamadas


al sistema, de modo que es visible si la existencia de dos o más procesadores, aparte de
saberlo por velocidad de procesamiento, lo podemos ver físicamente en alguna ventana.
También se dice que un sistema no es transparente si el acceso a los archivos remotos
(de una a otra computadora) se realiza mediante el establecimiento explícito de una
conexión en la red con un servidor remoto, es decir, tenemos que establecer comandos
de conexión entre computadoras para luego ejecutar ciertas acciones.

Flexibilidad. La flexibilidad es una de las cuestiones básicas sobre el diseño de un sistema


operativo, ya que éste debe ser adaptable a aspectos tales como los siguientes:

o Monolítico: se refiere a que la máquina deberá ejecutar un núcleo (procesador)


tradicional que proporcione la mayoría de los servicios.

o Miicronúcleo: comúnmente nombrado microkernel, este deberá proporcionar la menor


cantidad de servicios posibles, y por consecuencia los demás servicios que sean
requeridos se deben obtener a partir de servidores al nivel de usuario. De forma que
muchas de las llamadas al sistema se realizan mediante señalamiento a la ubicación del
núcleo (procesador) que va a proporcionar el servicio requerido.

Confiabilidad. Este punto puede llegar a ser tan crítico dependiendo de la objetividad del
sistema, pues si falla algún proceso, un proceso adicional al sistema operativo deberá
encargarse del trabajo. La confiabilidad puede verse disminuida, ya que en muchas de las
ocasiones se requiere que ciertos servicios simultáneos estén procesando información en
funcionamiento.

Desempeño. El desempeño juega un papel muy importante, ya que cuando se ejecuta


una aplicación se realiza en forma ágil con capacidad de poder realizar tares de
multiprocesos.

Escalabilidad. Indica que se tiene que ir mejorando, tal como lo requiere la nueva era de
tecnología, en la administración de dispositivos de E/S en el rendimiento, la velocidad y
gestión de procesos y recursos.

Portabilidad. Además de los aspectos abordados hasta el momento, la portabilidad se ha


vuelto una necesidad básica en sistemas operativos modernos, pues suelen diseñarse a
modo de tal manera que puedan utilizarse en diferentes arquitecturas de hardware, y
deban reconocer la mayoría de dispositivos de E/S sin ningún problema.
Integra en la herramienta de recopilación de información un ejemplo del análisis
inicial y las bases para iniciar el diseño de un sistema operativo y los elementos a
considerar para el diseño.

Las bases principales para comenzar el diseño de sistemas operativos, son:

La abstracción: se considera como primera base para el diseño y se refiere a la pregunta


¿qué hace el sistema operativo?, sin tomar en cuenta el ¿cómo lo hace?; por ejemplo:
para el usuario de un programa de tipo procesador de textos, no es necesario que se dé
cuenta cómo funcionan el proceso de captura de datos, ni de impresión de documentos,
basta con que lo pueda usar y funcione.

Amplitud de funciones y administrador de errores: Como se mencionaba con anterioridad


sobre el constante avance tecnológico, es conveniente aumentar las posibilidades de
multiprocesamiento de los sistemas operativos, para permitir la ejecución de varias
aplicaciones sin que el sistema operativo colapse; al respecto es conveniente que maneje
una serie de funciones que permitan administrar los posibles errores que el mismo
sistema operativo no es capaz de corregir de forma automática.

Protección al sistema operativo: la función principal de un sistema operativo es establecer


y definir las abstracciones correctas, es decir que funcione todo bien sin que al usuario le
importe cómo lo hace. Cuando se protege el sistema operativo; los archivos y otras
estructuras de datos también suelen protegerse y aislarse para evitar operaciones con
datos no autorizados, así mismo, si los usuarios requieren compartir datos y recursos, el
aislamiento debe ser bajo control del mismo. Por ejemplo: Cuando dos usuarios de
sesiones diferentes en una misma máquina quieran pausar la impresora o dar de baja una
tarjeta de video que está siendo ocupada.
Control de fallos: En lo que respecta al control de fallos, es necesario aislarlos, pues si
alguna parte del sistema se cae, no deberá hacer que el resto del sistema se caiga.

La administración del hardware es una parte fundamental del sistema operativo, pues
tiene que administrar todos los componentes de bajo nivel, así como las controladoras de
interrupciones y las controladoras de bus.

Identifica las características diferenciales del sistema operativo en el caso


correspondiente.

 Código abierto.
 Núcleo basado en el Kernel de Linux.
 Adaptable a muchas pantallas y resoluciones.
 Utiliza SQLite para el almacenamiento de datos.
 Ofrece diferentes formas de mensajería.
 Navegador web basado en WebKit incluido.
 Soporte de Java y muchos formatos multimedia.
 Soporte de HTML, HTML5, Adobe Flash Player, etc.
 Incluye un emulador de dispositivos, herramientas para depuración de memoria y
análisis del rendimiento del software.
 Catálogo de aplicaciones gratuitas o pagas en el que pueden ser descargadas e
instaladas (Google Play).
 Bluetooth.
 Google Talk desde su versión HoneyComb, para realizar videollamadas.
 Multitarea real de aplicaciones.

Identifica y explica las dificultades y obstáculos para el diseño de un sistema


operativo, ejemplifica las dificultades y obstáculos con base en el caso.

Los sistemas operativos tienen tiempos de vida largos, por lo cual los desarrolladores
deben anticiparse a estos cambios, así como verificar la retro compatibilidad. En el caso
de android ellos hacen que cada sistema operativo nuevo sea retro compatible con las
aplicaciones diseñadas para versiones anteriores, ya que su fuerte son las mismas y
deben extender este soporte.

Debe existir una manera segura de compartir información, mediante el uso de


aplicaciones android lo logra solicitando a los fabricantes que respeten la privacidad de
los usuarios mediante especificaciones.

Los sistemas deben enfrentar a usuarios que quieran comprometer la seguridad y


funcionamiento del sistema, para lo cual se requieren medidas y funciones de seguridad,
en el caso de android estas medidas se adoptan mediante el mecanismo de permisos,
avisándole al usuario cada uno de los permisos que tienen las aplicaciones sobre sus
dispositivos.

Al ser complejos, los sistemas conllevan muchas líneas de código, lo que requiere de
muchas personas trabajando para poder cumplir con los tiempos de entrega, el sistema
operativo Android está compuesto por más de 12 millones de líneas de código.
Referencias:

David Robledo Fernandez. (2015). Desarrollo de aplicaciones para android. España:


Mentor.

Silberschatz, A. (2006). Fundamentos de sistemas operativos. (7a. ed.). España: McGraw-


Hill.

Stallings, W. (2005). Sistemas operativos modernos: aspectos internos y principios de


diseño. México: Pearson, Prentice Hall.

Tanenbaum, A. (2003). Sistemas operativos modernos. México: Pearson Educación.

Beatrice Daburon. (2010). Windows 7. Barcelona: ENI.

Handz Valentine. (2010). Windows 7 y sus novedades. Barcelona: Handsofthelp.


Referencias:

Silberschatz, A. (2006). Fundamentos de sistemas operativos. (7a. ed.). España: McGraw-


Hill.
Stallings, W. (2005). Sistemas operativos modernos: aspectos internos y principios de
diseño. México: Pearson, Prentice Hall.

Tanenbaum, A. (2003). Sistemas operativos modernos. México: Pearson Educación.