DOC PREVIEW
Princeton COS 217 - System Calls & Stdio

This preview shows page 1-2-3-25-26-27 out of 27 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

System Calls & StdioSlide 2Goals of Today’s ClassSystem CallsCommunicating With the OSMain Categories of System CallsSlide 7Implementing a System CallMain UNIX System Calls for FilesExample: UNIX open() System CallExample: UNIX read() System CallStandard I/O LibrarySlide 13Layers of AbstractionStream AbstractionSequential Access to a StreamExample: Opening a FileExample: Formatted I/OReally Specialized VersionsExample: A Simple getchar()Making getchar() More EfficientBetter getchar() with Buffered I/ODetails of FILE in stdio.h (K&R 8.5)A Funny Thing About Buffered I/OChallenges of WritingSafe-Write CodeSummary of System Calls and Stdio1System Calls & Stdio2•Two processes open the same file•Both keep writing to it•What happens?3Goals of Today’s Class•System callsHow a user process contacts the Operating SystemFor advanced services that may require special privilege•Standard I/O libraryGeneric I/O support for C programsA smart wrapper around I/O-related system callsStream concept, line-by-line input, formatted output, ...•Course wrap-upTimeline for reading and exam periodMain themes of the course4System Calls5Communicating With the OS•Processor modesUser mode: can execute normal instructions and access only user memorySupervisor mode: can also execute privileged instructions & access all memory (e.g., devices)User ProcessOperating Systemsignals systems calls6Main Categories of System Calls•File systemLow-level file I/OE.g., creat, open, read, write, lseek, close•Multi-tasking mechanismsProcess controlE.g., fork, wait, exec, exit, signal, kill•Inter-process communicationE.g., pipe, dup, dup2•Unix has a few hundred system callsSee “man 2 intro” or /usr/include/syscall.h7System Calls•Method for user process to invoke OS services•Called just like a functionEssentially a “protected” function callThat transfers control to the OS and backFile SystemStdio LibraryAppl Progcreat, open, close,read, write, lseekfopen, fclose, printf,fgetc, getchar,…userOS8Implementing a System Call •System calls are often implemented using trapsOS gains control through trapSwitches to supervisor modePerforms the serviceSwitches back to user modeGives control back to usermovl $1, %eaxint $0x80Which call?1: exit2: fork3: read4: write5: open6: close…Trap to the OSSystem-call specific arguments are put in registers9Main UNIX System Calls for Files•Creat: int creat(char *pathname, mode_t mode);Create a new file and assign a file descriptor•Open: int open(char *pathname, int flags, mode_t mode);Open the file pathname and return a file descriptor•Close: int close(int fd);Close a file descriptor fd•Read: int read(int fd, void *buf, int count);Read up to count bytes from fd, into the buffer at buf•Write: int write(int fd, void *buf, int count);Writes up to count bytes into fd, from the buffer at buf•Lseek: int lseek(int fd, int offset, int whence);Assigns the file pointer to a new value by applying an offset10Example: UNIX open() System Call•Converts a path name into a file descriptorint open(const char *pathname, int flags, mode_t mode);•ArgumentsPathname: name of the fileFlags: bit flags for O_RDONLY, O_WRONLY, O_RDWRMode: permissions to set if file must be created•ReturnsInteger file descriptor (or a -1 if an error)•Performs a variety of checksE.g., whether the process is entitled to access the file11Example: UNIX read() System Call•Converts a path name into a file descriptorint read(int fd, void *buf, int count);•ArgumentsFile descriptor: integer descriptor returned by open()Buffer: pointer to memory to store the bytes it readsCount: maximum number of bytes to read•ReturnsNumber of bytes read–Value of 0 if nothing more to read–Value of -1 if an error•Performs a variety of checksWhether file has been opened, whether reading is okay12Standard I/O Library13Standard I/O Library•PortabilityGeneric I/O support for C programsSpecific implementations for various host OSesInvokes the OS-specific system calls for I/O•Abstractions for C programsStreamsLine-by-line inputFormatted output •Additional optimizationsBuffered I/OSafe writingFile SystemStdio LibraryAppl ProguserOS14Layers of AbstractionDiskDriverStorageFile Systemdisk blocksvariable-length segmentshierarchical file systemOperatingSystemStdio LibraryFILE * streamAppl ProgUserprocessint fd15Stream Abstraction•Any source of input or destination for outputE.g., keyboard as input, and screen as outputE.g., files on disk or CD, network ports, printer port, …•Accessed in C programs through file pointersE.g., FILE *fp1, *fp2;E.g., fp1 = fopen(“myfile.txt”, “r”);•Three streams provided by stdio.hStreams stdin, stdout, and stderr–Typically map to keyboard, screen, and screenCan redirect to correspond to other streams–E.g., stdin can be the output of another program–E.g., stdout can be the input to another program16Sequential Access to a Stream•Each stream has an associated file positionStarting at beginning of file (if opened to read or write)Or, starting at end of file (if opened to append)•Read/write operations advance the file positionAllows sequencing through the file in sequential manner•Support for random access to the streamFunctions to learn current position and seek to new onefile file17Example: Opening a File •FILE *fopen(“myfile.txt”, “r”)Open the named file and return a streamIncludes a mode, such as “r” for read or “w” for write•Creates a FILE data structure for the fileFile descriptor, mode, status, buffer, …Assigns fields and returns a pointer•Opens or creates the file, based on the modeWrite (‘w’): create file with default permissionsRead (‘r’): open the file as read-onlyAppend (‘a’): open or create file, and seek to the end18Example: Formatted I/O•int fprintf(fp1, “Number: %d\n”, i)Convert and write output to stream in specified format•int fscanf(fp1, “FooBar: %d”, &i)Read from stream in format and assign converted values•Specialized versionsprintf(…) is just fprintf(stdout, …)scanf(…) is just fscanf(stdin, …)19Really Specialized Versions #include <stdio.h>• int printf(const char *format, ...);• int fprintf(FILE *stream, const char *format, ...);• int sprintf(char


View Full Document

Princeton COS 217 - System Calls & Stdio

Documents in this Course
Summary

Summary

4 pages

Lecture

Lecture

4 pages

Generics

Generics

14 pages

Generics

Generics

16 pages

Lecture

Lecture

20 pages

Debugging

Debugging

35 pages

Types

Types

7 pages

Lecture

Lecture

21 pages

Assembler

Assembler

16 pages

Lecture

Lecture

20 pages

Lecture

Lecture

39 pages

Testing

Testing

44 pages

Pipeline

Pipeline

19 pages

Lecture

Lecture

6 pages

Signals

Signals

67 pages

Building

Building

17 pages

Lecture

Lecture

7 pages

Modules

Modules

12 pages

Generics

Generics

16 pages

Testing

Testing

22 pages

Signals

Signals

34 pages

Lecture

Lecture

19 pages

Load more
Download System Calls & Stdio
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view System Calls & Stdio and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view System Calls & Stdio 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?