la programación de sistemas oscar josé luis cruz reyes [email protected] [email protected]
TRANSCRIPT
La Programación de La Programación de SistemasSistemas
Oscar José Luis Cruz [email protected]
Systems programming (or system programming)
Is the activity of programming system software. The primary distinguishing characteristic of systems programming when compared to application programming is that application programming aims to produce software which provides services to the user (e.g. word processor), whereas systems programming aims to produce software which provides services to the computer hardware (e.g. disk defragmenter). It also requires a greater degree of hardware awareness.
In system programming more specifically:
The programmer will make assumptions about the hardware and other properties of the system that the program runs on, and will often exploit those properties (for example by using an algorithm that is known to be efficient when used with specific hardware).
Usually a low-level programming language or programming language dialect is used that:
Can operate in resource-constrained environments. Is very efficient and has little runtime overhead. Has a small runtime library, or none at all. Allows for direct and "raw" control over memory access
and control flow. Lets the programmer write parts of the program directly
in assembly language.
In system programming, often limited programming facilities are available. The use of automatic garbage collection is not common and debugging is sometimes hard to do.
Implementing certain parts in operating system and networking requires systems programming (for example implementing Paging (Virtual Memory) or a device driver for an operating system).
System Software
Is any computer software which manages and controls computer hardware so that application software can perform a task. Operating systems, such as Microsoft Windows, Mac OS X or Linux, are prominent examples of system software. System software contrasts with application software, which are programs that enable the end-user to perform specific, productive tasks, such as word processing or image manipulation.
System Software [2]
System software performs tasks like transferring data from memory to disk, or rendering text onto a display device. Specific kinds of system software include loading programs, Operating systems, device drivers, programming tools, compilers, assemblers, linkers, and utility software.
If system software is stored on non-volatile memory such as integrated circuits, it is usually termed firmware.
Según [Tischer 96] para entender qué es la programación de sistemas se debe partir del concepto de programación de una aplicación … allí el punto que importa es el como se representa y se manipula la información.
Los algoritmos no dependerán de la arquitectura o sistema en cuestión, sino que se pueden describirse de forma general para cualquier máquina imaginable. Lo que sí dependen del sistema es que pasa con la información una vez dentro del programa y la forma en que ésta saldrá una vez tratada. Así, las funciones que competen a la programación de sistemas son el: acceso a archivos, el teclado, la pantalla y el resto de dispositivos...
Editores
Desde el punto de vista de los editores existen dos clasificaciones según [Englander 02, pág. 672]:
Los editores de línea y los de pantalla. Los editores de línea aceptan las instrucciones
una a una tal y como si fuese una ventana de comandos (shell) del SO. Mencione un ejemplo.
Editores [2]
Los editores de pantalla son más parecidos a un procesador de textos, uno se puede desplazar libremente por la pantalla y simplemente editar. Dentro de esta categoría existen algunos editores particulares que permiten trabajar en modo comando o modo edición. Ídem
Intérpretes
Es un traductor de lenguaje, igual que un compilador, pero difiere de éste en que ejecuta el programa fuente inmediantamente, en vez de generar un código objeto que se ejecuta después de que se completa la traducción.
Es preferible usar un compilador si lo que importa es la velocidad de ejecución, ya que el código objeto compilado es siempre más rápido que el código fuente interpretado.
Cargadores
Un programa se ha traducido a lenguaje máquina (código objto) y está almacenado en un disco magnético.
¿Cómo hacer para que ese programa se ejecute? ........
Cargadores [2]
Debe cargarse en la memoria principal. Debe tomarse en cuenta que otro programa
denominado cargador, ya se encuentra en la memoria principal.
La ejecución del cargador efectúa la secuencia adecuada de operaciones de E / S necesarias para transferir un programa en lenguaje de máquina, de una localización especificada del disco a una localización especificada de memoria principal.
Cargadores [3]
Una vez cargado el código objeto, el cargador empieza a ejecutar el programa objeto ramificando a su primera instrucción.
Intérpretes
Generadores
Ensambladores
Compiladores
Ligadores
Preprocesadores
Depuradores
Perfiladores
Administradores de Proyecto
Referencias:
http://en.wikipedia.org/wiki/Systems_programming http://en.wikipedia.org/wiki/System_software [Tischer 96] Michael Tischer, PC Interno 5,
Marcombo, 1996. [Englander 02] Irv Englander, Arquitectura
computacional 2da Edición, CECSA, 2002