DOC PREVIEW
UNO CSCI 8530 - History and Concepts

This preview shows page 1 out of 4 pages.

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

Unformatted text preview:

11The TempoOperating SystemPart 1History and Concepts2The Origin of TempoInitial definition of system calls and implementation done for a textbook:“An Introduction to Real-Time Systems: From Design to Networking with C/C++” by Buhr and Bailey, Prentice-Hall, 1999.Initial implementation was 16-bit version, used “skinny” C++, and used MS-DOS for loading, I/O and first-level interrupt handlers.3UNO Tempo Development, 2000System calls defined more symmetrically with respect to timeoutsKeyboard input addedSystem rewritten in C & assembler (MS / Intel syntax), and renamed “Tempo/C”Examples written to demonstrate system callsSystem and examples distributed with build scripts and MS 16-bit compiler, assembler, and linker4UNO Tempo Development, Spring/Summer 2000System rewritten and renamed Tempo/32for development in Linux & Cygwin environmentsfor execution as a 32-bit standalone systemAddeduse of kernel/user modesimple use of IA-32 paging hardwarestandalone bootstrap loadermakefiles and scripts for use with Bochs emulator5UNO Tempo Development, Fall 2005Simple disk I/O and initial filesystem code addedExisting system calls restructuredNew system calls added for POSIX-like I/O, parameter passing to new processes, killing processes, waiting on process terminationCode reorganized for easier understanding and modification6UNO Tempo Development, Spring 2006Filesystem code was enhanced, and a simple shell (command line interpreter) was written.Assembler and “C-minus” compiler from another project ported to produce executable files for Tempo.A new “run” system call added to load C-minus and elf executables.Storage is now dynamically allocated (in pages) to processes (paged virtual memory).27UNO Tempo Development, Summer/Fall 2006Additional work done on executables loaded from the filesystem (the “run” system call).Dynamic expansion of the stack implemented (based on experimental interpretation of the reason for page faults).Additional work done on system configuration to normalize development on Linux and Cygwin.8Current Development ActivityThe filesystem block size will be changed from 512 bytes to 4K bytes.Additional development tools are being written to actually run in the Tempo system.Ethernet device drivers are being written (one is operational, another is close), and the XINU TCP/IP implementation will be ported soon.A FAT filesystem and floppy disk driver will be added to the standard I/O facilities.Next steps… ?9What is Tempo?It’s an IA-32 (Intel Architecture – 32 bits) operating system.Primarily designed for pedagogic purposesCan be booted from a floppy disk or, more conveniently, used with the Bochs IA-32 emulator software.Most of the source code is in C, with a reasonable amount in assembler.10Why Study Tempo?To better understand the environment an operating system provides for application exxecutionTo permit comparison with existing commercial operating systemsTo gain direct experience with concurrent programmingTo gain a better understanding of operating system concepts, design, and implementation issues11Major Characteristics of TempoStand-alone (not a "toy") operating systemNon-preemptible monolithic kernelProcesses (really threads) scheduled using priorities and either "run to completion" or round-robin schedulingSemaphores, signals and message passing for IPC; timeouts for most blocking callsProtected-mode execution for processesI/O calls similar to POSIX calls12Stand-alone SystemTempo is a “stand-alone” system, which means it can (and does) boot and run on a bare system (with only a BIOS).It does not depend on other software when it is executed.This is good, because it causes us to provide all necessary components.It's also somewhat problematic, since if we want a feature or function, we must build it ourselves.313Non-preemptible Monolitic KernelKernel functions (e.g. system calls) execute with interrupts disabled except when it is necessary for a process to block.The kernel and some applications are built as a single executable image.A simple filesystem and support for loading and executing ELF-format executables is used for executables that are not intended to be “permanent”.14Priority SchedulingEach process is assigned a priority when it is created; priorities can be changed (by the process) during execution.Processes may be scheduled using “run to completion” or round-robin scheduling.Golden rule of scheduling: at any time, (one of) the highest priority ready process(es) will be executing.15IPC (Interprocess Communication)Traditional counting semaphores are provided.Each process has several numbered maskable queues on which it may receive signalsor messages.Signals are synchronous (not like UNIX) and anonymous, and have no data components.Messages communicate a 32-bit value, and identify the sender and an optional acknowledgement queue number.16Protected-mode ExecutionProcesses run in protected mode except when executing a system call.The kernel normally runs in privileged mode.The Intel IA-32 architecture provides 4 privilege levels, but only two (3 and 0) are used (like Linux, Windows, etc.).In user mode, processes cannot execute privileged instructions (like I/O).17POSIX-like I/O FacilitiesI/O is done by user processes using facilities that look a lot like POSIX. E.g.open(path,mode) — open an existing filecreat(path) — create or truncate a filemkdir(path) — create a directory close(fd) — close a fileread(fd,buffer,size) — read a filewrite(fd,buffer,size) — write a fileseek(fd,offset,origin)— set I/O positionremove(path) — delete a file or directory18Tempo DevelopmentTempo development is primarily done using GNU tools:gcc — C compilerld — linkermake — build utilityobjcopy — copy and translate object filesdd — raw file copy (for disk images)Additional tools are provided for filesystem image creation, maintenance, and checking.419Development EnvironmentsCygwin (www.cygwin.com) is a Linux-like environment for Windows. It providesa DLL which maps Linux system calls to the Windows operating systema collection of tools which provide Linux "look and feel" (including gcc, ld, etc.)Simple installation (load from class web page).Tempo development can obviously also be done in a Linux environment.20Execution EnvironmentsTempo systems can be copied to a floppy disk and booted on a standard PC.This approach is slow, however, since each change to the system requires creating a new floppy and rebooting the


View Full Document

UNO CSCI 8530 - History and Concepts

Download History and Concepts
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 History and Concepts 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 History and Concepts 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?