{{{ #!html

Architecture Logicielle et Matérielle des Ordinateurs v2 (ALMO2)

}}} [[PageOutline]] = Planning - This module will open in september, 2020. = Module purposes - The purpose of this module is to explain in detail how it is possible to have several programs running independently on a multicore computer. - The module introduces progressively: - the main hardware components; - and the corresponding operating system services. - The studied hardware architecture is simulated by using a cycle-and-bit-accurate model, able to execute the software from the true beginning (full system emulation). - There is one practical work per week: - The really first code is a simple assembler program which print "hello Word!" on the terminal without any operating system or even any function libraries. - The last one is composed of two programs running independently on the same processeur by using virtual memory. - The module must answer the following questions (this is non-exhaustive list):    - How does a machine start?    - What is the role of an operating system and what services does it offer?    - What is a memory cache?    - What is a device controller, and how to use it?    - What is a device driver?    - How to run multiple programs on a single processor?    - How can multiple processors share the same address space?    - Why should each program have its own address space and how? - and finally:    * When you hit a key on the keyboard, how does the character appear on the screen? = Prerequisites * A good knowledge of the C language is necessary since the module proposes to write an operating system from the beginning. * The knowledge of the MIPS32 assembler is also important, but the principles of this language and the conventions of use for writing functions are recalled the first week. = Course plan   1. '''[wiki:S01 Assembler programming on a minimal machine]''' [[BR]]      The purpose of this first session is to present a minimal architecture and how      write a first program in assembly language. = Documents