1 / 65

TDC368 UNIX and Network Programming

TDC368 UNIX and Network Programming. Week 1: Course Introduction Overview of UNIX Operating Systems Architecture UNIX process concepts. Camelia Zlatea, PhD Email: czlatea@cs.depaul.edu. Overview of UNIX operating system architecture.

darci
Télécharger la présentation

TDC368 UNIX and Network Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TDC368UNIX and Network Programming Week 1: • Course Introduction • Overview of UNIX Operating Systems Architecture • UNIX process concepts Camelia Zlatea, PhD Email: czlatea@cs.depaul.edu

  2. Overview of UNIX operating system architecture. UNIX process concepts. Process control primitives (fork, exec, exit, wait, waitpid). Filters and I/O Redirection. Interprocess Comunications (IPC): pipes, FIFO's. Asynchronous Events. Signals. Signal Functions (kill, system, sleep, raise, alarm, pause, abort). UNIX system calls: C library functions, C++ classes, POSIX API's. UNIX File System: files, catalogs (inodes; types,size, permissions). UNIX File I/O: unbuffered I/O functions (open ,close,seek,umask,read,write). Standard I/O buffering (fopen, fclose, fflush). File Sharing (dup,dup2,fcntl). Course Outline

  3. Interprocess Communication: Shared Memories, Semaphores, POSIX Semaphores, lock files. Socket API (TCP, UDP). Design Methods for Client/Server Applications UNIX shells. C-shell commands, shell variables. C-Shell Programming. Managing UNIX projects (make). Compilation and Debugging. UNIX shells: I/O redirection, filters(grep, sed), awk. Course Outline (cont.)

  4. Objectives • Upon completion of this course, students • will understand the fundamental concepts of UNIX operating system and use them to create various multitasking applications. • Will be familiar with UNIX programming environment, system call interface, ANSI C and ANSI/ISO C++ functions and classes • Will be familiar with Client/Server methods and Socket APIs • Will be proficient in UNIX shell programming

  5. Prerequisites • CSC 309 • Basic understanding of operating systems and programming techniques • C/C++ will be used to illustrate the concepts presented in the lecture material and for the implementation of the programming assignments and the project.

  6. Dave Curry, UNIX Systems Programming for SVR4, O'Reilly & Assoc., Sebastopol, CA, 1996. W. Richard Stevens, UNIX Network Programming - Interprocess Communication, Volume 2, Second Edition, Prentice Hall PTR, Upper Saddle River, NJ, 1999. W. Richard Stevens, Advanced Programming in the UNIX Environment, Addison-Wesley, Reading, MA, 1992. John Shapley Gray, Interprocess Communications in Unix, The Nooks & Crannies, 2nd ed. Prentice Hall PTR, NJ, 1998. HP-UX man pages http://docs.hp.com/hpux/onlinedocs/B2355-90682/B2355-90682.html (system calls) Texts

  7. Daniel Gilly, Unix in a Nutshell, O'Reilly and Associates, Inc., Sebastopol, CA, 1992. K.A.Robbins and S. Robbins, Practical UNIX Programming - A Guide to Concurrency, Communication, and Multithreading , Prentice Hall PTR, NJ, 1996 Ellie Quingley, UNIX Shells by Example, Prentice Hall PTR, NJ, 1997 Prabhat K. Andleigh, UNIX System Architecture, Prentice-Hall, Englewood Cliffs, NJ, 1990. Andrew Oran and Steve Talbot, Managing Projects with make, O'Reilly and Associates, Inc., Sebastopol, CA, 1991. Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language, Second Edition, Prentice-Hall, Englewood Cliffs, NJ, 1989. Other References

  8. Class Work and Grading

  9. Programming Environment • All students will get an account on hawk.depaul.edu server (running HP-UX). • Optional, you can use Linux system • Project submissions via COL (dlweb.cti.depaul.edu ) • use Submit Assignments link • Grading will be done on HP-UX or Linux • An experimental report is required for each programming project • The the report should include the program design description and the test cases and test scenarios for the application.

  10. TDC368 – Network Programming Instructor: Camelia Zlatea, PhD Office Hours: T 4:45-5:45PM; 9:00-9:30PM Where: Rm. 429, ext. x26149 (during office hours) or leave a message to setup a conference: +630-979-3621 Email: czlatea@cs.depaul.edu Web: http://condor.depaul.edu/~czlatea/TDC368/(*) Note: • In addition, course materials will be available from dlweb.cti.depaul.edu

  11. Class Communication • COL (dlweb.cti.depaul.edu) will be used primarily for: • Links to course materials/assignments • Grades • Announcements • Email/Communication • Newsgroup • Asking questions • Send me an email at czlatea@cs.depaul.edu OR • Use dlweb.cti.depaul.edu and post questions to class forum • Anybody may reply (including your classmates) • Everyone benefits from common issues

  12. 1969, Ken Thompson, Bell-Labs. UNIX OS written in Assembly on PDP-7 (DEC) 1973, K.Thompson&D.Richie UNIX re-written in C 1975, Bell-Labs. offered UNIX to educational institutions, at minimal cost UNIX - Brief History

  13. Portability Multi-process architecture (multitasking) Multi-user capability Ability to initiate asynchronous processes A hierarchical file system Device independent I/O operations User interface: Shell; selectable per user basis UNIX Features

  14. AT&T UNIX version V 1983 /SV, 1986 /SVR3.0 AT&T and Sun Microsystems 1988 /SVR4.0 - tries to unify Berkeley UNIX & other Berkeley UNIX, CSRG at U. of California BSD (Berkeley Software Distribution) UNIX Major Versions

  15. System V Interface Definition (SVID), AT&T Portable Operating System Interface for Computer Environments (POSIX), based on SVID, IEEE ANSI C, American National Standard Institute ANSI/ISO C++ Standard (draft) UNIX Standards

  16. Solaris - Sun Microsystems SunOS (later called Solaris), Solaris 2.x based on SVR4 HP-UX, Hewlett-Packard, SVR2 Linux, Linus Torvalds, free distribution, PC-based AIX, IBM, similar to SVR4 IRIX, Silicon Graphics, SVR4 UNIX Implementations

  17. UNIX-like same facilities as SV, does not use entirely the same code Mach (CMU), kernel is based on OO model server Next (implementation inspired by Mach with MacOS UI) UNIX-alike portability is no longer supported attributes not compliant with SV or BSD OS/9(MicroWare, Motorola 680xx, RT kernel) QNX(Quantum Software, Intel, RT processing) UNIX Implementations

  18. UNIX Architectural Overview Applications Network Applications DBMS Utilities Shell’s Executable Programs Commands pipe, filters System Calls Interface Kernel UNIX Hardware Architecture

  19. Portability Multi-process architecture (multitasking) Multi-user capability Ability to initiate asynchronous processes A hierarchical file system Device independent I/O operations User interface: Shell; selectable per user basis UNIX Features

  20. Multi-process/Multi-user architecture • Virtual Machine • timesharing OS • process, process quantum, process states • Kernel, base OS • manages all HW dependent functions • users have no direct access to it • System Calls Interface • service routine performing user requests

  21. A process may create sub-processes fork(); A process may terminate exit(); A process may put itself to sleep temporarily sleep(20); pause(); wait(); Processes synchronization mechanisms communication mechanisms UNIX Processes

  22. Multiple Processes - concurrency at OS level Multiple Threads - concurrency at process level thread = flow of control in a process multiple threads (stream of instructions) are executed within the same process threads share code & data (address space) threads have their own execution stack, PC, register set and states context switches are avoided efficient mapping on multi-processor machines UNIX Threads

  23. Some Unix Terms • TRAP INSTRUCTION • switches a system call from user to kernel mode • handles error conditions • synchronous execution • Ex: division by zero/overflow • INTERRUPT • used by peripherals to request services from the devices handles • asynchronous execution • SIGNALS software notification of an event • example: • when typing “ctrl-c” an interrupt is generated for the keyboard driver, which notifies the process by sending a signal

  24. UNIX Kernel - model User Space User Processes System Call Interface (Library Routines) Process Memory File System I/O Services Mgmt. Mgmt. Kernel Space Scheduler Device Drivers I/O Buffers Hardware

  25. Apps./Utilities System Calls UNIX KERNEL Hardware Interrupts Hardware

  26. Process representation, scheduling, dispatching Memory allocation and de-allocation Interrupt handling Low level device control Disk Mgmt., data buffering Process synchronization and IPC UNIX Kernel - low level

  27. Maps user-level requests with device driver actions A user system call is translated to a call of the kernel routine, providing that requested service Type of Services: process creation and termination I/O services UNIX file system services terminal handling services Kernel - services level

  28. User program: system(“ps -e”); System calls actions: fork(); //process creation service execl(“/bin/ps”, “ps -e”); //code execution Kernel - services level

  29. A user mode process is translated into a protected kernel mode process Now, program can call kernel routines System Call Interface level

  30. User processes running: shells Unix commands utilities application programs User Processes level

  31. UNIX and POSIX API Library Functions ANSI C Standard ANSI/ISO C++ Standard UNIX Standards

  32. UNIX and POSIX API • UNIX API - system calls • UNIX API are called by • C library functions and • C++ standard classes Example: iostream class • Program confirms POSIX.1? #define _POSIX_SOURCE or % CC -D_POSIX_SOURCE *.C

  33. UNIX and POSIX API • API set to perform: • determine system configuration and user information • file management • process creation and management • inter-process communication • network communication

  34. UNIX and POSIX API User Process (User Mode of Execution) an API is invoked API execution completed UNIX API’s level Kernel mode of execution API executed in protected mode

  35. Context Switch from user to kernel mode more overhead than library functions, for the same task I/O lib.functions are buffered UNIX and POSIX API

  36. UNIX and POSIX API • UNIX API - system calls • UNIX API are called by • C library functions and • C++ standard classes Example: iostream class • Program confirms POSIX.1? #define _POSIX_SOURCE or % CC -D_POSIX_SOURCE *.C

  37. Development elements: Headers <unistd.h> <sys> (/usr/include/sys directory) <stdio.h> function perror - system diagnostic message for an API execution failure Object Code libc.a and libc.so (on most systems) other special libraries, libsocket.a and libsocket.so UNIX and POSIX API

  38. #include <stdio.h> void perror(const char *s); #include <errno.h> int errno; #include <string.h> char *strerror(int errnum); UNIX and POSIX API

  39. Library of functions object code of the functions stored in archives (library files) run-time library routines UNIX archive ar utility manage library files. Displaying the table of contents of the standard library: ar -t /usr/lib/libc.a Library Functions

  40. Standard C library functions: memory management get system information get/set time information data conversion, processing Advantages: portability maintainability cost effective for application design Disadvantages: duration of execution weak support for time-critical apps. ANSI C Standard

  41. Header files directory: /usr/include Header files: - <stdio.h> - <stdlib.h> - <string.h> - <memory.h> - <malloc.h> - <time.h> - <assert.h> - <stdarg.h> - <getopt.h> - <setjmp.h> Object code directory: /usr/lib libc.a , libc.so Standard C library functions

  42. <stdio.h> - declares FILE data type functions/macros -manage stream files open/close stream files: fopen/fclose read/write block data: fread/fwrite read/write lines: fgets/fputs write formatted data: fprintf positions/returns stream file location:fseek/ftell macros: feof, ferror unnamed pipes: popen/pclose Standard C library functions

  43. #include <stdio.h> int main() { /* execute the command */ FILE *cmd = popen(“ls -l|grep tdc368”,”r”); if (!cmd) { perror(“popen”); return 1; } char answer[256]; /* read grep process execution output */ while(fgets(answer, sizeof(answer),cmd)) fputs(answer, stdout); /* echo */ pclose(cmd); return 0; } Example: ls -l|grep tdc368

  44. <stdlib.h> - declares set of functions for data conversions, get/set env. variables, shell command execution, process termination atoi, atof, atol, strtod, strtol rand, srand getenv, putenv system exit Standard C library functions

  45. #include <stdlib.h> int main() { /* execute the command */ if (system(“ls -l|grep tdc368”)== -1) { perror(“system”); return 1; } return 0; } Example: ls -l|grep tdc368

  46. #include <iostream.h> #include <stdlib.h> int main() { char *env = getenv(“REMOTEHOST”); cout << “\REMOTEHOST\” is:”<<env<<‘\n’; if (putenv(“CC=c++”)) cer<<“putenv of CC failed\n”); return 0; } Example: getenv/putenv

  47. //C style char* adr1 = (char *)malloc(4096); free(adr1); //C++ style , no use of malloc ! char* adr2 = new char[4096]; delete adr2; Example: <malloc.h>

  48. <time.h> - declares set of functions for system clock query time - #sec since 01/01/70 (UNIX birth) ctime - current local time localtime gmtime asctime mktime clock - (ANSI C) , #microsec since the process first called clock Standard C library functions

  49. // evaluate process execution time #include <iostream.h> #include <time.h> main() { time_t tick = CLOCKS_PER_SECOND; clock_t start_time = clock(); // start timer /* process code here */ clock_t duration = clock() - start_time; cout <<“Duration:”<<(duration/tick)<<endl; } Example: <time.h>

  50. <assert.h> - declares a macro to assert conditions or invariants of the program easier program debugging compiler option -DNDEBUG take them out or #ifndef NDEBUG #define assert(p) {if (!(p)) {\ fprintf(stderr,”Assertion failed: \ file:\”%s\”,line %d\n”,\ _FILE_, _LINE_); exit(1); } #endif Standard C library functions

More Related