1
CS 416- Fall 2008Session 02
TA: Tuan PhanEmail: [email protected]
732-445-6450 (ext 9644) : Just leaving msg( prefer using Email, with HEADER:
[CS416] …)
Recitation: TH :3:35pm – 4:30 PM @ SEC 202Office Hour: TH 5:00 – 6:00 PM @ Hill 367
Another place to find me: PANIC LAB, CORE 340
Extra: Email to setup appointment on Monday afternoon.
TA’s Web Site: http://paul.rutgers.edu/~tphan/cs416/Slides for recitation, Useful Links
2
What will be in recitations
• Summary of lectures• Projects• Sample Questions / Home work• More technical stuff
3
Recommend Tools for CS416• PuTTy : ssh client without GUI
http://www.chiark.greenend.org.uk/~sgtatham/putty/ • XManager: ssh client with GUI• WinSCP: to upload files to CEREAL clusters
http://winscp.net/ • IDE: emacs, vi …
4
CEREAL cluster / iLab• Link: http://ilab.rutgers.edu/
– Use Linux machines; DO NOT use Sun machines (including cereal.rutgers.edu)
• iLab: Hill 248 - 250– Use Rutgers ID– Transfer students: use temporary ID– Problem: meet Robert Toth @ CoRE 232
Homework: Create/Activate an account on iLab
Today’s topics
• Communication Channels with TA• Quick Introduction about C• Prepare for project 1
– General Information– Calling Stack– Pointers in C– Dynamic Memory Allocation– Fork()– Others…
5
C Programming
• Links: – http://paul.rutgers.edu/~tphan/cs416/2_IntroC.pdf– http://www.cs.cf.ac.uk/Dave/C/
6
Example of Process Creation Using Fork
• The UNIX shell is command-line interpreter whose basic purpose is for user to run applications on a UNIX system
• cmd arg1 arg2 ... argn
Creating, Compiling and Running Your C Program
• Create: myprog.c• Compile
(1) cc myprog.c(2) cc -o myprog myprog.c
• Running(1) ./a.out(2) ./myprog
8
Compiler Options-llibrary
Link with object libraries. cc calc.c -o calc -lm
-Ldirectory Add directory to the list of directories containing object-library routines. cc prog.c -L/home/myname/mylibs mylib.a
-Ipathname Add pathname to the list of directories in which to search for #include files with relative filenames
cc prog.c -I/home/myname/myheaders -g invoke debugging option.
9
A Simple C Program#include <stdio.h>#define STOP 0/* Function: main *//* Description: counts down from user input to STOP */main(){
/* variable declarations */int counter; /* an integer to hold count values */int startPoint; /* starting point for countdown *//* prompt user for input */printf("Enter a positive number: ");scanf("%d", &startPoint); /* read into startPoint *//* count down and print count */for (counter=startPoint; counter >= STOP; counter--)printf("%d\n", counter);
}
10
Fred Kuhns (05/04/23) CSE332– Object Oriented Programming Lab
Another Simple C Programint main (int argc, char **argv) { int i; printf(“There are %d arguments\n”, argc); for (i = 0; i < argc; i++) printf(“Arg %d = %s\n”, i, argv[i]);
return 0;}• Notice that the syntax is similar to Java•What’s new in the above simple program?
– of course you will have to learn the new interfaces and utility functions defined by the C standard and UNIX
– Pointers will give you the most trouble
What Happens When There Is More Than One Running Process?
OS
CodeGlobals
Stack
Heap
P0
P1
P2
Run-Time Stack
main() main() main()
foo()
Memory Memory Memory
Before call During call After call
Notes: Each box represents an activation record of a function.
Activation Record• Activation Record:
– information about each function– stored in run-time stack
int foo(int a, int b){int w, x, y;...return y;}
b
a
Return value
Return AddressDynamic link
w
x
y
parameters
Local variables
bookeeping
Passing pointers into a function (1)
void Swap(int a, int b) {int tmp;tmp=a;a=b;b=tmp;printf(“Inside SWAP(): a=%d b=%d”, a, b);
}
main(){
int x=2,y=3;Swap(x,y);printf(“x=%d y=%d”, x,y);
}
15
Pointers in Cint I;int *ptr;
i=4; // Store the value 4 into the memory location associated with i.ptr= &i; // Store the address of I into the memory location associated with ptr
*ptr = *ptr + 1;
-----int a[10], x; int *pa; pa = &a[0]; /* pa pointer to address of a[0] */ x = *pa; /* x = contents of pa (a[0] in this case) */
// &a[i] ~ a + i a[i] ~ *(a+i)
16
Passing pointers into a function (2)
void Swap(int *a, int *b) {int tmp;tmp=*a;*a=*b;*b=tmp;printf(“Inside SWAP(): a=%d b=%d\n”, *a, *b);
}
main(){
int x=2,y=3;Swap(&x,&y);printf(“x=%d y=%d”, x,y);
}
17
Dynamic Memory Allocation• void *malloc(size_t number_of_bytes)
Ex: char *cp; cp = malloc(100);int *ip; ip = (int *) malloc(100*sizeof(int));
• void *calloc(size_t num_elements, size_t element_size};int *ip; ip = (int *) calloc(100, sizeof(int));
Malloc does not initialise memory (to zero) in any way. If you wish to initialise memory then use calloc.
• free(pointer).• kmalloc() & kfree()
• void * kmalloc (size_t size, int priority); void kfree (void * __ptr);
18
Top Related