eXpOS Update

35 views
Skip to first unread message

Murali Krishnan

unread,
Mar 27, 2019, 12:10:41 PM3/27/19
to xos-dev...@googlegroups.com, Rohith Vishnumolakala
Dear Team members,

  eXpOS ran successfully last semester for S5 CSE NITC and also S5 CSE at
IIT Palakkad.   The student feedback data is collected and analyzed here: 

http://exposnitc.github.io/feedback.html

(Thanks to Rohit for compiling the data) 

   Here is a brief activity report of the last one year.

Last year the work was take up by Arun and supported by Rohit who joined part time.
The major updates were: 

1.  There were some architectural bugs.  For instance, if stack is already full when an
interrupt/system call is invoked (while executing in user mode), the machine would push data further into unauthorized locations instead of throwing exception).

2.  There were some design issues with OS when processes went to sleep forever after
swapped out.  These issues were solved by redesigning the swap module.   

The ongoing work is to develop a stage that explains how the OS can be made to run
on a two core machine (final stage - surely!).  Arun has worked out the simulator implementation and is doing the OS design.  We haven't started any roadmap work as of yet. 


At NITC, had given option for students to choose from XOS and eXpOS and around 40
students picked eXpOS.  Most of them did well. 

The feedback at IIT Palakkad wasn't as good as NITC because it was a core course. 
Still about 50% of the class could do stage 5 (process management and file system). 
They told that they are planning to run it this time as well. 

Murali







Akhil S

unread,
Apr 10, 2019, 12:34:58 AM4/10/19
to Murali Krishnan, xos-dev...@googlegroups.com
Great news sir :-)

"Interaction with students seem to suggest the following issue. Computer organization typically are based on the MIPS architecture and tend to stress more on the fetch execute cycle, pipelining, cacheing and other architectural design level issues, but lays less stress on page table address translation and the semantics of instructions like push, pop, call, ret and interrupt/exceptions that manipulate the stack. However these ideas need to be understood clearly for doing the project"

This continues to be the major knowledge gap in students and roadblock for the project.
I believe this affects the compiler design course as well. 

I have two small suggestions in mind. Adding them as well.

1. Grouping the roadmap into phases

My suggestion is that the roadmap also be grouped into phases as presented in the feedback report.
  • Phase 0: Stage 1-12: Understanding the framework and OS bootstrap
  • Phase 1: Stage 12-14: Scheduling and kernel stack management
  • Phase 2: Stage 16-19: Device Handling, interrupts and Exceptions
  • Phase 3: Stage 20: Process Management
  • Phase 4: Stage 21-22: Inter process Communication - Semaphore and Signal-Wait
  • Phase 5: Stage 23-25: File System Implementation
  • Phase 6: Stage 26: User Management and access permissions
  • Phase 7: Stage 27: Memory Management - Disk swap management
2. Macros in spl

Coding would be easier id we implemented macros for simple repetitive code. For eg:
    Get the pid of the current process from System Status Table;
#define curr_pid  [SYSTEM_STATUS_TABLE + 1]


Thanks and regards,
Akhil


--
You received this message because you are subscribed to the Google Groups "XOS Developers" group.
To post to this group, send email to xos-dev...@googlegroups.com.
Visit this group at https://groups.google.com/group/xos-developers.


--
Regards,

Akhil S

Murali Krishnan

unread,
Apr 10, 2019, 2:16:23 AM4/10/19
to Akhil S, xos-dev...@googlegroups.com

Thanks.  Roadmap division into phases - we will do.   

Regarding "high level facilities" like macros and function calls - it was a decision taken long back not to provide many of them.
Perhaps when the project gets large such support becomes inevitable. 

The problem is that a lot of people will take "it" for granted, giving viva answers like:

"The machine sets current_pid"   (often the viva answer is "it sets current pid"  - and we have to ask
whether "it" refers to the machine, the OS, or application.  A random attempt typically follows.. 
Sreeja madam in fact imposed a total prohibition on the use of the word "it" in the lab :-) 

Another interesting viva answer (long back about Minix scheduling) was the following:

If we set a pointer to the next thread to be scheduled to the kernel variable this, then "it will do the rest". 

Murali Krishnan

unread,
May 15, 2019, 2:23:52 AM5/15/19
to xos-dev...@googlegroups.com, Rohith Vishnumolakala
Dear Team,

     eXpOS development is complete now (except for fixing jobs that might be needed when the system is deployed next semester - both at NITC and IITPKD).

     This year Arun added the following. 

 1.  Wrote a simulator for a two core version of XSM (which was called NEXSM  http://exposnitc.github.io/arch_spec-files/nexsm.html).
      Updated SPL compiler, ExpL compiler (with Support from Rohit) and updated xfs-inteface. 
 2.  A port of the OS to the two core version.  The task turned out to be not extremely difficult and the implementation is laid out in the
      roadmap for Stage 28.    (I must thank the earlier design teams for making this task relatively less troublesome - particularly
      to Naveneeth for a very generic design of algorithms; Sumedha and Naveena fixing the design issues as they did the roadmap
      and Akhil and Karthika for some nice work with the kernel stack design of the scheduler module - all done at a time when there
      was absolutely no thought at all to port the system to a two core machine.)   Of course, the teams before them did most of the basic
      foundation upon which the final system was build - including architecture design, simulator base code, xfs-interface, SPL code. 
      ExpL was independently done for the compiler lab and was added to eXpOS base, kernel stack design etc.       
 3.   The application interface of the OS undergoes practically no change.  (barring the addition of a few "empty" system calls). 
      In OS design, a couple of changes to a few data structures and the introduction of an access lock table is all that was needed. 
     (http://exposnitc.github.io/os_design.html)
 4.  I thank each and every team member for contributing so much time  - far beyond what one would have to normally devote for a BTP -
      to complete the work. Shajahan and Nikhil will be joining the team next year along with Pravitha and Athira.  They will be in charge of
      site maintenance and fixing any issues that comes up during lab deployment.  (Since the work is complete - the system leaves no
      further scope for another BTech project!). 
Regards,
Murali






Reply all
Reply to author
Forward
0 new messages