Rudimento de un sistema operativo para la arquitectura x86 64: parte en modo real

Miguel González, Javier (2020). Rudimento de un sistema operativo para la arquitectura x86 64: parte en modo real. Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S. de Ingenieros Informáticos (UPM), Madrid, España.

Description

Title: Rudimento de un sistema operativo para la arquitectura x86 64: parte en modo real
Author/s:
  • Miguel González, Javier
Contributor/s:
  • Pérez Costoya, Fernando
Item Type: Final Project
Degree: Grado en Ingeniería Informática
Date: June 2020
Subjects:
Faculty: E.T.S. de Ingenieros Informáticos (UPM)
Department: Arquitectura y Tecnología de Sistemas Informáticos
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[img]
Preview
PDF - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (3MB) | Preview

Abstract

Este trabajo tiene como objetivo aumentar los conocimientos adquiridos en la asignatura de sistemas y profundizar en la materia escribiendo desde cero un pequeño sistema operativo, así como poder en un futuro aumentar la documentación (actualmente muy escasa) de este tema escribiendo un libro. Este trabajo ha sido realizado en conjunto, teniendo como coautor a Carlos Moro Jiménez, sin embargo, la parte de modo real es lo único que se presenta en este trabajo, que continúa siendo desarrollada e implementada en el suyo. Es necesario remarcar que el desarrollo de un sistema como este excede las capacidades y tiempos preestablecidos para este trabajo en el que llevamos trabajando 2 años, por lo que en este documento se presenta un esbozo superficial de todo el desarrollo que hay por debajo. Una verdad difícil de asimilar, que se nos ha repetido constante es que nadie que no sea un desarrollador experimentado con años de experiencia en varios lenguajes y entornos debería siquiera considerar el desarrollo de sistemas operativos todavía. Una década de programación, incluidos algunos años de codificación de bajo nivel en lenguaje ensamblador y / o un lenguaje de sistemas como C, es prácticamente el mínimo necesario para comprender el tema lo suficientemente bien como para trabajar en él. La realidad es que esto no sería tan cierto si no llega a ser por el hecho de que la mayor parte de la documentación son «mailling-lists» de 1998 y foros de 2004 con hipervínculos rotos a los que se hacen referencia y sin estos no puedes entender bien las cosas, así como el manual de 5000 páginas de los procesadores intel el cual tiende a alejar a desarrolladores nuevos que no se hayan enfrentado a un manual tan grande. Sin embargo, nosotros con este trabajo queremos cambiar esto y acercar este complejo mundo de bajo nivel, que trae estándares que datan desde 1981 a un público más general, como un ingeniero informático recién graduado. Lo que se abarca en este trabajo en concreto es una vista por encima de todo el proceso de arranque de un computador, así como las decisiones de diseño necesarias para plantear el desarrollo de un sistema operativo con un lenguaje de programación de más alto nivel. En concreto se va a hacer una breve introducción al ensamblador de x86, necesario para entender el desarrollo, así como la arquitectura que subyace a este ensamblador, ya que se va a desarrollar todo sobre esta, el proceso de arranque y puesta en funcionamiento del CPU por la BIOS, las funciones de la BIOS utilizadas, manejo y organización de la memoria, conceptos sobre la modularidad de un cargador, sistema de ficheros tipo «FAT», el «Master Boot Record», el diseño de nuestro cargador de arranque y los pasos y preparación del sistema para el salto a C++, donde se continuará el proyecto en el TFG de Carlos moro Jiménez. Es importante recalcar que solo se van a dar pinceladas por encima, para que cualquier interesado pueda investigar más, explicar al completo y minuciosamente un trabajo de más de 2 años en un TFG no tiene mucha lógica, pero un TFG como este sí que puede ser muy útil como punto de partida mientras se acaba el libro. Dicho todo esto y para concluir la introducción, decir que conocer las bases fundamentales del computador, así como el funcionamiento de un sistema operativo, ya sea mediante el estudio de algunos ya existentes, o mediante un modo más práctico, como es este, puede ayudar a desarrollar código más eficiente y seguro, así como a volvernos mejores programadores. Esto no solo tiene un impacto en nuestra carrera profesional y personal, sino que puede afectar a muchas áreas de las que en un principio muchos no somos conscientes, como se verá en la sección de impacto.---ABSTRACT---First of all, it is important to say that the extent of this work will be performed in spanish. This work aims to increase the knowledge acquired in the subject of operating systems byr writing a small operating system from scratch, as well as being able to increase the documentation (currently very little) of this subject by writing a book. This work has been carried out jointly, having as co-author Carlos Moro Jiménez, however, the real mode part is the only thing that is presented in this work, which continues to be developed and implemented in their. It is necessary to emphasize that the development of an operating system like this exceeds the capacities and pre-established timelines for this job in which we have been working for 2 years, so that this document presents a superficial sketch of all the development below. A difficult truth to assimilate, which has been constantly repeated to us, is that no one who is not a experimented developer with years of experience in various languages and environments should not even consider the development of an operating system. A decade of programming, including a few years of low-level coding in assembly language and low level languajes like C, is pretty much the bare minimum necessary to understand the subject well enough to work on it. The reality is that this would not be so true if it were not for the fact that most the documentation are «mailling-lists» from 1998 and forums from 2004 with broken links, as well as the 5000 page manual of the intel’s processors which tends to scare new developers who haven’t faced such a big manual. However, with this work we want to change this and bring this complex lowlevel world closer, which consists of standards dating back to 1981, to a more general audience, such as a newly graduated computer engineer. What is covered in this particular work is a view over the entire process of starting a computer, as well as the design decisions necessary to propose the development of an operating system with a higher-level programming language. Specifically, a brief introduction to the x86 assembler will be made, necessary to understand the code process, it will talk about the x86 architecture since it is the target platform, also the process of starting and putting the CPU into operation by the BIOS, the most common functions of the BIOS, memory management and organization, concepts about the modularity of a loader,the «FAT» file system, the « Master Boot Record », the design of our boot loader and the steps and preparation of the system for the jump to C ++, where the project will continue in the TFG of Carlos Moro Jiménez. It is important to emphasize that only a faint dye will be given, so that any interested party can investigate further, this TFG, can be very useful as a starting point for any others, while we finish the book. Having said all this, and to conclude the introduction, It is important to say that knowing the fundamentals of the computer, as well as the operation of an operating system, either by studying some already existing, or through a more practical way, such as this, can help to develop more efficient and secure code, as well as to become better programmers. This not only has an impact on our professional and personal career in life, but it can affect many more areas that many of us are not even aware of at first, as will be seen in the impact section.

More information

Item ID: 68620
DC Identifier: https://oa.upm.es/68620/
OAI Identifier: oai:oa.upm.es:68620
Deposited by: Biblioteca Facultad de Informatica
Deposited on: 24 Sep 2021 07:18
Last Modified: 24 Sep 2021 07:18
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM