Week 4 - Wednesday.  What did we talk about last time?  Evil: break, continue, goto  System calls  Functions.

Slides:



Advertisements
Similar presentations
ITR3 lecture 7: more introduction to UNIX Thomas Krichel
Advertisements

Slide 2-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 2 Using the Operating System 2.
Linux can be generally divided into four major components: 1. KERNEL – OS, ultimate boss The kernel is the core program that runs programs and manages.
EEE 435 Principles of Operating Systems Operating System Concepts (Modern Operating Systems 1.5)
Chapter One The Essence of UNIX.
CS 497C – Introduction to UNIX Lecture 11: - The File System Chin-Chih Chang
Introduction to Unix (CA263) File System
Linux+ Guide to Linux Certification, Second Edition
Introduction to C Programming Overview of C Hello World program Unix environment C programming basics.
More Shell Basics CS465 - Unix. Unix shells User’s default shell - specified in /etc/passwd file To show which shell you are currently using: $ echo $SHELL.
Guide To UNIX Using Linux Third Edition
Guide To UNIX Using Linux Third Edition
Overview scope - determines when an identifier can be referenced in a program storage class - determines the period of time during which that identifier.
CMPE 151: Network Administration Spring Class Description Focus: system and network administration. Sequence of exercises. E.g., installing/configuring.
Week 4 - Friday.  What did we talk about last time?  Some extra systems programming stuff  Scope.
Introduction to Linux Installing Linux User accounts and management Linux’s file system.
Filesystem Hierarchy Standard (FHS) –Standard of outlining the location of set files and directories on a Linux system –Gives Linux software developers.
System Calls 1.
Lesson 7-Creating and Changing Directories. Overview Using directories to create order. Managing files in directories. Using pathnames to manage files.
1 Lecture 2 Working with Files and Directories COP 3344 Introduction to UNIX.
Linux in More Detail Shirley Moore CPS5401 August 29,
Unix Basics Chapter 4.
– Introduction to the Shell 10/1/2015 Introduction to the Shell – Session Introduction to the Shell – Session 2 · Permissions · Users.
An Introduction to UNIX System --- Cosc513 Presentation n Instructor: Morteza Anvari n Author: Yonghong Pan n ID#: n Date: Jan.29, 2001.
CSC 322 Operating Systems Concepts Lecture - 4: by Ahmed Mumtaz Mustehsan Special Thanks To: Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall,
Linux+ Guide to Linux Certification, Second Edition
Chapter 2: Operating-System Structures. 2.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts Chapter 2: Operating-System Structures Operating.
Adding New Users User as an entity - username(UID), GID. UID - typically a number for system to identify the user. GID – a number that recognizes a set.
CS 390 Unix Programming Summer Unix Programming - CS 3902 Course Details Online Information Please check.
Guide to Linux Installation and Administration, 2e1 Chapter 7 The Role of the System Administrator.
Linux Operations and Administration
Linux+ Guide to Linux Certification Chapter Eight Working with the BASH Shell.
Lesson 9-Setting and Using Permissions. Overview Describing file permissions. Using execute permissions with a file. Changing file permissions using mnemonics.
Users Greg Porter V1.0, 26 Jan 09. What is a user? Users “own” files and directories Permission based on “ownership” Every user has a User ID (UID) 
ITR3 lecture 6: intoduction to UNIX Thomas Krichel
Chapter 3 & 6 Root Status and users File Ownership Every file has a owner and group –These give read,write, and execute priv’s to the owner, group, and.
CS 346 – Chapter 2 OS services –OS user interface –System calls –System programs How to make an OS –Implementation –Structure –Virtual machines Commitment.
Linux+ Guide to Linux Certification, Third Edition
Linux+ Guide to Linux Certification, Third Edition
1 © 2001 John Urrutia. All rights reserved. Chapter 4 The LINUX Filesystem.
Lesson 3-Touring Utilities and System Features. Overview Employing fundamental utilities. Linux terminal sessions. Managing input and output. Using special.
Linux Commands C151 Multi-User Operating Systems.
1 Lecture 2 Working with Files and Directories COP 3353 Introduction to UNIX.
Programming Fundamentals. Topics to be covered Today Recursion Inline Functions Scope and Storage Class A simple class Constructor Destructor.
Lecture 02 File and File system. Topics Describe the layout of a Linux file system Display and set paths Describe the most important files, including.
Announcements Assignment 1 due Wednesday at 11:59PM Quiz 1 on Thursday 1.
Week 4 - Monday.  What did we talk about last time?  Precedence  Selection statements  Loops  Lab 3.
Week 4 - Friday.  What did we talk about last time?  Some extra systems programming stuff  Scope.
Revisiting building. Preprocessing + Compiling 2 Creates an object file for each code file (.c ->.o) Each.o file contains code of the functions and structs.
ORAFACT The Linux File System. ORAFACT Filesystem Support Support for dozens of filesystem types including: Minix, ext2, MS-DOS, UMSDOS, VFAT, NTFS, NFS,
Company LOGO Security in Linux PhiHDN - VuongNQ. Contents Introduction 1 Fundamental Concepts 2 Security System Calls in Linux 3 Implementation of Security.
Week 4 - Friday CS222.
Department of Computer Engineering
Week 4 - Wednesday CS222.
Welcome to Linux Chap#1 Hanin Abdulrahman.
Friend Class Friend Class A friend class can access private and protected members of other class in which it is declared as friend. It is sometimes useful.
Avani R.Vasant V.V.P. Engineering College
C151 Multi-User Operating Systems
Week 5 - Monday CS222.
UNIX System Overview.
Using the Terminal Lab 3+.
An Introduction to UNIX System --- Cosc513 Presentation
Chapter 2: System Structures
Unix : Introduction and Commands
Chapter 7 File and file System structure
Welcome to Linux Chap#1 Hanin Abdulrahman.
Welcome to Linux Chap#1.
Chapter 4: The Linux Filesystem
The Three Attributes of an Identifier
SPL – PS1 Introduction to C++.
Presentation transcript:

Week 4 - Wednesday

 What did we talk about last time?  Evil: break, continue, goto  System calls  Functions

Unix is user-friendly. It just isn't promiscuous about which users it's friendly with. Steven King (Not Stephen King) Unix is user-friendly. It just isn't promiscuous about which users it's friendly with. Steven King (Not Stephen King)

 When people say OS, they might mean:  The whole thing, including GUI managers, utilities, command line tools, editors and so on  Only the central software that manages and allocates resources like the CPU, RAM, and devices  For clarity, people use the term kernel for the second meaning  Modern CPUs often operate in kernel mode and user mode  Certain kinds of hardware access or other instructions can only be executed in kernel mode

 Manages processes  Creating  Killing  Scheduling  Manages memory  Usually including extensive virtual memory systems  File system activities (creation, deletion, reading, writing, etc.)  Access to hardware devices  Networking  Provides a set of system calls that allow processes to use these facilities

 A shell is a program written to take commands and execute them  Sometimes called a command interpreter  This is the program that manages input and output redirection  By default, one of the shells is your login shell, the one that automatically pops up when you log in (or open a terminal)  It's a program like any other and people have written different ones with features they like:  sh The original Bourne shell  csh C shell  ksh Korn shell  bash Bourne again shell, the standard shell on Linux

 On Linux, every user has a unique login name (user name) and a corresponding numerical ID (UID)  A file ( /etc/passwd ) contains the following for all users:  Group ID: first group of which the user is a member  Home directory: starting directory when the user logs in  Login shell  Groups of users exist for administrative purposes and are defined in the /etc/group file

 The superuser account has complete control over everything  This account is allowed to do anything, access any file  On Unix systems, the superuser account is usually called root  If you are a system administrator, it is recommended that you do not stay logged in as root  If you ever get a virus, it can destroy everything  Instead, administrators should log in to a normal account and periodically issue commands with elevated permission (often by using sudo )

 In Windows, each drive has its own directory hierarchy  C: etc.  In Linux, the top of the file system is the root directory /  Everything (including drives, usually mounted in /mnt ) is under the top directory  /bin is for programs  /etc is for configuration  /usr is for user programs  /boot is for boot information  /dev is for devices  /home is for user home directories

 There are regular files in Linux which you can further break down into data files and executables (although Linux treats them the same)  A directory is a special kind of file that lists other files  Links in Linux are kind of like shortcuts in Windows  There are hard links and soft links (or symbolic links)  File names can be up to 255 characters long  Can contain any ASCII characters except / and the null character \0  For readability and compatibility, they should only use letters, digits, the hyphen, underscore, and dot  Pathnames describe a location of a file  They can start with / making them absolute paths  Or they are relative paths with respect to the current working directory

 Every file has a UID and GID specifying the user who owns the file and the group the file belongs to  For each file, permissions are set that specify:  Whether the owner can read, write, or execute it  Whether other members of the group can read, write, or execute it  Whether anyone else on the system can read, write, or execute it  The chmod command changes these settings ( u is for owner, g is for group, and o is everyone else)

 All I/O operations in Linux are treated like file I/O  Printing to the screen is writing to a special file called stdout  Reading from the keyboard is reading from a special file called stdin  When we get the basic functions needed to open, read, and write files, we'll be able to do almost any kind of I/O

 A process is a program that is currently executing  In memory, processes have the following segments:  TextThe executable code  DataStatic variables  HeapDynamically allocated variables  StackArea that grows and shrinks with function calls  A segmentation fault is when your code tries to access a segment it's not supposed to  A process generally executes with the same privileges as the user who started it

 Functions without return types  Functions with return types but no return statements  Functions that take arbitrary parameters in

 The scope of a name is the part of the program where that name is visible  In Java, scope could get complex  Local variables, class variables, member variables,  Inner classes  Static vs. non-static  Visibility issues with public, private, protected, and default  C is simpler  Local variables  Global variables

 Local variables and function arguments are in scope for the life of the function call  They are also called automatic variables  They come into existence on the stack on a function call  Then disappear when the function returns  Local variables can hide global variables

 Variables declared outside of any function are global variables  They exist for the life of the program  You can keep data inside global variables between function calls  They are similar to static members in Java int value; void change() { value = 7; } int main() { value = 5; change(); printf("Value: %d\n", value); return 0; } int value; void change() { value = 7; } int main() { value = 5; change(); printf("Value: %d\n", value); return 0; }

 Global variables should rarely be used  Multiple functions can write to them, allowing inconsistent values  Local variables can hide global variables, leading programmers to think they are changing a variable other than the one they are  Code is much easier to understand if it is based on input values going into a function and output values getting returned

 If there are multiple variables with the same name, the one declared in the current block will be used  If there is no such variable declared in the current block, the compiler will look outward one block at a time until it finds it  Multiple variables can have the same name if they are declared at different scope levels  When an inner variable is used instead of an outer variable with the same name, it hides or shadows the outer variable  Global variables are used only when nothing else matches  Minimize variable hiding to avoid confusion

 What if you want to use a global variable declared in another file?  No problem, just put extern before the variable declaration in your file  There should only be one true declaration, but there can be many extern declarations referencing it  Function prototypes are implicitly extern int count; extern int count; file1.c file2.c file3.c program.c

 The static keyword causes confusion in Java because it means a couple of different (but related) things  In C, the static keyword is used differently, but also for two confusing things  Global static declarations  Local static declarations

 When the static modifier is applied to a global variable, that variable cannot be accessed in other files  A global static variable cannot be referred to as an extern in some other file  If multiple files use the same global variable, each variable must be static or an extern referring to a single real variable  Otherwise, the linker will complain that it's got variables with the same name

 You can also declare a static variable local to a function  These variables exist for the lifetime of the program, but are only visible inside the method  Some people use these for bizarre tricks in recursive functions  Try not to use them!  Like all global variables, they make code harder to reason about  They are not thread safe

#include void unexpected() { static int count = 0; count++; printf("Count: %d", count); } int main() { unexpected(); //Count: 1 unexpected(); //Count: 2 unexpected(); //Count: 3 return 0; } #include void unexpected() { static int count = 0; count++; printf("Count: %d", count); } int main() { unexpected(); //Count: 1 unexpected(); //Count: 2 unexpected(); //Count: 3 return 0; }

 You can also use the register keyword when declaring a local variable  It is a sign to the compiler that you think this variable will be used a lot and should be kept in a register  It's only a suggestion  You can not use the reference operator (which we haven't talked about yet) to retrieve the address of a register variable  Modern compilers are better at register allocation than humans usually are register int value;

 All real programs are written in multiple files  To compile such files, do the following  Create a header file (with a.h extension) for every file that contains prototypes for functions you're going to use in other files  #include those header files in every file that uses them  When you run gcc, put all the.c files needed on the line at the same time

 Your main() function and core program is in a file called program.c  You have files called networking.c and graphics.c that have networking and graphics functions that your program uses  You should have headers called networking.h and graphics.h (names don't have to match, but it is better if they do)  At the top of program.c should be:  To run gcc you type: #include "networking.h" #include "graphics.h" #include "networking.h" #include "graphics.h" gcc program.c networking.c graphics.c -o program

 You can compile a file into object code without linking it into an executable  Produces a.o file  That way, you can compile all the pieces separately and then link them later  This can be more efficient if you are updating some of the code but not all of it  To compile but not link, use gcc -c  We could compile the previous example as follows gcc –c program.c gcc –c networking.c gcc –c graphics.c gcc program.o networking.o graphics.o -o program gcc –c program.c gcc –c networking.c gcc –c graphics.c gcc program.o networking.o graphics.o -o program

 Now that we're talking about compiling multiple files, a makefile really makes (ha, ha) sense all: program program: program.o networking.o graphics.o gcc program.o networking.o graphics.o -o program program.o: program.c networking.h graphics.h gcc –c program.c networking.o: networking.c gcc –c networking.c graphics.o: graphics.c gcc –c graphics.c clean: rm -f *.o program all: program program: program.o networking.o graphics.o gcc program.o networking.o graphics.o -o program program.o: program.c networking.h graphics.h gcc –c program.c networking.o: networking.c gcc –c networking.c graphics.o: graphics.c gcc –c graphics.c clean: rm -f *.o program

 Processes  Lab 4

 Read LPI chapter 6  Keep working on Project 2