Replication, Load-balancing, and QoS

advertisement
Lecture 2: OS Programming
Interface
T. Yang, CS 170 2015
Operating System Concepts – 8th Edition
Silberschatz, Galvin and Gagne ©2009
What to Learn?

Operating System Services & Interface




System Calls
System utilities
OS Layers
Virtual Machines
A View of Operating System Services
Role of system calls
Compilers
Word Processing
Web Browsers
Email
Databases
Web Servers
Portable OS Library
User
Application / Service
OS
System Call
Interface
System
Portable OS Kernel
Software
Platform support, Device Drivers
Hardware
x86
Ethernet
PowerPC
ARM
PCI
802.11 a/b/g/n SCSI IDE Graphics
Linux Layers
Nachos system Layers
User process
User process
Projects 2&3
Project 11
Thread
Nachos kernel threads
Thread 2
Thread N
Nachos OS modules
(Threads mgm, File System, Code execution/memory mapping,
System calls/Interrupt)
Simulated MIPS Machine
(CPU, Memory, Disk, Console)
Base Operating System
(Linux for our class)
OS UI: Shell Command Interpreter
OS User Interface: GUI
Programming API – OS System Call
Standard C Library Example

C program invoking printf() library call,
which calls write() system call
User mode
Kernel mode
System Calls


System calls: Programming interface to the
services provided by the OS
Mostly accessed by programs via a highlevel Application Program Interface
(API) rather than direct system call use

Three most common APIs are




Win32 API for Windows,
POSIX API for POSIX-based systems (including
virtually all versions of UNIX, Linux, and Mac OS X),
and
Java API for the Java virtual machine (JVM)
Why use APIs rather than system calls?
System Calls


System calls: Programming interface to the
services provided by the OS
Mostly accessed by programs via a highlevel Application Program Interface
(API) rather than direct system call use

Three most common APIs are




Win32 API for Windows,
POSIX API for POSIX-based systems (including
virtually all versions of UNIX, Linux, and Mac OS X),
and
Java API for the Java virtual machine (JVM)
Why use APIs rather than system calls?
Portability. Simplicity.
Types of System Calls






Process control
File management
Device management
Information maintenance
Communications
Protection
Examples of Windows and
Unix System Calls
Transition from User to Kernel Mode
I/O & Storage Layers
Application / Service
High Level I/O
Low Level I/O
Syscall
File System
I/O Driver
streams
handles
registers
descriptors
Commands and Data Transfers
Disks, Flash, Controllers, DMA
Unix I/O Calls

fileHandle




= open(pathName, flags)
A file handle (called file descriptor in Unix) is a
small integer, pointing to a meta data structure
about this file.
Pathname: a name in the file system.
Flags: read only, read/write, append etc…
errorCode = close(fileHandle)

Kernel will free the data structures associated
Unix I/O Calls

byteCount = read(fileHandle, buf, count)




Read at most count bytes from the device and put
them in the byte buffer buf.
Kernel can give the process fewer bytes, user
process must check the byteCount to see how
many were actually returned.
A negative byteCount signals an error (value is the
error type)
byteCount = write(fileHandle, buf, count)



Write at most count bytes from the buffer buf
Actual number written returned in byteCount
A negative byteCount signals an error
Copy file1 to file2
#command syntax: copy file1 file2
#include <stdio.h>
#include <fcntl.h>
#define BUF_SIZE 8192
void main(int argc, char* argv[]) {
int input_fd, output_fd;
int ret_in, ret_out;
char buffer[BUF_SIZE];
/* Create input file descriptor */
input_fd = open (argv [1], O_RDONLY);
if (input_fd == -1) {
printf ("Error in openning the input file\n"); return;
}
19
copy file1 file2
/* Create output file descriptor */
output_fd = open(argv[2], O_WRONLY | O_CREAT, 0644);
if(output_fd == -1){
printf ("Error in openning the output file\n"); return;
}
/* Copy process */
while((ret_in = read (input_fd, &buffer, BUF_SIZE)) > 0){
ret_out = write (output_fd, &buffer, ret_in);
if(ret_out != ret_in){ /* Write error */
printf("Error in writing\n");
}
}
close (input_fd); close (output_fd);
}
20
Shell

A shell is a job control system



Proj 0
Lets user execute system utilities/applications
Windows, MacOS, Linux all have shells
Typical format:



cmd arg1 arg2 ... argn
i/o redirection <, >
filters & pipes
 ls | more
System Programs/Utilities

Categories of System programs/utilities








Process status and management
File /directory manipulation
File modification and text processing
Programming language support (compilers)
Program loading and execution
Communications
Application programs
Most users’ view of the operation system is
defined by system programs, not the
actual system calls
Linux Utility Programs
OS Design & Implementation

Start by defining goals and specifications

Affected by
 Choice of hardware
 User goals –


convenient to use, easy to learn,
reliable, safe, and fast
System goals –

easy to design, implement, and
maintain, as well as flexible, reliable,
error-free, and efficient
OS Design Principles

Separate policy (what to do) and
mechanism (how to do)




Why?
Maximize flexibility
Layered structure
Modular
Monolithic kernel vs. Microkernel
Layered Approach

The operating system is divided into a
number of layers (levels), each built on top
of lower layers. The bottom layer (layer 0),
is the hardware; the highest (layer N) is the
user interface.
MS-DOS: Simple Layer Structure

written to provide the most functionality in
the least space
Traditional UNIX System Structure
Modular approach




Object-oriented
Each core component is separate
Each talks to the others over known interfaces
Each is loadable as needed within the kernel
Monolithic Kernel vs. Microkernel
30
Microkernel System Structure




Moves as much from the kernel into “user” space
Communication takes place between user modules using
message passing
Benefits:
 Easier to extend a microkernel
 Easier to port the operating system to new architectures
 More reliable (less code is running in kernel mode)
 More secure
Weakness:
 Performance overhead of user space to kernel space
communication
Mac OS X Structure
Virtual Machines



A virtual machine takes the layered
approach
A virtual machine provides an interface
identical to the underlying bare
hardware.
The host creates the illusion that each
guest has its own processor and
virtual memory/storage.
Virtual Machines (Cont.)
(a) Non-virtual machine (b) virtual machine
VMware Architecture
The Java Virtual Machine
New OS Interface for Applications
Google Android
Microsoft
Windows
Phone 7
Apple iOS
Application Store
Android Market
App
Marketplace
AppStore
User Interface
Java Application
Framework
Browser
3D Graphics
Cocoa
Webkit
Silverlight
Internet
Explorer
OpenGL
DirectX
OpenGL
Main programming
language
Java
C#
Objective-C
Virtual machine
CLR
None
Dalvik VM
Webkit
Android (Linux-based)
Apple iOS
Unix-based
What we have learned?

Operating System Services & Interface



System Calls
System utilities
OS Layers and Virtual Machines: Discuss later
Role of system calls and utilities
Compilers
Word Processing
Web Browsers
Email
Databases
Web Servers
System utilities
Portable OS Library
User
Application / Service
OS
System Call
Interface
System
Portable OS Kernel
Software
Platform support, Device Drivers
Hardware
x86
Ethernet
PowerPC
ARM
PCI
802.11 a/b/g/n SCSI IDE Graphics
Download