0% found this document useful (0 votes)
61 views33 pages

510lec01 Overview

This document provides an overview and summary of the CSCE 510 - Systems Programming course. It discusses the course topics which include a brief history of systems programming and Unix, the Linux kernel, shells, users and groups, file I/O model, and processes. It also outlines the course structure, assignments, textbooks, and references. The goal of the course is to introduce students to fundamental systems programming concepts in Unix and C.

Uploaded by

Jitendra Patel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
61 views33 pages

510lec01 Overview

This document provides an overview and summary of the CSCE 510 - Systems Programming course. It discusses the course topics which include a brief history of systems programming and Unix, the Linux kernel, shells, users and groups, file I/O model, and processes. It also outlines the course structure, assignments, textbooks, and references. The goal of the course is to introduce students to fundamental systems programming concepts in Unix and C.

Uploaded by

Jitendra Patel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 33

CSCE 510 -

Systems
Programming

Lecture 01 - Template

CSCE 510 Jan 14, 2013


Overview
Last Time
 Outback
Readings for today
 Text Chapter 1 and 2
Prologue
 A Brief History - Systems programming and Unix (Chap 1)
Interlude - Course Pragmatics, CS man of the day, Quiz
Epilogue
 fundamental Unix/systems programming (Chap 2)
 Kernel, Shell, Users/groups, Directory Hierarchy
 File I/O model
 processes
What is Systems Programming?
 Systems Software
 Donavon Diagram

Slide - 3
Systems Programming by John Donovan, 1972 1/14/2013 CSCE 510 Sp
13 -
The Dark Ages - JCL

 Darkages ~ 1972
 JCL?
 Batch Processing
 Job card?

Slide - 4
Systems Programming by John Donovan, 1972 1/14/2013 CSCE 510
What is CSCE 510?
 First version – assembly language,
 macro processors,
 linkers …
 Unix/C version circa 1987  2002 version
 Make
 M4/cpp macro processors
 Shell1: variables, regexps, filename completion, history
 Shell2: I/O redirection, signals, …
 webserver
 2008 Summer version – done in ruby

Slide - 5 1/4/2013 CSCE 510 Sp 13


-
CSCE 510 - 2005
CSCE 510 the 2013 version
 The Usual Suspects: programming assignments
 ls, ar, cpp/m4, shell1, shell2, webserver0, SSH
 New possibilities
 Windows – don’t get me started
 Environments: Rails, Posix Threads, Iphone/Android Apps, Vmware,
Cloud Computing, SourceForge, GitHub
 Unix Software: Shells. Gcc/g++, make, script/pseudo-terminals
 Tools: Valgrind, Cucumber/capybara, Rspec, gdb,
 Database: Mysql; postgress
 Languages: …
 Editors/IDEs: Nano/pico, Vi/Vim, Emacs, OS X Textmate
 IDE: Eclipse Netbeans
 Software Engineering: Agile, Git, Junit, Bugzilla,

Slide - 7 1/4/2013 CSCE 510 Sp 13


-
Which Language?
 Linux Journal Best of 2012
 Best Programming Language
 Python 28%
 C++ 19%
 C 18.9%
 Java 8.2% Perl 6.1% Other 4% Ruby 3.1% JavaScript
2.4% C# .7% Erlang .7% Haskell

 (2012-12-02). Linux Journal December 2012 (Kindle


Locations 1628-1633). BELLTOWN MEDIA INC. Kindle
Edition.

Slide - 8
Linux Journal December 2012 1/4/2013 CSCE 510 Sp 13
-
Slide - 9
Linux Journal December 2012 1/4/2013 CSCE 510 Sp 13
-
More Linux Journal Best of 2012
 Best IDE –Eclipse 27%, vim 26%, Netbeans 5% …
 BEST REVISION CONTROL SYSTEM Git 63%, Subversion 18.6%, …
 BEST OPEN-SOURCE CONFIGURATION MANAGEMENT TOOL – Puppet
42% …
 BEST PLATFORM FOR DEVELOPING RICH INTERNET APPS - HTML5 87%
 BEST PACKAGE MANAGEMENT APPLICATION – apt 34%
 BEST CONTENT MANAGEMENT SYSTEM
 WordPress 35%, Drupal 28%, Joomla 15%
 BEST LINUX-FRIENDLY WEB HOSTING COMPANY–other 19%
 BEST LINUX BOOK
 Tie between Linux in a Nutshell and Debian Administrator’s Handbook
 Second place goes to The Linux Programming Interface: A Linux and UNIX
System Programming Handbook, by Michael Kerrisk.
 BEST OTHER LINUX-BASED GADGET – Raspberry Pi

Slide - 10
Linux Journal December 2012 1/4/2013 CSCE 510 Sp 13
-
A Brief History of Time (UNIX and C)
 1969 – First Unix Ken Thompson at AT&T Bell Labs
 Unix pun on MULTICS
 Ideas from Multics:
 Tree structured file system
 Program for interpreting commands (shell)
 Files – unstructured streams of bytes
 1970 Unix rewritten in assembly for DEC PDP-11
 C – Dennis Ritchie – a systems programming language
 BCPL  B (Thompson)  C
 1970 Kernel rewritten in C – eases porting to other
machines
 1984 Turing Award Lecture – C compiler learned
backdoor

Slide - 11
Chapter 1 and … 1/4/2013 CSCE 510 Sp 13
-
Berkeley Software Division (BSD)
 (1975) Thompson visiting Prof. at UC-Berkeley
 A student Bill Joy added new features
 Vi editor
 C shell
 First paging virtual memory management (Unix) BSD 4.2
 Sendmail, Pascal compiler
 Later co-founded Sun Microsystems
 BSD 4.2 (1983) – full TCP/IP & sockets API

Slide - 12 1/4/2013 CSCE 510 Sp 13


-
Unix after Unix 7th Edition (1979)
 BSD continued at UC-Berkeley
 Bell Labs System III  Systems V
 POSIX standard (1988)
 Other Software
 X windows
 Free Software Foundation
 GNU Public License
 Minix – (1988)Unix like; MINI-uniX; for education; A.
Tannenbaum

Slide - 13 1/4/2013 CSCE 510 Sp 13


-
 .

Slide - 14
http://en.wikipedia.org/wiki/Linux 1/4/2013 CSCE 510 Sp 13
-
GNU
 Recursive acronym “GNU’s not UNIX”
 http://www.gnu.org/ not http://www.gnu.com/
 Richard Stallman (1983) Goal a free Unix
 Known for Free Software movement, GNU, Emacs, gcc
 Never really released GNU operating system

 Free Software Foundation


 http://www.fsf.org/

Slide - 15 http://en.wikipedia.org/wiki/GNU 1/4/2013 CSCE 510 Sp 13


-
Linux -
 (1991) Linus Torvalds
 For Intel x86 systems
 Moved to big Iron
 more than 90% of today's 500 fastest
supercomputers run some variant of Linux
 Network routers
 Embedded systems
 Android

Slide - 16
http://en.wikipedia.org/wiki/Linux 1/4/2013 CSCE 510 Sp 13
-
Computer Science Concepts- Interrupt
 Mr. Smith has a plan that
he is executing
 “run for touchdown”

 Suddenly an interrupt
arrives
 Clowney

 Now he is executing
another plan
 Find helmet, walk to
sideline

Slide - 17 1/4/2013 CSCE 510 Sp 13


-
Course Pragmatics
 Text: The Linux Programming Interface by M. Kerrisk
 Website:
 http://www.cse.sc.edu/~matthews/Courses/510/index.html
 Code Examples
 CSE linux server /class/csce510-001
 Assignments –
 Dropbox - https://dropbox.cse.sc.edu/
 Late HW – not accepted

Slide - 18 1/4/2013 CSCE 510 Sp 13


-
Provost’s Retreat

 Best and Worst Classes


 Dr. Buell’s note

Slide - 19 1/4/2013 CSCE 510 Sp 13


-
Homework Assignment
 Write a C/C++ program to read command line
arguments and just print them.
 Read “man getopt” (all sections).
 What sections of the manual has a getopt section?
 What types of strings does getopt usually process?

Slide - 20 1/4/2013 CSCE 510 Sp 13


-
References
 Text: The Linux Programming Interface by M. Kerrisk
 http://man7.org/tlpi/
 Other Books
 Adv Prog in Unix Environment (APUE) by Richard Stevens
(Rago 2nd ed)
 http://www.kohala.com/start/apue.html
 http://www.apuebook.com/ 2nd edition site – code etc
 C by Kernighan and Ritchie (K&R) 2nd edition
 http://en.wikipedia.org/wiki/The_C_Programming_Language
 http://clc-wiki.net/wiki/K%26R2_solutions
 http://cm.bell-labs.com/who/dmr/

Slide - 21 1/4/2013 CSCE 510 Sp 13


-
 Linux in general
 http://www.linux.org/
 Man Pages
 http://man7.org/linux/man-pages/index.html
 Slashdot
 StackOverflow
 Python
 http://www.python.org/
 http://docs.python.org/2/tutorial/

Slide - 22 1/4/2013 CSCE 510 Sp 13


-
The kernel
 What is the kernel?

 What distinguishes it from the Operating System?

Slide - 23 1/4/2013 CSCE 510 Sp 13


-
Kernel Tasks
 Process scheduling
 Memory management
 File System
 Access to devices
 /dev – device drivers
 Networking
 System call API

Slide - 24 1/4/2013 CSCE 510 Sp 13


-
Kernel Mode and user mode
 When an application  Time command
makes a system call hermes> time make
… 10 pages of compiles .. uses cc
real 0m33.067s
user 0m13.545s
sys 0m5.596s
hermes>

Slide - 25 1/4/2013 CSCE 510 Sp


13 -
Directory Hierarchy – fig 2.1

Slide - 26 1/4/2013 CSCE 510 Sp 13


-
File Types
 Filenames
 Regular files
 Special Files
 Directory
 . (this directory),
 ..(my parent),
 list of files contained (filename and inode number)
 od –c . “used to work” but alas no longer
 Symbolic link
hermes> ln –s README link
hermes> ls -l link
lrwxrwxrwx 1 matthews faculty 6 2013-01-13 17:51 link -> README

Slide - 27 1/4/2013 CSCE 510 Sp 13


-
Pathnames
 Unix basic commands with hierarchy
 Current working directory – each running process has a
“current working directory” assigned to it
 cd dir - (change directory to dir)
 pwd
 Relative paths

 Absolute Paths – start with /


 / = root of the directory hierarchy

Slide - 28 1/4/2013 CSCE 510 Sp 13


-
The /class subtree
 Examples
 ?
 Code
 TLPI
 APUE

Slide - 29 1/4/2013 CSCE 510 Sp 13


-
The Shell
 Command interpreter in original Unix
 Read command
 Perhaps pre-process command
 Fork/execute
 Return exit status of command
 A little history revisited
 Bourne Shell (sh)
 C chell
 Korn shell
 Bourne Again shell (bash)

Slide - 30 1/4/2013 CSCE 510 Sp 13


-
Users, Groups and Permissions
 User ID (UID)
 Setuid
 Group (GID)

 Permissions
hermes> ls -l

drwxr-xr-x 2 matthews faculty 57 2012-10-15 09:54 acl

 Super user = root; sudo

Slide - 31 1/4/2013 CSCE 510 Sp 13


-
Man – the Online Manual
 The sections of the manual
1. Commands
2. System Calls
3. Library functions
4. Special files (usually found in /dev)
5. File formats and conventions eg /etc/passwd
6. Games
7. Miscellaneous (including macro packages and
conventions), e.g. man(7), groff(7)
8. System administration commands (usually only for root)
9. Kernel routines [Non standard]

Slide - 32 Man command 1/4/2013 CSCE 510 Sp 13


-
Man – the command
hermes> man chmod
CHMOD(1) User Commands CHMOD(1)
NAME
chmod - change file mode bits
SYNOPSIS …
 man –k chmod
 man –s 2 chmod
 Online
 http://man.he.net/
 http://www.tldp.org/guides.html
 http://man7.org/linux/man-pages/index.html

Slide - 33 1/4/2013 CSCE 510 Sp 13


-

You might also like