wiki:Architecture

Version 1 (modified by soujak, 18 years ago) (diff)

--

Project architecture

1. File system organization

Kaya Phase 1 distribution is subdivided in several folders in order to efficiently organize files and logically separate them into different sections. Such division is thought for being ready to receive Phase 2 implementation providing a well structured environment.

  • src/: sources folder containing Phase 1 primitive functions source code, as described below in paragraph 2;
  • test/: testing folder, containing a debugging program (p1test.c), related environment generated by the Makefile "test" target; this rule compiles, links, creates uMPS executable and virtual devices and finally run it on the uMPS virtual machine (see also README);
  • doc/: documentation root containing various developers informations about project internals;
  • include/: library headers
    • *.e: Phase 1 primitive functions interfaces: pcb.e and st.e respectively relative to pcb.c and st.c;
    • *.h: system constants and macro definitions (const.h), types and data structures definitions (types.h);
  • lib/: Phase 1 libraries objects files, ready for being linked.

2. Source modules organization

Following the evident logical division between two entities we have to instantiate - processes and semaphores -, we opted for a two-modules subdivision:

  • pcb.c: collects primitive functions for PCBs initialization/ allocation/ deallocation, process queue/ tree maintenance;
  • st.c: collects primitive functions for SD tree initialization and PCB enqueueing to/dequeueing from semaphores.
 * `check.c` contains an error check routine which is able to perform a simple type
   check on the own data structures of Phase 1.