Unformatted text preview:

The Tempo Operating System Part 5 System Calls Overview Last edited 10 1 2007 System Call Documentation System calls for Tempo are documented in the file doc tempo 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 1 Documentation for other systems For UNIX system calls are described in section two of the manual pages For example the command man 2 fork describes the fork system call Microsoft Windows system service descriptions can be found on MSDN msdn microsoft com Once there select Library from the top tabs then Win32 and COM Development and System Services from the left panel Return Values Tempo s system calls return NOERROR 0 indicating that the call was successfully completed or A negative value indicating an exceptional condition e g 1001 to indicate that an operation was attempted on a non existent message queue or 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 2 System Call Categories System calls may be grouped into several categories Process functions e g newproca kill Time functions e g sleep and time Memory management functions e g brk 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 Additional Categories Other operating systems may provide system calls in additional categories Most notable among these are Network and protocol related functions e g socket Window related functions e g CreateWindow Graphics multimedia font management functions Event management e g in Windows GetMessage Asynchronous signals as in UNIX sigaction kill 3 Process 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 Process 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 priority Observe that priority based scheduling can be used with run to completion or round robin scheduling as in Tempo 4 Process 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 root is the name of the function with which execution will begin prio is the initial priority for the new process stksize is the number of pages for the stack 0 means 1 Tempo newproca pid t newproca int root int char int prio unsigned stksize unsigned nargs unsigned char args root prio stksize as for newproc nargs is the number of command line arguments for the new process args points to an array of nargs null terminated character strings each of which contains one command line argument Note that this call actually creates an object that should more appropriately be called a thread since it shares the same address space as the kernel and other threads That is the process created by newproca can access the address space of other processes created using newproca 5 Tempo getpid exit getpstate pid t getpid Returns the process ID of the calling process void exit int status Terminates the calling process and provides that status be returned to any processes waiting for this process to terminate int getpstate pid t proc 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 Tempo kill waitpid int kill pid t proc Terminates process proc and returns any resources it owns A process may terminate itself Note that this is not the same as the UNIX kill system call int waitpid pid t proc int exitstatus int timeout Waits for process with pid proc to terminate Then returns that process exit status to exitstatus timeout indicates how long waitpid should wait INFINITE 1 means wait forever 0 means never wait inappropriate with waitpid 0 means a wait for that many milliseconds 6 Tempo quit getprio setprio void quit char msg Shuts down the system and display the string pointed to by msg if it is not NULL This should not normally be used by user processes int getprio void Returns the priority of the currently running process int setprio int newprio Sets the priority of the currently running process This could result in a different process obtaining control of the CPU if the new priority is less than that of another ready process Tempo yield setquantum int yield void Yields the CPU to any other ready process Note this could not be a higher priority process as it would already be running Likewise it could not be a lower priority process as allowing it to run would violate the priority principle a highest priority ready process is always running int setquantum unsigned int nquantum 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 nquantum clock ticks before being preempted by another ready process at the same priority The call returns the previous quantum setting 7 Tempo getquantum unsigned int getquantum void Returns the current quantum size setting for the system Time 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 8 Windows 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


View Full Document

UNO CSCI 8530 - System Calls Overview

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 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?