Cómo ejecutar una computadora sin un sistema operativo

Claro, puedes hacer eso.

En una computadora simple, como un “Arduino” (¡Google!), No hay sistema operativo. Es posible que tenga un teclado, pero tal vez la computadora esté dentro de un lavavajillas, o que se esté utilizando para conducir un robot … ¡sin teclado!

Hay MUCHAS situaciones en las que no hay teclado, ni mouse, ni pantalla. La computadora recibe información de botones, interruptores, quizás sensores que detectan la temperatura o el brillo de la luz o algo así.

Esto se llama “Computación integrada”, y (para mí) es muy divertido.

Para escribir programas para una computadora tan aislada (el “Sistema de destino”), debe usar otra computadora (el “Sistema de desarrollo”) para escribir en ella, y luego descargar el programa en su computadora de destino a través de un cable USB. o tal vez escribiendo el programa en una tarjeta de memoria y conectándolo a la computadora de destino … algo así.

En particular, no necesita saber “binario” (aunque podría ser útil para algo como un robot o una lavadora donde está hablando con hardware especializado). Simplemente puede escribir programas en un lenguaje como C o C ++ que pueda compilarse.

Para ejecutar un compilador, probablemente necesite algo muy parecido a un sistema operativo. Por lo tanto, el compilador no se ejecutará en el sistema de destino, sino en su máquina de desarrollo.

Para tomar un ejemplo específico: estoy trabajando con un amigo que está comenzando una “Sala de escape”. Necesitan un montón de ‘objetos inteligentes’, cosas que saben cuando han sido recogidos, entregados, colocados en un lugar específico … ese tipo de cosas.

Así que elegí una computadora TINY llamada ESP8266, que cuesta $ 2, es más pequeña que mi miniatura, tiene una interfaz WiFi incorporada y una forma de conectarla a un conector USB, muchos pines de repuesto para conectar cosas, y un buena cantidad de memoria “flash” incorporada … no hay un “sistema operativo” real, aunque tiene un software muy primitivo incorporado en su memoria flash para hacer cosas como acceder a la interfaz WiFi … sin embargo, gran parte de eso no es para mi gusto … así que voy a reescribir la mayor parte.

Todo el software de “Desarrollo” (editor de texto, compilador, enlazador, unidad de disco, etc.) se ejecuta en mi PC con Linux (aunque podría estar en una máquina con Windows).

Entonces, así es como funciona:

  • Escribo código C ++ en mi PC con Linux usando un editor de texto normal.
  • Utilizo una herramienta de Linux llamada “make” para organizar la construcción de mi software de manera eficiente.
  • Utiliza una versión especial del “compilador GNU C ++” (g ++) para compilar el software para el procesador que ejecuta ESP8266. Este es un compilador diferente del que usaría para compilar código para ejecutar en la computadora Linux … hay diferentes archivos de encabezado y diferentes archivos de biblioteca.
  • Cuando el programa se compila correctamente, uso un programa especial que se comunica desde la máquina Linux a la placa ESP8266 a través de un cable USB. Ese programa descarga el código compilado del paso anterior en la memoria flash del ESP8266. En realidad, hay una pieza especial de hardware que se conecta desde el cable USB al ESP8266 porque esa máquina es demasiado pequeña para tener un conector USB.
  • Una vez que mi programa se almacena en la memoria flash de la placa ESP, comenzará a ejecutarse cada vez que enciendo la alimentación de la placa.
  • Si dejo la placa ESP conectada a mi PC, entonces mi programa puede enviar texto al puerto USB y leer el texto enviado a través del USB.
  • El software llamado “pantalla” en la PC me permite ver lo que el ESP envía desde su puerto USB, y usar el teclado de mi PC para escribir cosas en él.
  • Pero en este punto, el sistema ESP NO tiene funciones de “biblioteca estándar”, por lo que no tiene funciones malloc / free, printf, no string, nada de eso. En este momento, no tengo forma de hablar con el puerto USB desde el extremo ESP de las cosas.
  • Así que sueldo un botón a un pin del chip ESP y un LED de tres colores (rojo / verde / azul) a otros tres pines … y escribo un programa súper simple que ilumina el LED en un color diferente cada vez que presiona el botón. Este es un programa de 20 líneas sin llamadas a la biblioteca estándar … nada. Funciona muy bien
  • Tengo que escribir “malloc” y “free”, y algunos contenedores que hacen que los operadores “nuevos” y “eliminar” de C ++ los usen … y un programa llamado “crt0” que se ejecuta ANTES de “main” y hace que todas las variables globales de C ++ se ser “construido”. Pero debido a que (hasta ahora) no hay teclado ni pantalla, la única forma de depurar esto es encender el LED en diferentes colores para la salida y presionar el botón para ingresar. Depurar este código es algo doloroso … pero tengo un truco bajo la manga …
  • En cambio, puedo compilar mi software ESP para que se ejecute en mi caja Linux. Esto me permite probar el código malloc / free para asegurarme de que sea sólido como una roca. Solo cuando funciona de manera confiable en Linux lo pongo en el ESP para probar … ¡con el botón y los LED puedo verificar que las funciones que ejercen el malloc / free son felices porque el LED es verde y no rojo!
  • A continuación, escribo algunos “controladores de interrupción” de bajo nivel que hacen que se llame a una función C ++ cada vez que llega un byte USB, o cuando se envía un byte USB. Esto me permite escribir mis propias versiones de “strcpy”, “strcat”, “putchar”, “getchar”, luego “put” y “gets”. Estos son HORRIBLEMENTE difíciles de hacer funcionar con solo un botón y un LED para la depuración, y debido a que se trata de la interfaz de hardware, no puedo probarlo en mi caja Linux antes de ponerlo en el hardware ESP.
  • Finalmente puedo hablar con el ESP usando el teclado y la pantalla en mi PC usando USB. HOORAY!
  • Luego escribo una versión mínima y simplificada de “printf” y “scanf” … les faltan muchas de las cosas que tienen printf y scanf “reales”, pero son adecuadas para mis necesidades. No quiero un código GRANDE y COMPLICADO en el ESP porque no tiene mucha memoria.
  • Las cosas comienzan a ser bastante civilizadas ahora, por lo que puedo comenzar a soldar más hardware en el chip ESP … Agrego un sensor de inclinación y un convertidor digital a analógico casero con amplificador y altavoz. ¡Ahora puedo escribir un programa que emite un pitido cuando inclina el sensor de inclinación!
  • Ahora puedo desconectar el ESP de la PC y alimentarlo con una batería.
  • ¡Lo celebro haciendo una caja cortada con láser para colocar el sistema de modo que no sea un montón de cables y tableros de prototipos esparcidos por mi escritorio!
  • Incline la caja … va “BEEEEEEEEP” hasta que lo nivele nuevamente.
  • Escribo una biblioteca de sonidos que puede reproducir un sonido almacenado en un bloque de memoria.
  • Escribo un sistema de archivos SIMPLE de solo lectura que tiene un único directorio “plano” y un montón de archivos almacenados consecutivamente en la memoria flash. Escribo una herramienta en Linux que toma todos los archivos en un directorio de Linux en particular y los concatena en un solo archivo y antepone la estructura de mi “directorio” al principio. Entonces puedo ejecutar “mkespfs pathname> file.bin” en Linux, y escribir el archivo resultante en la memoria flash ESP.
  • A continuación, escribo “abrir”, “cerrar”, “leer” y “buscar” para mi primitivo sistema de archivos ESP, ¡y ahora puedo “abrir” un archivo y leerlo!
  • Ahora puedo volcar un montón de muestras de sonido en un directorio en Linux, ejecutar mi programa mkespfs y luego hacer que el ESP reproduzca el sonido que quiera. ¡Descargo un montón de archivos “WAV” de Internet y hago que mi pequeña caja grazne, grite, explote y demás!
  • Todo esto entra en la pequeña caja de corte láser.
  • Enciéndalo, póngalo sobre una mesa, y si alguien lo levanta, grita “¡HEY! ¡PONEME ABAJO! “… si no lo haces en 10 segundos, grita” ¡AYUDA! ¡AYUDA! ¡ESTOY ROBADO! ”… y así sucesivamente.
  • Procedo a escribir código para interactuar con los controladores WiFi integrados.
  • Escribo un servidor HTTP pequeño y minimalista y pongo un montón de archivos HTML en mi unidad flash, ¡y ahora tengo una caja que es solo un poco más grande que tres baterías AAA que tiene un sitio web!
  • “Fingí” un sistema de comando CGI que llama a funciones en mi software en lugar de ejecutar un programa separado … ¡ahora “GET” y “POST” funcionan desde mis páginas web!
  • Sueldo juntos alrededor de 20 de estas máquinas … más baterías … más cajas cortadas con láser.
  • Puedo enviar comandos a cualquiera de mis cajas pequeñas desde mi teléfono, ¡cada una es un sitio web! ¡De modo que puedo ocultar mis pequeños servidores web en la casa y sorprender a la gente haciendo que cualquiera de ellos diga cosas desde una interfaz de página web en mi teléfono cuando estoy a 1000 millas de distancia por negocios!

Ahora, para ser claros, esta es una computadora de $ 2, algunas resistencias y un altavoz dentro de una caja de 1 ″ x1 ″ x3 ″. ¡Las baterías en el interior cuestan más que toda la computadora!

Pero puedo hacer cientos de estos, todos pueden hablar entre ellos … lo que tenemos aquí es el comienzo de mi propio “Internet de las cosas” personal.

Puedo agregar todo tipo de sensores interesantes: estoy trabajando en una interfaz de escáner de “campo cercano”. Luego puedo pegar calcomanías NFC en las cosas y mi pequeña computadora sabrá cuándo se coloca encima de una de ellas, y puede reaccionar de manera autónoma o enviar un mensaje WiFi a un servidor que le dirá qué (si es que hay algo) que hacer .

Tengo un software del lado del servidor que ejecuta un “script de juego” completo e integrado que usted crea con un “lenguaje de programación” gráfico que le permite decir cosas como:

Si el florero se coloca en el centro de la mesa, dígale al servidor de sonido que reproduzca gritos aleatorios a bajo volumen de los diez generadores de sonido en la habitación, y haga que la imagen en la pared rezuñe sangre de sus ojos

Sí, ¡una pequeña bomba y una olla de ketchup conectada a un ESP que acepta comandos WiFi para activar un relé de estado sólido que hace funcionar la bomba durante unos segundos! La máquina sabe cuántas veces puede hacer esto hasta que se agote el depósito de ketchup, y puede decirle al operador que vuelva a llenar el contenedor antes de la próxima ejecución del juego.

Desarrollas una capacidad, un pequeño paso a la vez hasta que tengas algo increíble.

Al final, ¡la gente ni siquiera puede decir que hay computadoras haciendo el trabajo detrás de escena!

Realmente NO NECESITA un sistema operativo para estas cosas, y si quiere algo lo suficientemente pequeño como para esconderse dentro de lugares físicos pequeños y lo suficientemente barato como para tener CIENTOS de ellos en una sola habitación, entonces realmente no puede tener un sistema operativo real

Bueno … también necesita un programa para interpretar el teclado, y uno para generar la respuesta en su pantalla …

En los viejos tiempos usábamos una “consola” o “panel frontal”, que significa algo como:

las luces le dicen cuál es el patrón de bits en varios registros …

La fila superior muestra el campo de datos, el campo de instrucciones (generalmente ignorado) y el contador del programa.

La segunda fila contiene la dirección de memoria.

la tercera fila es el búfer de memoria

la cuarta fila contiene un enlace (carry) y el valor del acumulador.

(la última fila solo existía SI tuvieras hardware multiplicador, y contuviera el contador de pasos multiplicador y el cociente multiplicador)

El dispositivo de entrada son los interruptores de paleta en la parte inferior

Para el PDP-8, un área en blanco útil (a la izquierda con la tabla de números con el trozo de cinta adhesiva en el medio) era un cargador de arranque (cinta de papel, creo que es).

Las luces en el cuadro de la derecha identifican la instrucción que se está ejecutando (la primera columna, y solo había 8 instrucciones),

La segunda columna era el estado del procesador y la ALU,

La tercera columna, si la CPU estaba funcionando, detenida o en pausa.

Nota: no hay teclado ni pantalla aparte de lo que está en el panel frontal. El periférico estándar era un teletipo ASR modelo 33, con una cinta de papel adjunta:

Otras computadoras utilizan diferentes tipos de “consola” o “panel frontal” con diferentes teclas disponibles. Algunos usaron diales giratorios para seleccionar valores hexadecimales, establecer velocidades de reloj …

Un panel frontal PDP-10

Un panel frontal de IBM 360.

Creo que entiendo lo que quieres decir. ¿Cómo comenzaría por “no tener una computadora con un sistema operativo” y crear código para hacer una computadora con un sistema operativo? La respuesta es “un paso a la vez”. Nunca tendremos un caso en el futuro cuando no tengamos una computadora muy poderosa para hacer esto, así que ahora es fácil, pero en el pasado muchas de las El código básico para hacer la visualización, entrada y salida se almacenó en pequeños chips ROM y era completamente estático. Esos fueron programados en código de máquina en cinta de papel (¡en realidad no!), Que se transfirió a un simulador para probar, y luego se quemó en la ROM una vez que funcionó.

Lo grandioso es que una vez que tiene “una computadora” puede levantarse en una pala, acuñar una frase y usar esa computadora, sin importar cuán bajo sea, para crear un compilador para una computadora mucho más poderosa, etc. Entonces, en cada iteración de la arquitectura del procesador, siempre hemos tenido un “algo más antiguo” que creará código que funciona en otra cosa. Si observa cómo se programan las supercomputadoras, se dará cuenta de que no lo están. Las estaciones de trabajo básicas crean los modelos para que las supercomputadoras funcionen, luego cargan esos modelos en el regulador para la supercomputadora, que luego ejecuta ese modelo.

Por lo tanto, siempre necesitaremos computadoras para crear computadoras, pero en la era actual es un poco como decir “creamos las herramientas que hicieron un avión sin esas herramientas” 🙂

En general, una computadora puede hacer muchas cosas sin un sistema operativo, y como programadores, a esto le llamamos programación básica. Lo que generalmente implica la programación básica es crear aplicaciones de un solo propósito, en oposición a la naturaleza de propósito general de una computadora convencional orientada al usuario. En estos días, la programación de metal desnudo generalmente se realiza en placas de microcontrolador de pequeñas a pequeñas, ya que son lo suficientemente simples y las aplicaciones para las que se usan son lo suficientemente pequeñas y simples que un sistema operativo no es necesariamente útil. De hecho, para algunos propósitos, un sistema operativo simplemente se interpone en el camino, particularmente si no es un sistema operativo en tiempo real. Incluso en estas placas pequeñas, muchas están construidas con la intención de ejecutar un sistema operativo, como el popular Raspberry Pi, que ejecuta Linux.

Aún así, es posible escribir aplicaciones que usan computadoras más grandes como PC, que se ejecutan sin un sistema operativo. No recientemente, pero he hecho esto, integrando la aplicación en una EPROM que el BIOS invoca como parte de su secuencia de inicialización. Se realizó para minimizar el tiempo de inicio y ejecutarse perpetuamente sin ningún medio de almacenamiento, controlando parte del hardware personalizado del bus ISA que construí.

Hay placas de CPU que estaban destinadas a ejecutar CP / M pero se programaron con aplicaciones de metal desnudo escritas en 8085 FORTRAN a fines de los 70 o principios de los 80 en mi lugar de trabajo. Estos se están ejecutando hasta el día de hoy. Si alguien pudiera encontrar el código fuente, estoy seguro de que lo reemplazarían con algo más nuevo.

Un híbrido interesante es el producto de CPU TI Sitara ARM (utilizado en Beagle Bone), que felizmente ejecuta Linux en la CPU principal, pero también tiene otras dos CPU en el mismo dado, y que están destinadas a ejecutar código de metal desnudo (re: Sistemas operativos que se interponen en el camino).

A2A!

En primer lugar, una computadora es perfectamente feliz sin un teclado. Su automóvil tiene fácilmente unas docenas de ellos, sin teclados. Pero tiene razón sobre la necesidad de comunicarse, aunque, como puede ver en su automóvil, un conjunto de sensores para entrada y algunos actuadores como salida está bastante bien.

En cuanto a la más básica de todas las necesidades, normalmente ya está a bordo de casi cualquier sistema y se llama un “monitor” para la versión más primitiva o “bios” para algo un poco más elaborado.

Si tiene un sistema completamente nuevo y vacío, el primer paso sería crear un ensamblador. por supuesto, podría hacerlo como los primeros programadores con el manual del Prozessor y construir sus instrucciones a mano, anotarlas en una hoja de papel (o dos o algunas pilas) y luego ingresarlas en un archivo que pueda luego transfiéralo a su máquina. La mayoría de los chips Prozessor integrados tienen una interfaz llamada JTAG que le permite programar la memoria flash interna directamente sin la necesidad de un programa de monitor.

Pero hoy, el proceso llamado bootstrapping (construir un nuevo conjunto de herramientas para su máquina) es mucho más fácil, ya que puede escribir un ensamblador cruzado principalmente en una especie de sistema de bloques de construcción y los compiladores C están escritos en C y El compilador está casi listo si tiene el ensamblador cruzado.

Hoy todo lo que normalmente hace el fabricante del chip. Entonces compra los chips y un tablero prototipo y obtiene las herramientas para desarrollar software. Un compilador C casi siempre estará disponible, pero por ejemplo NO tendrá el stdio.h u otros encabezados que necesitarían un sistema operativo.

Para un sistema un poco más sofisticado, a veces hay disponible un sistema operativo (en tiempo real). Esto facilita su trabajo si necesita múltiples hilos, por ejemplo.

No todas las herramientas son necesariamente gratuitas, pero ¿qué mil dólares para un compilador si construye un millón de placas después?

Un buen ejemplo para ese tipo de procesadores: microcontrolador PIC – Wikipedia

El siguiente paso hacia arriba es, por ejemplo, Arduino – Wikipedia, donde no solo compra el Prozessor y construye su propio hardware a su alrededor; Aquí compra tablas ya construidas. El software aquí proporciona un núcleo absolutamente mínimo para que se ejecuten sus programas. Está en ti si lo llamas un sistema operativo o no.

Siguiente paso: Raspberry Pi – Wikipedia, un conjunto de placas basadas en un “Sistema en un Chip” que se parece más a una PC. Por lo tanto, la mayoría del software se ejecuta en un sistema operativo en la placa. Puede conectar un teclado si lo desea (múltiples conectores USB en casi todas las placas), pero no es necesario. Los productos finales típicos no lo tienen. (Piense, por ejemplo, Router-Boxes, etc.)

Espero que eso ayude a elevar tu confusión.

Aquí hay uno viejo:

Editar: gracias por los votos a favor, aquí hay uno con un sistema “operativo”:

de: Mecanismo de Anticitera – Wikipedia
“La manivela mueve el puntero de la fecha unos 78 días por rotación completa, por lo que sería fácil alcanzar un día en particular en el dial si el mecanismo estuviera en buenas condiciones de funcionamiento. La acción de girar la manivela también haría que todos los engranajes entrelazados dentro del mecanismo giren, lo que da como resultado el cálculo simultáneo de la posición del Sol y la Luna, la fase lunar, el eclipse y los ciclos de calendario, y tal vez la ubicación de los planetas. ”

No puede ejecutar una computadora sin un sistema operativo de algún tipo, incluso si tiene que escribirlo usted mismo. El sistema básico de entrada y salida (BIOS) generalmente se escribe en un chip de la computadora. Esto a veces es escrito en un chip CMOS, pero solo va tan lejos. Funciones para leer y escribir en dispositivos externos (teclado, disco duro, etc.).

Sin un BIOS no se puede hacer mucho con una computadora, pero se usa para pesar el papel.

Ahora, el sistema operativo generalmente se carga en el momento del arranque desde los medios, el disco duro, el disco flopoy, el dispositivo de memoria, etc. Sin algún sistema operativo no se puede ingresar a la computadora ni obtener salida.

Ahora, es posible escribir su propio sistema operativo, aunque existen desafíos, como los controladores de video. Cuando estaba haciendo un sistema operativo y llegué a la parte de video, descubrí que los diseñadores de tarjetas de video, como NVIDIA, no publican las especificaciones en sus tarjetas, solo lanzan controladores para los diversos sistemas operativos, Mac OS, Windows, a veces Linux.

¿Qué esperas hacer con una computadora sin un sistema operativo que no sea instalar una o escribir una?

No, no necesitas un teclado. Mi primera computadora en casa tenía ocho interruptores y ocho leds. Y el compilador puede ejecutarse en otra computadora. Por lo general, no necesita saber binario: ese nivel se ha automatizado. Ciertamente necesita alguna forma de comunicarse con la computadora, que generalmente es otra computadora (hay una computadora dentro de un teclado). Usted escribe su programa en una computadora grande (una PC), lo descarga en la memoria flash de nuestra computadora de destino y luego lo quita para usarlo solo.

Para ver un ejemplo, consulte la gama de placas de desarrollo Cypress PSoc: ARM® Cortex®-M PSoC® de 32 bits | Cypress Semiconductor. Puede descargar todas las herramientas de desarrollo de Cypress: todo lo que necesita es un puerto USB de repuesto en su computadora para conectarse a la placa PSoC. Se pueden comprar por menos de $ 10.

La primera computadora que utilicé no tenía teclado, aunque sí un lector de tarjetas perforadas. Eso fue en 1966, así que las cosas han cambiado. Tampoco tenía un sistema operativo per se. Bueno, tenía un “monitor” para manejar trabajos por lotes, pero no todas estas máquinas lo tenían. Se requería una unidad de disco, que era opcional. Así que estoy aquí para hacer algunos comentarios. Lo que realmente necesita es una forma de introducir un programa en la computadora: lector de tarjetas, teclado, interruptores, línea serie (por lo que el “teclado” es el problema de alguien más), disco / cinta … Y necesita una forma de generar el programa . Hoy en día, cuando todo el mundo parece tener al menos una computadora (aunque muchas están bloqueadas como dispositivos de consumo / seguimiento, por lo que es posible que tenga que hacer un jailbreak), puede usar esa computadora para generar código. Cuando la población mundial de computadoras (no humanas) estaba en un solo dígito, sería muy cuidadoso al escribir su código y construiría en capas. Una máquina con la que estoy familiarizado (EDSAC, que se usó por primera vez en la producción unas seis semanas antes de que yo naciera) tenía sus “Órdenes iniciales” almacenadas en una ROM hecha de excedentes de teléfonos. Estas órdenes se leyeron al comienzo de la memoria al reiniciar, e implementaron una especie de primitivo “ensamblador de una línea” como lo que solía ser común en depuradores y emuladores en circuito. Podría extenderse, y Bob es tu tío.

Hoy, una situación similar podría encontrarse en los procesadores PIC más pequeños o Atmel. Normalmente hay una forma (SPI, JTAG, etc.) de introducir algún tipo de código en la memoria, y otra forma de interactuar con él. El problema ahora se ha reducido a saber cómo hacer esas tareas y a tener tiempo y paciencia. Pero puede crear un entorno de programación bastante cómodo con el tiempo. No es que una corporación moderna cuente eso como una ventaja. 🙁

El término Sistema operativo se ha vuelto bastante difuso, ya que algunos lo usan para lo que solían ser unos pocos controladores agrupados en una especie de BIOS, y algunos solo lo usan para cosas de al menos complejidad Unix.

Ayudó, por cierto, que las máquinas más antiguas eran mucho menos complejas que las modernas, por lo que en realidad era posible comprenderlas al nivel que necesitarías. Escribí un programa HELLO WORLD de una tarjeta para el IBM 1401, puramente en lenguaje de máquina, pero luego el 1401 era / es una máquina muy simple de entender.

Puede considerar escribir su propio sistema operativo (como un juguete). Tenga cuidado, crear un sistema operativo rico en funciones podría llevarle más de una vida.

Supongo que aprendiste a programar. Lea Teach Yourself Programming in Diez años para obtener una visión útil.

Luego, aprenda más sobre los sistemas operativos. Leer sistemas operativos: tres piezas fáciles

Puede obtener consejos prácticos en el wiki de OSDEV

La realidad es que básicamente no puedes. Puede tener un conjunto de chips cableado que tenga un poco de funcionalidad específica pero que básicamente tenga un sistema operativo intrínseco. Cuando inicia una computadora antes de instalar un sistema operativo, ya está ejecutando en un sistema operativo diferente. El BIOS Hay una batería en su placa base que dura décadas y está ahí para mantener la configuración del BIOS en la memoria, de lo contrario, estaría configurando su BIOS cada vez que inicie su computadora.

Un sistema operativo es solo una forma de permitir que otro software interactúe de manera estándar con el hardware. El BIOS y el sistema operativo son la puerta de entrada a los requisitos básicos para hablar con el hardware de una computadora. Básicamente es una capa de abstracción para que no se vea obligado a enviar un flujo interminable de texto sin formato 1 y 0 a un sistema (e incluso entonces el sistema necesita algunas reglas sobre cómo procesar lo que está recibiendo).

es probable que necesite una computadora con un sistema operativo para desarrollar el programa que se ejecute en el “metal desnudo”. Hay bastantes opciones para hacer esto y si usa tecnologías VM para iniciar su aplicación, entonces puede desarrollar una comodidad razonable, es decir, puede usar todas las herramientas normales para trabajar en la aplicación. Hay muchos programas de este tipo que se ejecutan sin un sistema operativo, desde los cargadores de arranque hasta los núcleos. Existen herramientas como el sistema de kernel de grupa NetBSD que permiten importar fácilmente los controladores a la aplicación independiente. También se han desarrollado sistemas que inician Erlang directamente, creo que esto también se ha hecho con la JVM.

Incluso el BIOS es un sistema operativo. Conectar un teclado no significaría nada, ya que la placa base no podría funcionar sin BIOS. Por lo tanto, no podrá comunicarse con la computadora. Puede conectar interruptores a una serie de puertas lógicas que cuentan segundos o algo así y llamarlo una computadora. Ese sistema no requiere ningún sistema operativo.

Algo como esto pero no exactamente

Este es más un contador manual.

El sistema operativo es una definición que se refiere a un conjunto de software que se encuentra entre el hardware y otro software llamado aplicaciones para abstraer toda interacción de hardware. Con esto, todos los sistemas informáticos de hardware deben tener algún software que sirva como sistema operativo.

Ahora, si el sistema está diseñado para no tener software de aplicación y todo el código está escrito directamente en el hardware, entonces uno puede argumentar que esos sistemas no tienen sistema operativo. Los sistemas integrados más antiguos, como los controladores, se ajustan a esta categoría.

¡Hola!

Me temo que su computadora, sin ningún tipo de sistema operativo, sería un ladrillo muy pesado y costoso. Entonces … ¿qué es un sistema operativo?

Sistemas operativos

No estoy 100% seguro (no pude encontrar ninguna referencia), pero creo que el término fue acuñado cuando las computadoras realmente funcionaban con interruptores / tarjetas perforadas y tenía que ver con cómo haría las cosas. Cada compañía tenía, heh, un sistema diferente para hacer eso, que es de donde probablemente proviene el término.

Eso, sin embargo, fue burro hace años. Hoy en día las cosas están un poco más refinadas still y aún necesita un sistema operativo. Ahora, podría argumentar que el sistema operativo puede no residir en la computadora, lo cual es cierto, pero aún necesita ser descargado y todo eso.

Dispositivos

Lo que usted describe (mouse, teclado, etc.) son todos dispositivos, es decir, medios para dar entrada a la computadora. Sin embargo, esta entrada tiene que ser decodificada por “algo” y ese algo es, lo adivinó, su sistema operativo.

El resto de lo que menciona se encuentra en la parte superior de un sistema operativo.

Todo depende de lo que llama un “sistema operativo”.

Mi segunda computadora fue una TRS-80 Color Computer. Arrancó directamente a BASIC, que estaba ubicado en un chip ROM (sí, no hay actualizaciones para ese bebé). El control del teclado fue realizado por un chip. Recuerdo 2 chips: SAM y PIA, que hicieron más o menos lo que hace un sistema operativo moderno.

Si se refiere al “sistema operativo” como software como DOS, Unix o Linux, que debe iniciarse desde un disco para que pueda comenzar a trabajar con la computadora, la respuesta es “sí”. Puede ejecutar una computadora sin un sistema operativo. Incluso la PC original de IBM tenía un modo para arrancar directamente a BASIC, sin necesidad de DOS. De acuerdo, no podrías hacer mucho con él, pero podrías escribir un programa. La Apple II, Commodore 64, Atari 800, TRS-80 y todas esas computadoras revolucionarias de PC no necesitaban un sistema operativo.

Si se refiere al “sistema operativo” como una función, entonces “No”, necesita esa capa de comunicación entre la CPU y los componentes. Si quiere llamarlo un “sistema operativo”, que así sea.

Tendría que escribir un programa o programas para manejar todas esas cosas de bajo nivel. podría tener un modo de usuario único muy simple que muestre una pantalla en negro con texto en blanco, un sistema de archivos básico IO, un editor, un compilador, una forma de ejecutar el compilador, etc., etc., y eventualmente tendría un funcionamiento muy simple sistema.

Es mejor escribir un sistema operativo simple primero, para que tenga una evaluación completa de su hardware (desarrollar un sistema operativo simple no es una gran oferta, hermano). Estoy escribiendo el código de ensamblaje del cargador de arranque a continuación (nota, es el único cargador de arranque, no el sistema operativo completo):

[org 0x7c000]
[bits 16]

kernel_offset equ 0x1000

mov [BOOT_DRIVE], dl
mov bp, 0x9000
mov sp, bp

llamar a load_kernal_into_memory

llame a switch_to_protected_mode ;; para ser agregado
jmp $

load_kernal_into_memory:
pusha
mov bx, KERNAL_OFFSET
mov dh, 15
mov dl, [BOOT_DRIVE]
llamar a disk_read ;; para ser agregado
popa
jubilado

[bits 32]
begain_protected_mode:
llame a detect_long_memory ;; para ser agregado
llamar a execute_kernal ;; para ser agregado
jmp $

[bits 64]

begain_long_memory:
llamar a execute_kernal
jmp $

execute_kernal: llame a KERNAL_OFFSET ;; para ser agregado
jmp $

BOOT_DRIVE: db 0

veces 510 – ($ – $$) db 0
dw 0xaa55 ;; fin

No puede ejecutar una computadora sin un sistema operativo. Necesita un programa para interpretar y enviar información desde y hacia el hardware subyacente. Incluso los programas de muy bajo nivel como BIOS / UEFI (la aplicación que se ejecuta antes que su sistema operativo principal) es en sí mismo un sistema operativo.

Definitivamente no necesitas un teclado para ejecutar una computadora. Desenchufe un teclado de una computadora de escritorio y funcionará perfectamente bien.

No puedes Cuando enciende su PC, un chip de BIOS en la placa base va y busca un sistema operativo en HDD, SSD, tarjeta SD, CD o incluso conexión a Ethernet. Si no encuentra uno, muestra “Sistema operativo no encontrado” y se detiene.

Además, no desea ingresar en binario porque una parte de los comandos (código) que ingrese será relativa (es decir, direcciones de memoria que pueden ser diferentes cada vez que use la PC), por lo que el nivel más bajo que debe considerar es Ensamblador.

Puede comenzar con este sistema operativo muy pequeño, de menos de 2Mb, y usar el ensamblador incorporado para escribir su propio sistema operativo: MenuetOS

More Interesting

¿Por qué las grandes compañías de software no se dedican a la venta directa de licencias de software a través de otra agencia?

¿Está bien comprar una computadora portátil para juegos si planeo ir a la escuela de negocios el próximo año y planeo usar la computadora portátil durante todo el curso?

¿Qué está ralentizando mi computadora al iniciar?

¿Qué es el error 'Clon fallido - Error de lectura - 13 - Permiso denegado - 32'? (Estoy tratando de clonar un nuevo disco duro y reemplazar el viejo).

Cómo saber que necesito una mayor RAM o procesador en mi computadora portátil

¿Alguien puede mostrarme cuál es la mejor computadora para juegos con menos de 30 mil rupias indias?

¿Qué factores determinan la velocidad de una CPU además de su frecuencia?

Batman (personaje de DC): ¿Qué es Batcomputer?

¿Cuál es la mejor computadora portátil para juegos con menos de 1.5k dólares, que podría jugar todos los juegos de los próximos 3-4 años?

¿Cuál es la mejor computadora portátil i5 6th gen o 7th gen?

¿Por qué las computadoras portátiles para juegos vienen solo con GPU Nvidia? ¿Qué hay de AMD?

¿Cuál es la mejor alternativa de iTunes para transferir la música de mi iPhone a mi computadora sin barreras?

¿Qué tipo de computadora portátil debo comprar: una i3 o una i5? Completé la clase 12 este año.

¿Cuál es el equivalente de la velocidad a la que avanza la tecnología en una década?

¿Cuáles son las ventajas del procesador Intel i5 sobre el procesador Intel i3?