¿El software operativo del teléfono alguna vez se hará más pequeño, como las computadoras que ocupaban habitaciones enteras ahora ocupan el espacio de una computadora portátil?

Su pregunta indicaba una falta de comprensión del hardware frente al software. El tamaño físico de las computadoras que ocupaban habitaciones enteras se debía a la falta de capacidad para crear hardware de manera eficiente. Esas computadoras tenían literalmente miles de veces menos RAM y potencia de procesamiento y espacio de almacenamiento que las computadoras de hoy. El espacio físico que consume una computadora tiene poco o nada que ver con sus capacidades de hardware.

Su pregunta es sobre el espacio de almacenamiento o el uso de RAM de una pieza de software: el sistema operativo para un teléfono inteligente. Desafortunadamente, los sistemas operativos no se reducen como lo hace el hardware. Si bien en menos de 50 años pasamos de una computadora del tamaño de una habitación a un teléfono inteligente en su bolsillo, la cantidad de cosas que su teléfono inteligente puede hacer a la vez es una locura en comparación con esa computadora a escala de habitación. La potencia de procesamiento utilizada por su teléfono inteligente para ejecutar incluso un par de aplicaciones a la vez sería demasiado para una PC de escritorio de la década de 1990, con RAM medida en kilobytes, no en gigabytes como los dispositivos de hoy. En otras palabras, en aquel entonces 256,000 bytes (256 kilobytes) de RAM era mucho.

Hoy en día, mi teléfono inteligente tiene más de 3,000,000,000 de bytes (3 gigabytes) de RAM y hay teléfonos en el mercado con más de 6,000,000,000 (6 gigabytes) sin mencionar computadoras de escritorio con cantidades impías de hasta 128,000,000,000 (128 gigabytes) en una sola placa base.

El hecho es que el sistema operativo en su teléfono consume tanto como 1 gigabyte de RAM porque deja a varios gigabytes libres para hacer otras cosas y al mismo tiempo permite que el sistema operativo también haga mucho. Dado que en el futuro, los teléfonos pueden tener docenas de gigabytes de RAM, sería una tontería reducir el sistema operativo para usar 250 megabytes de RAM, ya que eso significaría que su sistema operativo podría hacer una fracción más, simplificar demasiado las cosas. La razón por la que el software consume recursos de hardware como RAM, espacio de almacenamiento y potencia de procesamiento cada vez más a medida que pasa el tiempo es porque esos recursos son simplemente mucho más abundantes. Esto se ilustra en parte simplemente mirando una determinada tecnología informática que evoluciona con el tiempo.

Obtenemos más almacenamiento, usamos más almacenamiento, el ciclo continúa. Lo mismo para cualquier otra pieza de interacción de software / hardware.

La respuesta es “depende de lo que cuentes”.

A medida que los microprocesadores aumentan su capacidad y las personas diseñan ASIC y FPGA que descargan parte del trabajo, el tamaño del software se reducirá. Sin embargo, la duración de la batería también se reducirá.

A medida que los desarrolladores mueven más cosas del hardware al software, para conservar la vida útil de la batería, el tamaño del software crecerá.

Los dos no están en perfecto equilibrio, a veces se encuentran mejores soluciones de hardware, a veces los compiladores generan un mejor código, a veces se reduce la cantidad de duplicación de código, a veces se elimina el software innecesario.

El teléfono Android moderno, por ejemplo, ejecuta una gran cantidad de software utilizando Java. Java se ejecuta dentro de una computadora simulada dentro de la computadora real. Esto lo hace portátil, también lo hace obscenamente hambriento de recursos.

Si los desarrolladores de teléfonos dejaran de usar conjuntos de chips oscuros y propietarios y comenzaran a ofrecer valor agregado de alguna otra manera, entonces podría eliminar Java de la ecuación. Todo podría compilarse y optimizarse para la plataforma nativa. Eso reduciría muchos gastos generales. Sin JVM requerido, también liberaría mucha memoria.

Nadie necesita usar exactamente el mismo hardware, siempre que el sistema operativo haga que las diferencias sean invisibles para la aplicación, entonces todavía hay espacio para el valor agregado en el hardware.

Las opciones de SO por ahí son interesantes.

Windows 8 no es pequeño. Windows 10 es aún menos pequeño. Windows CE tampoco era particularmente pequeño, y eso ni siquiera hizo nada.

Linux, un sistema operativo que amo mucho y que he utilizado como mi entorno principal de casa desde la primera distribución de MCC, es probablemente más pesado de lo necesario. Dudo que el equipo de Android esté escaneando en Internet la mejor de las mejores bibliotecas alternativas o esté ajustando cada El último ciclo de reloj y el byte pueden exprimirse del sistema, porque muchos de los problemas que tiene Android provienen de modificaciones de kernel de baja calidad y un control de calidad deficiente. Esa no es la señal de un equipo que tiene tiempo, energía y / o conocimientos para obtener lo mejor del sistema.

La oferta de Apple tiene muchos de los mismos problemas que Android: la calidad del código no existe para justificar la creencia en la minimización del código.

Personalmente, no estoy 100% seguro de por qué usaría ninguno de estos en un teléfono. Si insiste en una máquina virtual que pueda manejar su propia administración de memoria, entonces podría estar usando FreeRTOS. Muchos teléfonos cambian de tarea, por lo que Bare Metal OS sería adecuado para sus necesidades.

Lamentablemente, el hardware moderno es tal que los desarrolladores de software no tienen que preocuparse por escribir código compacto. Eso no quiere decir que sea un mal código. Es solo que el hardware está ahí y entonces, ¿por qué intentar hacer un software con una huella pequeña? Eso sería más difícil y, en muchos sentidos, más difícil de depurar. Soy un programador profesional de c ++, pero creo que me resultaría difícil escribir código en computadoras construidas hace 30 años, cuando las restricciones de hardware eran una preocupación real. En estos días, prácticamente no hay problemas de hardware y no hay necesidad real de escribir código pequeño y compacto. Por supuesto, hay excepciones: los sistemas embebidos, por ejemplo, tienen requisitos mucho más estrictos y son mucho más estrictos con el hardware y requerirían necesariamente bases de código más compactas.

No, el tamaño del sistema operativo no se reducirá.

  1. La reducción se limita al componente físico de las computadoras. Para el hardware de la computadora, los transistores se vuelven más pequeños con el tiempo debido a la Ley de Moore. En última instancia, los datos están vinculados por el número de transistores , no por el tamaño de los transistores.
  2. En software de computadora, menos códigos significa menos funciones *. Los programas de computadora se vuelven cada vez más capaces y las aplicaciones del mundo real se vuelven más avanzadas, lo que requiere más códigos.
  3. Un software más pequeño solo significará reducción de información , dejando de lado los algoritmos de compresión, que se usan solo en archivos almacenados (por ejemplo, documentos, imágenes, archivos de audio) y no en sistemas operativos.

* Por razones de coherencia, es más preciso medir códigos de bajo nivel que códigos de alto nivel.

Sin duda sería bueno, pero el software moderno es bastante complejo y las nuevas versiones tienden a aumentar la complejidad.

A menudo esto tiene el costo de un mayor uso de memoria.

No funciona así. Aunque las computadoras se hacen más pequeñas, las especificaciones se hacen más altas.

More Interesting

¿Por qué no hay industrias de TI / software en ciudades como Varanasi, Allahabad, Gorakhpur y Patna a pesar de la existencia de un grupo técnico?

Sector de TI: en los EE. UU., Incluso personas no técnicas pueden unirse a empresas de TI y son totalmente bienvenidas. En la India, ¿no se valora a las personas con antecedentes técnicos?

¿Qué patrón de diseño usa la tubería del sombreador?

Si disfruto la creación de software y la programación de sistemas más que la programación competitiva, ¿cómo puedo construir mi carrera sin un perfil de codificación, como estudiante de CSE?

Repetidamente cambio mi diseño. ¿Es un signo de un mal desarrollador de software?

Estoy haciendo todo el trabajo en mi departamento de DevOps y los ingenieros superiores no tienen idea, ¿qué puedo hacer para ascender en la escalera?

¿Cuál es la mejor universidad para estudiar informática en Australia?

¿Cómo manejan algunos desarrolladores los sofocantes entornos / prácticas ágiles?

Recientemente en mi empresa, hemos recurrido más a empresas externas para el desarrollo. Soy un desarrollador nuevo, ¿cómo puedo desarrollar mis habilidades en este entorno?

Tecnología: ¿Qué implica "gráfico"?

¿Qué es DevOps? ¿Cuáles son los deberes de un ingeniero de DevOps?

Ingeniería de software / sistemas / Linux: ¿cómo se llega al punto de disfrutar leyendo "páginas man" y otros tipos de documentación?

¿Es realista mantener las especificaciones actualizadas?

¿Quién es más probable que tenga más éxito en DevOps: un desarrollador que aprende habilidades de administración de sistemas o un administrador de sistemas que adquiere algunas habilidades de desarrollo de software?

¿Cómo priorizan los desarrolladores de startups la cobertura de prueba y TDD?