OS – Ex 1

farrightΛογισμικό & κατασκευή λογ/κού

15 Αυγ 2012 (πριν από 4 χρόνια και 8 μήνες)

360 εμφανίσεις

Homework


There will be
4
homework assignments


They will each be graded
0
-
100
+ (There will be bonus)


Total weight =
55
% (total weight of test =
55
%)


Homework can be done in groups


Each group must meet the ex. Checker and defend their work. the grade of the group will be
the grade of it’s worst member!


The kernel homework will be checked on a computer with VMWare that you should download
and verify. The User space code will be checked on VMWare


No rechecks for code that doesn’t run
!!!


No points will be deducted on code quality (unless we see real atrocities) but points will be
deducted if the ex doesn’t work as supposed to or use the OS incorrectly.

Defending homework



The main reason is policy


since the homework affect
grade to such extent it cannot be allowed without oral
exam.


This method have proven to be very effective in ensuring
students success on the final test.


It cannot be changed not even if you work alone.



What questions do we ask when you
defend your code?


50 questions are prepared for each ex. 3 random questions
per student.


Questions type : show me where you <do something>,
what does <this> line do? Why did you add this check etc.


No student that worked on the ex. Should fail. But it is
almost impossible to “fake”. (so please DO your
homework)


Strict timetable policy


In order to minimize hassle for you, we will give oral exam
on the homework within 1 week of dead line.


That means we need to schedule a room, invite checker
and grade everything within very short time!


Since we do all that


we believe students should be ready.
By not submitting homework in time you delay our
checking and ruin our system.


We are also firm believers on strict timelines.

Using Linux


The good but hard way


install on your computer. (Do this if you know what you
are doing and at your own risk we cannot and will not provide support if your
computer fail)


The also possible way


Download VM Player from VMWare.com (free) and use it
with our vmware.


We will distribute VMWare machine you can work on. (MTA


via library, TAU


Amir’s door) It will also be available on class on MTA.


The not recommended ways


Using only user mode linux on TAU.


Using your own different linux distribution


Using another UNIX


ETC… all those methods are at your own risks. Should anything fail, you will be sole
responsible due to all incompatibilities.

Using Linux under VMPlayer


Simulates computer inside your computer.


Slower then real PC but good enough for us.


For most practical purposes can be treated as a real
computer with real OS. (certainly for this course)


Root password : password


User password : user


Download from www.scipio.org/Courses/OS_Course

User vs Root


User


can run programs


Root


can run system programs. Administrator of system (usually owner or
owner’s employee)


User


can hardly cause damages.


Root


prune to damages.


Root


can use low
-
level system resources (such as row sockets) and setup kernel
modules


Most of the time we work as user


Sometimes (rarely) we work as root. When coding stuff on the kernel or running
administration commands. In Ubunto we login as user and sudo(1) when we need
root access


Assumed knowledge


We assume you know how to code in C in KR Level.


We assume you know how to handle strings


We assume you know how to do basic math


We assume you know how to allocate and free memory


We assume you know how to create functions and use
recursion, library functions and function pointers


We assume you know how to open files and folders


We assume you know what editor, compiler, debugger and
Make (build) is.

Using Linux


There are many manuals on the net. (Try


UNIX is a
4
letter
word and vi is
2
letter abbreviation)


There is also a readme that comes with your VM


Some basic commands


mkdir, rmdir, cd


just like MS
-
DOS


ls


list files (dir)


vi


Text editor


cp


copy


rm


remove (delete)


Coding and programming in Linux


First thing we need to do is edit a source file. (which is basically
a text file)


Create a source file in your favorite editor (I use vi.)


Compile using gcc

c “source file”

o “object file”


Link using gcc <objects>
-
o <binary>


This process can be automated by using Makefile


Run using ./<binary> (we don’t have . In the default search path)


Sample program


compile and run

Macintosh:~ scipio$ vi hello.c

Macintosh:~ scipio$ gcc
-
c hello.c
-
o hello.o

Macintosh:~ scipio$ gcc hello.o
-
o hello

Macintosh:~ scipio$ ./hello

hello world


Source of hello.c

#include <stdio.h>


int main(int argc, char * argv[])

{


printf("hello world
\
n");


return 0;

}


Makefile


Makefile (same as project file in other environments) is a
simple way to automate build process


Makefile works like that…


<Target> : <requirement>


<tab> <how to produce>


<next target>


For example for hello world the make can look like


Makefile

all : hello


hello : hello.o


gcc hello.o
-
o hello


hello.o : hello.c


gcc
-
g
-
c hello.c
-
o hello.o


Using make

Macintosh:~ scipio$ make

gcc
-
g
-
c hello.c
-
o hello.o

gcc hello.o
-
o hello


debugging


The Linux debugger is gdb


You must compile with

g switch to include debug info
(same as debug/release build in other environments)


You can use gdb to trace (step, step into, next) your
programs. Gdb has a graphical front end


ddd


Usually though you will just examine core dump. (core is
what your program leaves when it crashes)

Crash.c

int main()

{


int i=
5
;


int j=
0
;


int k=i/j;

}


Using UNIX to debug…

ulimit

c 999999

gcc

g crash.c

o crash

./crash

gdb

c core ./crash



Program received signal EXC_ARITHMETIC, Arithmetic exception.

0x00001ff3 in main () at crash.c:5

5

int k=i/j;


More options


Gcc and gdb has lots more options, while Make is fully
programmable environment.


We don’t teach any of these due to time constraints (and
because it’s off topic) but new options may be introduced
as we go along. You are welcome to use any option you
want and do your own web research.


You may also use anything you find in your homework.

Using IDE under Linux


There are plenty of IDE that act as a wrapper to the above
such as (partial list)


Kdevelop


Eclipse


Netbeans


Codewarrior


Slickedit


We don’t teach or support them, but you may use them for
your homework.



Ex. 0


We give you ex.
0
as an optional ex. To iron out your C
skills and code under Linux. Should you submit it, it will be
checked. But it is not obligatory and will not effect your
grade. (there is also no defense on that one)


You should probably google most of your problems (there
are plenty of good guides) you can also Email Nezer and
Tomer if you cannot find the answer in google.

Ex. 0


Create a user shell supporting the following commands:


DIR = list files


CD = change directory (CD .. = usual meaning)


Everything else = try to execute something with the same
file name in the current directory using system(3)


Submit source and makfile.