0% found this document useful (0 votes)
38 views18 pages

System Call Programming & Debugging: Week 7

This document discusses system calls and kernel vs. user mode in operating systems. It explains that system calls allow user processes to request privileged operations from the kernel, which switches the CPU to kernel mode. Library functions often make system calls indirectly to avoid overhead. Buffered I/O decreases system calls by collecting input/output in buffers. The homework involves rewriting programs to use system calls directly and measuring performance impacts.

Uploaded by

leish
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)
38 views18 pages

System Call Programming & Debugging: Week 7

This document discusses system calls and kernel vs. user mode in operating systems. It explains that system calls allow user processes to request privileged operations from the kernel, which switches the CPU to kernel mode. Library functions often make system calls indirectly to avoid overhead. Buffered I/O decreases system calls by collecting input/output in buffers. The homework involves rewriting programs to use system calls directly and measuring performance impacts.

Uploaded by

leish
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/ 18

System Call Programming &

Debugging
Week 7

Processor Modes
Operating modes that place restrictions on the
type of operations that can be performed by
running processes
User mode: restricted access to system resources
Kernel/Supervisor mode: unrestricted access

System resources?
Memory
I/O Devices
CPU

User Mode vs. Kernel Mode


Hardware contains a mode-bit, e.g. 0 means
kernel mode, 1 means user mode
User mode
CPU restricted to unprivileged instructions and a
specified area of memory

Supervisor/kernel mode
CPU is unrestricted, can use all instructions, access all
areas of memory and take over the CPU anytime

Why Dual-Mode Operation?


System resources are shared among processes
OS must ensure:
Protection
an incorrect/malicious program cannot cause damage
to other processes or the system as a whole

Fairness
Make sure processes have a fair use of devices and the
CPU

How to Achieve Protection and Fairness


Goals:
I/O Protection
Prevent processes from performing illegal I/O operations

Memory Protection
Prevent processes from accessing illegal memory and
modifying kernel code and data structures

CPU Protection
Prevent a process from using the CPU for too long

=> instructions that might affect goals are privileged


and can only be executed by trusted code

Which Code is Trusted?

Only the kernel code is trusted


The kernel is the core of the OS
Interface between h/w and s/w
It controls access to system resources
implements protection mechanisms
Mechanisms cannot be changed through
actions of untrusted software in user space

What About User Processes?


The kernel executes privileged operations on
behalf of untrusted user processes

System Calls
Special type of function that:

Is part of the kernel of the OS


Used by user-level processes to invoke OS functions
Requests a service from the kernel
Changes the CPUs mode from user mode to kernel
mode to enable more capabilities
Verifies that the user should be allowed to do the
requested action and then does the action (kernel
performs the operation on behalf of the user)
Is the only way a user program can perform privileged
operations

Function Call vs. System Call

Caller and callee are in the


same process
Same domain of trust

Control is transferred from


the untrusted user process to
the trusted OS

System Calls
When a system call is made, the program
being executed is interrupted and control is
passed to the kernel
If operation is valid the kernel performs it

System Call Overhead


System calls are expensive and can hurt
performance
The system must do many things
Process is interrupted & computer saves its state
OS takes control of CPU & verifies validity of op.
OS performs requested action
OS restores saved context, switches to user mode
OS gives control of the CPU back to user process

Library Functions
Functions that are a part of standard C library
To avoid system call overhead use equivalent
library functions
getchar, putchar vs. read, write (for standard I/O)
fopen, fclose vs. open, close (for file I/O), etc.

How do these functions perform privileged


operations?
They make system calls

So Whats the Point?


Many library functions
invoke system calls
indirectly
So why use library calls?
Usually equivalent
library functions make
fewer system calls
non-frequent switches
from user mode to
kernel mode => less
overhead

Unbuffered vs. Buffered I/O


Unbuffered
Every byte is read/written by the kernel through a
system call

Buffered
collect as many bytes as possible (in a buffer) and
read more than a single byte (into buffer) at a
time and use one system call for a block of bytes

=> Buffered I/O decreases the number of


read/write system calls and the corresponding
overhead

Buffered I/O
Writing to a file:
fwrite() copies outgoing data to a local buffer as
long as its not full and returns to the caller
immediately
When buffer space is running out, fwrite() calls
the write() system call to flush the buffer to make
room
Reading from a file:
fread() copies requested data from the local buffer
to user's process as long as the buffer contains
enough data
When the buffer is empty, fread() calls the read()
system call to fill the buffer with data and then
copies data from the buffer

Lab 7
Write 2 versions of the cat program
Version 1 (catb.c)
Library functions: getchar and putchar for copying

Version 2 (catu.c)
System calls: read and write for copying

Use strace to compare the number of system


calls issued by each version when
Copying one file to another
Copying a file to your terminal

Use time to measure how much faster one


program is than the other

time and strace


time [options] command [arguments...]
Output:
real 0m4.866s: elapsed time as read from a wall clock
user 0m0.001s: the CPU time used by your process
sys 0m0.021s: the CPU time used by the system on behalf
of your process

strace: intercepts and prints out system calls to


stderr or to an output file
strace o strace_output ./catb < test
strace o strace_output2 ./catu < test

Homework 7
Rewrite srot13 using system calls (srot13u)
srot13u should behave like srot13 except:
If stdin is a regular file, it should initially allocate enough
memory to hold all data in the file all at once
It outputs a line with the number of comparisons
performed

Functions youll need: read, write, and fstat (read the


man pages)
Measure differences in performance between srot13
and srot13u using the time command
Estimate the number of comparisons as a function of
the number of input lines provided to srot13u

You might also like