Material
Slides (in portuguese): http://usp-osdev.googlecode.com/files/intro.pdf
Brief outline
(From the slides)
Welcome to the discipline Operating System II
Objective: To exercise the concepts studies in Operating Systems I (theoretical).
- to understand how theory applies in practice
- to gain familiarity with the implementation of OSs
- to know the state of the art in related technology
Approach
- Hands-on approach
- Work with real-world situations
Plan
- Basic conceptual background (refresh)
- Development enviroment (the real thing)
- Warm-up
- development of a shell for linux (get used to syscalls)
- linux kernel hacking, make new syscall (see examples)
- Main project: make an OS from the scratch (for i366 PC arch.)
Material
- Computer language: C
- Platform: gnu/linux
- Tools: gcc, libc, make, svn, qmu (emulator), PC hardware
Bibliograpny
- GNU website: www.gnu.org (manuals)
- OSDEV: wiki.osdev.org
- Intel Architecture Software Development, System Programming
- kernel newbies: kernelnewbies.org
- Google: www;google.com
- best place to learn: /usr/src
Program
- Tools: 1 class
- Shell project: 2 classes (deliverable 2 weeks later)
- Linux hacking: 2 classes (deliverable 2 weeks later)
- SO Project: the rest of the semester (deliverable, in the workshop)
Workshop
- By the end of the semester we will make an workshop
- Every team will present its OS project
- We will have an evaluation board composed by experts from the industry
- Other students can attend to the workshop
Evaluation
- The final score will be computed from the projects evaluation
- We will have a final examination for validation
- Who scores at least 5.0 in the test, will have the project scores
- Who doesn't score at least 5.0, will have the test score
- The idea is
- if you really work in the projects, the test will be a piece of cake
- if you "hitchhike" on the others' work... kkkkkk... sorry... ;-)
How to calculate the final score
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
float nota_shell, nota_so, nota_prova; /* entre 0 e 10 */
float nota_linux; /* entre 0 e 1 */
float media_final; /* entre 0 e 10 */
scanf (“%f %f %f”, ¬a_shell, ¬a_linux, ¬a_so);
if ( (nota_prova >=5)) /* Normal */
media_final = nota_so*0.6 + nota_shell*0.3 + nota_linux + nota_prova/10;
else /* Chii...*/
media_final = nota_prova;
if ( (nota_final >=2) && (nota_final <3) && (nota_linux >= 0.5)) /* Canja */
nota_final = 3
return nota_final >=3 ? EXIT_SUCCESS : EXIT_FAILURE;
} /* cat choramingos > /dev/null*/
Tip: if you can't understand the code above, get a good C-book and learn asap!
General Instructions
- subscribe to http://groups.google.com.br/group/usp-osdev
- use the list to post questions, comments, etc.
- answer the questions, comments etc. if you can help
- create a project in code.google.com and send us the link
- update your projec regularly
- mind the check-point dates
Good luck!