-
Notifications
You must be signed in to change notification settings - Fork 17
/
index.html
430 lines (365 loc) · 20.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="ie ie6 lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="ie ie7 lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="ie ie8 lt-ie9" lang="en"> <![endif]-->
<!--[if IE 9]> <html class="ie ie9" lang="en"> <![endif]-->
<!--[if !IE]><!-->
<html lang="en" class="no-ie">
<!--<![endif]-->
<!-- Mirrored from themicon.co/theme/beadmin/ by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 29 Jan 2016 16:44:20 GMT -->
<head>
<!-- Meta-->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="author" content="">
<title>eXpOS NITC</title>
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]><script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script><script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script><![endif]-->
<!-- Bootstrap CSS-->
<link rel="stylesheet" href="app/css/bootstrap.css">
<!-- Vendor CSS-->
<link rel="stylesheet" href="vendor/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" href="vendor/animo/animate%2banimo.css">
<link rel="stylesheet" href="vendor/csspinner/csspinner.min.css">
<link rel="shortcut icon" type="image/png" href="img/favicon.jpg" />
<!-- START Page Custom CSS-->
<!-- END Page Custom CSS-->
<!-- App CSS-->
<link rel="stylesheet" href="app/css/app.css">
<!-- Modernizr JS Script-->
<script src="vendor/modernizr/modernizr.js" type="application/javascript"></script>
<!-- FastClick for mobiles-->
<script src="vendor/fastclick/fastclick.js" type="application/javascript"></script>
<style>
.message {
font-size: 1.5em;
float:right !important;
padding:0 10px;
color: #e5e5e5;
}
.message a{
color:#fff;
text-decoration: underline;
}
@media screen and (max-width: 1200px) {
.message {
text-align:center;
font-size: 1.25em;
padding: 0 4px;
}
}
@media screen and (max-width: 960px) {
.message {
font-size: 1em;
}
}
@media screen and (max-width: 768px) {
.message {
color: #000;
}
.message a {
color: #000;
}
}
</style>
</head>
<body>
<!-- START Main wrapper-->
<div class="wrapper">
<!-- START Top Navbar-->
<nav role="navigation" class="navbar navbar-default navbar-top navbar-fixed-top">
<!-- START navbar header-->
<div class="navbar-header">
<a href="#" class="navbar-brand">
<div>
<h3>eXpOS<span style="color:#14ddb3">NITC<span></h3>
</div>
</a>
</div>
<!-- END navbar header-->
<!-- START Nav wrapper-->
<div class="nav-wrapper" style="background:black">
<!-- START Left navbar-->
<div class="nav navbar-nav message" >
mkDocs version of the same documentation is available at <a href="https://exposnitc.github.io/expos-docs/" target="_blank">exposnitc.github.io/expos-docs</a>
</div>
<ul class="nav navbar-nav">
<li>
<!-- Button used to collapse the left sidebar. Only visible on tablet and desktops-->
<!--a href="#" data-toggle-state="aside-collapsed" class="hidden-xs">
<em class="fa fa-navicon"></em>
</a>
<!-- Button to show/hide the sidebar on mobile. Visible on mobile only.-->
<a href="#" data-toggle-state="aside-toggled" class="visible-xs">
<em class="fa fa-navicon"></em>
</a>
</li>
<li>
<h3 class="pull-right" style="color:white"></h3>
</li>
</ul>
<!-- END Left navbar-->
</div>
<!-- END Nav wrapper-->
</nav>
<!-- END Top Navbar-->
<!-- START aside-->
<aside class="aside">
<!-- START Sidebar (left)-->
<nav class="sidebar">
<ul class="nav">
<!-- START Menu-->
<li id="home" class="active">
<a href="index.html" title="Home" data-toggle="" class="no-submenu">
<em class="fa fa-home"></em>
<span class="item-text">Home</span>
</a>
</li>
<li>
<a href="documentation.html" title="Documentation" data-toggle="" class="no-submenu">
<em class="fa fa-files-o"></em>
<span class="item-text">Documentation</span>
</a>
</li>
<li>
<a href="Roadmap.html" target="_blank" title="Roadmap" data-toggle="" class="no-submenu">
<em class="fa fa-road"></em>
<span class="item-text">Roadmap</span>
</a>
</li>
<li>
<a href="faq.html" title="FAQ" data-toggle="" class="no-submenu">
<em class="fa fa-question"></em>
<span class="item-text">FAQ</span>
</a>
</li>
<li>
<a href="googlegroup.html" title="googlegroup" data-toggle="" class="no-submenu">
<em class="fa fa-link"></em>
<span class="item-text">Google Group</span>
</a>
</li>
<li>
<a href="https://exposnitc.github.io/user-contrib/" target="_blank" title="user-contrib" data-toggle=""
class="no-submenu">
<em class="fa fa-link"></em>
<span class="item-text">User Contributions</span>
</a>
</li>
<li>
<a href="feedback.html" title="Feedback" data-toggle="" class="no-submenu">
<em class="fa fa-comments"></em>
<span class="item-text">Student Feedback</span>
</a>
</li>
<li>
<a href="About_us.html" title="About Us" data-toggle="" class="no-submenu">
<em class="fa fa-group"></em>
<span class="item-text">About Us</span>
</a>
</li>
<li>
<a href="http://xosnitc.github.io" title="Read about XOS" class=" no-submenu" data-toggle="">
<em class="fa fa-link"></em>
<span class="item-text">Read about XOS</span>
</a>
</li>
<!-- END Menu-->
</ul>
<span style="position: absolute; bottom: 40px;color:white;">National Institute of Technology, Calicut</span>
<a style="position: absolute; bottom: 2px; right: 2px" rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"><img alt="Creative Commons License" style="border-width:0" src="./img/creativecommons.png" /></a>
</nav>
<!-- END Sidebar (left)-->
</aside>
<!-- END aside-->
<!-- START Main section-->
<section style="text-align:justify">
<!-- START Page content-->
<div class="content-wrapper">
<div class="row">
<!-- START dashboard main content-->
<section class="col-md-12">
<div>
<div class="col-xs-12 col-md-6">
<img src="img/logo.png"></img>
</div>
<div class="panel widget col-xs-12 col-md-6">
<div class="panel-body ">
<div class="row row-table row-flush">
<span><img src="img/github.jpg" class="col-xs-6"></img> <span>
<span>
<h5>Source Code</h5>
<p>The entire project code is hosted on Github <b><a style="color:blue" href="http://github.com/exposnitc" target="_blank">http://github.com/exposnitc</a></b></p>
<span style="color:red">
Trial version, errors are being corrected as reported.
</span>
<br>
<span style="color:blue">
Last updated: 21 July 2021 (see <a href="release_notes.html"> Release Notes </a>)
</span>
</span>
</div>
</div>
</div>
</div>
<br><br>
<hr><br><br><br>
<div style="font-size:19px">
<p>Project eXpOS (eXperimental Operating System) is an on-line educational
platform which helps undergraduate students to learn the working
on an operating system. A detailed project roadmap that is part
of the platform provides step by step guidance to the student towards
writing a small operating system from scratch. The student learns
the implementation of various OS data structures and kernel routines
during the course of the project. The OS written by the student
will run on a machine simulator supplied along with the platform.
The project assumes that the student has undergone a course in
computer organization, and is comfortable with programming.</p>
<br/>
<p>If you wish to work on the project, the approach we suggest is to
follow the project roadmap. The roadmap takes you through a step
by step journey towards the complete implementation of the operating
system. At each step, you will be asked to read concepts, specifications
and interfaces that are required for that step. In fact, you will
be asked to read only what is necessary for completing that step.
The links to the relevant reading material will be given at appropriate
places in the roadmap. <a href="Roadmap.html" target="_blank">Proceed to Roadmap <em class="fa fa-external-link"></em></a></p><br/>
<p>If you are curious about what the "final system" you are going to
build looks like, we give a brief overview here. You are warned
not to get lost in the links. The roadmap will ask you to read
the appropriate parts of the documentation as and when required.</p>
<!-- <p>Project <b>eXpOS</b> or eXperimental Operating System is an educational platform to develop an operating system. It is an instructional tool for students to learn and implement OS data structures and functionalities on a simulated machine called <a href="arch_spec.html" target="_blank"><b>XSM</b></a> (eXperimental String Machine). The OS is programmed using a custom language known as <a href="support_tools-files/spl.html" target="_blank"><b>SPL</b></a> (System Programmer's Language) and application programs, which run on the OS, are programmed using <a href="support_tools-files/expl.html" target="_blank"><b>ExpL</b></a> (Experimental Language).</p>
<br/>
<p>The methodology we suggest for you is to follow the roadmap. The <b>roadmap</b> takes you through a step by step journey towards the complete implementation of the eXpOS operating system. At each step, you will be asked to read concepts, specifications and interfaces which you must learn to complete that step. In fact, you will be asked to read <b>only</b> what is necessary for doing that step. The links to the reading material will be given at appropriate places in the roadmap. <a href="Roadmap.html" target="_blank">Proceed to Roadmap <em class="fa fa-external-link"></em></a></p>
<br/>
<p>However, if you are curious about what the "final system" you are going to build looks like, we give a brief overview here. You are warned not to get lost in the links. The roadmap will ask you to read the appropriate parts of the documentation as and when required. </p>-->
<br/>
<p><img src="img/User_View.png" style="display:block;margin-left:auto;margin-right:auto"></img>
</p>
<br>
<p>In the above figure, an architecture simulator for the eXperimental
String Machine (XSM) is given to you. Your primary job is to implement
the eXpOS kernel for this machine in such a way that application
programs can be loaded and executed by your kernel. You will also
be asked to write a few application programs, like the shell (for
providing a user interface).</p><br/>
<p>Clearly, in order to write the OS kernel, one must be given its two
interfaces – the interface to the architecture below and the interface
to the executable application programs above. The former is given
to you in the <a href="arch_spec.html" target="_blank"> XSM architecture </a> specification. The latter, called the <a href="abi.html" target="_blank"> Application Binary Interface</a> specification, is also given to you. There are also two additional
interfaces (not shown in the figure) described below:</p>
<p>1. The format in which data and executable files are stored in the
disk is standardized and given in the <a href="os_spec-files/eXpFS.html"
target="_blank">eXpFS file system specification</a>. This standardization
allows portability of files between eXpOS and other systems. You
must implement the OS file system satisfying this interface specification.</p>
<p>2. Specification for a small application layer software called the
<a href="os_spec-files/misc.html#SixcollapseFive" target="_blank"> eXpOS Library </a> is given to you. The library is a special application program that
stands between the OS kernel and other application programs. The
library provides a generic interface through which other applications
can access the OS system calls. Dynamic memory management services
of the OS are also implemented by the library. The library code
will be supplied to you. Your OS kernel must load the library into
memory and link it to the application programs at run time.</p><br/>
<p>Since you start with a bare machine with no software on it, you need
some external mechanism to:</p>
<p>1. Write the kernel modules and get them as XSM executable programs.</p>
<p>2. Store these modules into the machine's disk so that they can be
loaded to the memory and executed when the machine is powered on.</p>
<br/>
<p>We provide you with support tools for achieving the above objectives.</p>
<p>For the first task, a cross compiler for an enriched XSM assembly
language called the <a href="support_tools-files/spl.html" target="_blank"> System Programming Language (SPL) </a> is given to you. You can write the OS modules in the SPL language
from your host (Linux/Unix) environment and generate XSM target
programs using the SPL compiler.</p>
<p>For the second task, we provide you with an interface software called
the <a href="support_tools-files/xfs-interface.html" target="_blank"> XFS interface</a>.
This tool allows you to transfer executable kernel modules from
your host (Linux/Unix) system to specified blocks of the XSM disk.
Thus, you can load the XSM target modules into the appropriate
areas of the XSM disk.</p><br/>
<p>The following figure illustrates the OS development environment from
an OS programmer's viewpoint.</p>
<p><img src="img/Kernel_Module.png" style="display:block;margin-left:auto;margin-right:auto"></img>
</p>
<p>A similar mechanism is provided for preparing application programs
and loading them to the machine's disk. A cross compiler for a
tiny high level programming language called the <a href="support_tools-files/expl.html"
target="_blank"> Experimental Language (ExpL) </a> is supplied
to you. The ExpL compiler translates your program into the target
executable format recognized by eXpOS. These programs can be stored
in the XSM machine's disk using the XFS interface tool.</p><br/>
<p>The following figure illustrates the development environment from
an application programmer's perspective.</p>
<p><img src="img/Applicn_Pgm.png" style="display:block;margin-left:auto;margin-right:auto"></img>
</p><br/>
<p>The OS that you build will be very elementary. There will be no system
software like compilers or file editors that run on top of the
OS. <b>The OS will only be capable of loading into the memory and executing programs that are already pre-loaded into machine's disk before boot up.</b> Hence, the only way to write application programs (or kernel code)
for the OS will be to write the code from your host (Linux/Unix)
system, compile the code using ExpL (or SPL) cross compiler and
pre-load the target executable into the XSM disk using the XFS-Interface
tool, before powering on the simulator. </p><br/>
<p>Once the OS modules and application programs are loaded into the
XSM machine's disk, the <a href="support_tools-files/xsm-simulator.html"
target="_blank"> XSM simulator </a> can be used to bootstrap the
OS into the machine memory and start execution.</p>
<br/>
<p>The collection of development tools given to you including the XSM
simulator, compilers for ExpL and SPL and XFS Interface will be
referred to as the "eXpOS package” in the eXpOS documentation.</p><br/>
<p>The following figure gives a high level picture of the OS that you
will build by the end of the project.</p><br/><br/>
<figure style="text-align: center;">
<img src="img/os-design/high_level_design.png" width='50%' height='30%' style="display:block;margin-left:auto;margin-right:auto; ">
<br>
<figcaption>High Level Design of eXpOS</figcaption>
</figure>
<br>
<p>The <a href="os_spec.html" target="_blank"> eXpOS specification</a> provides an informal description of OS from the view point of the
user/application programmer. You may also have a quick look at
the <a href="os_design.html" target="_blank">high level system design</a> for a closer view of the OS.</p>
<p>eXpOS evolved from a primitive version called <a href="http://xosnitc.github.io/">XOS</a> developed a few years back. The eXpOS <a href="faq.html" target="_blank">FAQ</a> and <a href="About_us.html" target="_blank">About us</a> pages
provide some more information.</p>
<br/>
<p>We wish you enjoy doing the project following the <a href="Roadmap.html"
target="_blank">Roadmap</a>.</p>
</div>
</section>
<!-- END dashboard main content-->
</div>
</div>
<!-- END Page content-->
</section>
<!-- END Main section-->
</div>
<!-- END Main wrapper-->
<!-- START Scripts-->
<!-- Main vendor Scripts-->
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.min.js"></script>
<!-- Plugins-->
<script src="vendor/chosen/chosen.jquery.min.js"></script>
<script src="vendor/slider/js/bootstrap-slider.js"></script>
<script src="vendor/filestyle/bootstrap-filestyle.min.js"></script>
<!-- Animo-->
<script src="vendor/animo/animo.min.js"></script>
<!-- Sparklines-->
<script src="vendor/sparklines/jquery.sparkline.min.js"></script>
<!-- Slimscroll-->
<script src="vendor/slimscroll/jquery.slimscroll.min.js"></script>
<!-- Store + JSON-->
<script src="vendor/store/store%2bjson2.min.js"></script>
<!-- ScreenFull-->
<script src="vendor/screenfull/screenfull.min.js"></script>
<!-- START Page Custom Script-->
<!--[if lt IE 8]><script src="js/excanvas.min.js"></script><![endif]-->
<!-- END Page Custom Script-->
<!-- App Main-->
<script src="app/js/app.js"></script>
<!-- END Scripts-->
</body>
<!-- Mirrored from themicon.co/theme/beadmin/ by HTTrack Website Copier/3.x [XR&CO'2014], Fri, 29 Jan 2016 16:47:29 GMT -->
</html>