DOC PREVIEW
UNO CSCI 8530 - System Calls Overview

This preview shows page 1-2-3 out of 9 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 9 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 9 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 9 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 9 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

11The Tempo-vm Operating SystemPart 5System Calls – Overview2System Call Documentation• System calls for Tempo are documented in the file doc/tempo32.txt (but beware – it is continually under modification!)• For each call, the file contains a prototype declaration indicating each of the parameters, a textual description of the effect of the system call, and indication of the values that might be returned (indicating success or failure).3Return Values• System calls return:– NOERROR (0) indicating that the call was successfully completed– A negative value indicating an exceptional condition (e.g. –1001 to indicate that an operation was attempted on a non-existent message queue)– A positive value conveying a result (e.g. read and write return the number of bytes processed).• Error codes are symbolically defined in the file “h/syserrs.h”4System Call Categories• System calls can be grouped into several categories:– Process functions (e.g. newproca, kill)– Time functions (e.g. sleep and time)– Memory management functions (in infancy)– Semaphore functions (e.g. up and down)– Interprocess communication functions (e.g. send, receive)– Low-level I/O functions (console, keyboard, disk)– Filesystem and higher-level I/O functions (open, read)– Information functions (getsysparm)5Additional Categories• Other operating systems may provide system calls in additional categories. Most notable among these are:– Network and protocol-related functions– Graphic and window-related functions, including font management– Event management (e.g. in Windows)– Asynchronous signals (as in UNIX)6Process Management• Most modern systems have facilities for process management; many also support threads (kernel and/or user threads). Examples:– Windows: CreateProcess, CreateThread, WaitForSingleObject– UNIX/Linux: fork, pthread_create, clone, wait/waitpid• Although these calls vary from system to system, the concept of a “process” is consistently present.27Process Scheduling• Process scheduling is a “rich” topic, and there are numerous variations.• The most popular scheduling techniques include:– priority-based scheduling: higher priority tasks run before lower priority tasks– run-to-completion scheduling: a process runs until it blocks, terminates, or voluntarily yields the processor– round-robin scheduling: each process runs for at most a ‘quantum’ of time before being forced to yield to another ready process at the same priority8Process Creation• Currently, the primary system call used in Tempo to create processes is ‘newproca’. The function ‘newproc’ is a shorthand version that calls newproca with some default parameters.pid_t newproc (int (*root)(void), int prio, unsigned stksize)•rootis the name of the function with which execution will begin•priois the initial priority for the new process• stksizeis the number of pages for the stack (0 means 1)9Tempo: newproca•root, prio, stksize as for newproc•nargsis the number of “command line” arguments for the new process•argspoints to an array of nargs null-terminated character strings, each of which contains one command-line argument.pid_t newproca (int (*root)(int,char **), int prio,unsigned stksize, unsigned nargs, unsigned char **args)10Tempo: getpid, exit, getpstate• Returns the process ID of the calling process.pid_t getpid ()• Terminates the calling process, and provides that statusbe returned to any processes waiting for this process to terminate.void exit (int status)• Returns the current status of the process with pid proc. The status of the calling process is 2 (meaning it’s running); other values defined in file “h/sysparm.h”int getpstate (pid_t proc)11Tempo: kill, waitpid• Terminates process proc and returns any resources it owns. A process may terminate itself. Note that this is notthe same as the UNIX kill system call.int kill (pid_t proc)• Waits for process with pid proc to terminate.• Then returns that process’ exit status to exitstatus.• timeoutindicates how long waitpid should wait:– INFINITE (-1) means wait forever– 0 means never wait (inappropriate with waitpid)– > 0 means a wait for that many clock ticksint waitpid (pid_t proc, int *exitstatus, int timeout)12Tempo: quit, getprio, setprio• Shuts down the system and display the string pointed to by msgif it is not NULL. This should not normally be used by user processes.void quit (char *msg)• Returns the priority of the currently-running process.int getprio (void)• Sets the priority of the currently-running process.int setprio (int newprio)313Tempo: yield, setquantum• Yields the CPU to the process at the head of the ready queue with the same priority as the current process.int yield (void)• Sets the quantum size (in clock ticks) to nquantum. If this is 0, the system uses “run to completion” scheduling. Otherwise each process is allowed to run for at most nquantumclock ticks before being preempted by another ready process at the same priority.int setquantum (unsigned int nquantum)14Tempo: getquantum• Returns the current quantum size setting for the system.unsigned int getquantum (void)15Time Functions• Many systems have calls that deal with time in one way or another. The fundamental calls deal with several “types”of time:– the current “wall clock” time– CPU time used by a process (either in user mode or in kernel mode)16Windows Examples• GetTickCount(void)– returns the number of milliseconds that have elapsed since the system was started• GetSystemTime(…)– returns the current system date and time• GetSystemTimes(…)– returns total processor idle time, time spent executing kernel code, and time spent executing user-mode code• Sleep(n)– causes a process to sleep for at least n milliseconds17UNIX/Linux Example•time()– returns time of day as seconds past 1/1/1970 at midnight UTC.•times(…)– returns kernel and user-mode time for the current process and all terminated (waited-for) child processes• nanosleep(…)– causes a process to sleep for at least a give time (specified in seconds and nanoseconds)18Tempo: time, sleep• Returns number of clock ticks since the system was started.unsigned int time (void)• Causes the current process to sleep (block) for at least nticksclock ticks.int sleep (unsigned int nticks)419Tempo: setxlimit, getxlimit• Primarily for debugging purposes, set the maximum execution time


View Full Document

UNO CSCI 8530 - System Calls Overview

Download System Calls Overview
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 Overview 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 Overview 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?