1 / 106

Chap 7: Runtime Organization

Chap 7: Runtime Organization. Prof. Steven A. Demurjian Computer Science & Engineering Department The University of Connecticut 371 Fairfield Way, Unit 2155 Storrs, CT 06269-3155. steve@engr.uconn.edu http://www.engr.uconn.edu/~steve (860) 486 - 4818. Material for course thanks to:

tekli
Download Presentation

Chap 7: Runtime Organization

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chap 7: Runtime Organization Prof. Steven A. Demurjian Computer Science & Engineering Department The University of Connecticut 371 Fairfield Way, Unit 2155 Storrs, CT 06269-3155 steve@engr.uconn.edu http://www.engr.uconn.edu/~steve (860) 486 - 4818 Material for course thanks to: Laurent Michel Aggelos Kiayias Robert LeBarre

  2. Overview • Runtime Environment Focuses on the wayt hat a Program is Managed/Controlled During its Execution • We’ll Focus on • Basic Definitions and Concepts • A First Look at Activation Records • Memory Allocation Strategies • Revisiting Activation Records • Impact of Parameter Passing Mechanisms • Data Layout and Scoping of Declarations • Memory Manager and Compilation Process • Concluding Remarks/Looking Ahead

  3. Basic Definitions and Concepts • Procedure Definition • Declaration that has a Name and has a Body • If Returns a value, then Function • Procedure Definition Contains a Sequence of Identifiers Called the Formal Parameters • Procedure Call Contains a List of Arguments passed to the Procedure or the Actual Parameters • Information in Program can be Characterized • Environment: Maps Name to Storage Loc (l-value) • Store: Maps Location to Value it Contains (l-value to an r-value) Environment State Compile Time Run Time Name Storage Value

  4. Program Organization • Purpose • Define what constitutes a Program • Review overall OS Structure • Examine Process Structure • Present and Understand Memory Management issues • Remember, a Compiler Must: • Target a Specific Operating System • Interact within that Operating System • Provide Access at Machine Level to Operating System Components

  5. The Basic Abstractions • Processes • Unit of Computation • Program/Application Composed of One or More Interacting Processes • Processes Interact with and Utilize Resources • Files • Unit of Information Storage • Classic, Default Utilized to Support Programs • Read, Write, and Transfer via Files • Other Resources • CPU, Printer, Memory, etc. • Network, Display, etc.

  6. Program, Processes & Resources Resources Processes Operating System Data CPU Device Device Program Device Memory Device Hardware

  7. What are Executables? • Executable • File Containing Machine Code • Examples • A bash script, a perl script, a ‘compiled’ java program, a compiled C program, ... • Java Bytecode and JVM

  8. Java Virtual Machine (JVM) • JVM is a Platform Specific Program which Interprets and Executes Java Code • JVM Interprets and Executes Bytecodes • JVM Targeted as Small/Efficient - Embeddable within Consumer Electronics • JVM Stack Based Machine - Simulates Real Processor CA FE BA BE 00 03 00 2D 00 3E 08 00 3B 08 00 01 08 00 20 08

  9. Java Visualization

  10. What are Executables? • Native Executable • File Containing Machine Code that the CPU understands without any intervening “layers” of abstractions • Examples • A compiled C program • A Java program compiled natively with Gnu Compiler for Java

  11. From Code to Loaded Program ORIGINAL SOURCE static int gVar; . . . int proc_a (int arg){ . . . gVar = 7; put_record(gVar); . . . } RELOCATABLE OBJECT MODULE 0000 . . . . . . 0008 entry proc_a . . . 0036 [Space for gVar] . . . 0220 load =7, R1 0224 store R1, 0036 0228 push 0036 0232 call ‘put_record’ . . . 0400 External Reference Table 0404 ‘put_record’ 0232 . . . 0500 External Definition Table 0540 ‘proc_a’ 0008 0600 (optional symbol table) 0799 (last location in module)

  12. From Code to Loaded Program THE ABSOLUTE PROGRAM 0000 (Other Modules) . . . 1008 entry proc_a . . . 1036 [Space for gVar] . . . 1220 load =7, R1 1224 store R1, 1036 1228 push 1036 1232 call 2334 1399 (end of proc_a) . . . (Other Modules) 2334 entry put_record . . . 2670 (opt. symbol table) 2999 (last loc. in module) PROGRAM AT LOCATION 4000 0000 (Other Processes) 4000 (Other Modules) . . . 5008 entry proc_a . . . 5036 [Space for gVar] . . . 5220 load =7, R1 5224 store R1, 5036 5228 push 5036 5232 call 6334 5399 (end of proc_a) . . . (Other Modules) 6334 entry put_record . . . 6670 (opt. symbol table) 6999 (last loc. in module) 7000 (Other Processes)

  13. What is a Process? • An Executable with its Execution Context and State • Consists of: • Executable (.exe, a.out, etc.) • Loaded into main memory • All of the resources currently committed • With the value of all the CPU registers • Computers can Run Multiple Processes at Same Time

  14. What is a Process? • Sequential Program for Execution • Object Program (a.out) to Execute • Data on Which Program will Execute • Resources Required During Execution • Status of the Process’ Execution (ps -aux) • Program is “Static Source Code/Executable Statements” which Lacks Data Set • Process is “Dynamic Entity Executing on Actual Data Set” • For Example, Multiple Unix Users Can Execute emacs, Latex, vi, grep, at same Time • Shared Program Executable emacs • Dedicated Process for Each User of emacs

  15. A Process Code Data Resources Resources Resources Process Status Abstract Machine Environment (OS)

  16. UNIX Process Resources File Resources Data Text Stack Process Status File UNIX kernel

  17. More on UNIX Processes • Each Process Has its Own Address Space • Subdivided into Text, Data, & Stack Segment • a.Out File Describes the Address Space • OS Creates Descriptor to Manage Process • Process Identifier (PID) is Integer: User Handle for the Process (Descriptor) • Try “ps” and “Ps aux” (Read Man Page) USER PID %CPU %MEM SZ RSS TT S START TIME COMMAND wangz 25150 26.1 15.33048019308 pts/16 O Aug 05 6318:26 /apps/matlab/bin/s manish 7590 25.1 0.821436 964 ? O Jul 22 24628:34 /apps/matlab/bin/s marios 29536 0.6 3.5 5156 4376 pts/6 S 13:22:23 0:24 mailtool steve 29893 0.2 0.8 1080 980 pts/18 S 17:41:11 0:00 -csh root 29905 0.2 0.7 1040 888 pts/18 O 17:41:53 0:00 ps -aux

  18. Multiprogramming • Load and Execute Multiple Programs into Space-Multiplexed Mem. while Time-Multiplexing CPU • Technique for Sharing the CPU Among Runnable Processes • Process May Be Blocked on I/O • What is Deadlock and How can it Occur? • Process May Be Blocked Waiting for Other Resources to Complete • What is Starvation and How is it Prevented? • While One Process is Blocked, Another Should Be Able to Run • Multiprogramming OS Accomplishes CPU Sharing “Automatically”

  19. How Multiprogramming Works Process 1 Process 2 CPU Space-Multiplexed Memory Process 3 Time-Multiplexed Process 4

  20. Batch Processing • Uses Multiprogramming • Job (File of OS Commands) Prepared Offline • Batch of Jobs Given to OS at One Time • OS Processes Jobs One-After-the-Other • No Human-Computer Interaction • OS Optimizes Resource Utilization • Batch Processing (as an Option) Still Used Today • Batch Files in DOS/Unix to Repetitively Execute Same Set of Commands • ASIDE: Using Batch Processing • 1978/79 First Two Computer Courses at BC • Keypunch IBM Cards • Run Batch Job: Return 1-2hrs Later for Output

  21. Timesharing • Uses Multiprogramming • Support Interactive Computing Model (Illusion of Multiple Consoles) • Different Scheduling & Memory Allocation Strategies Than Batch • Tends to Propagate Processes • Considerable Attention to Resource Isolation (Security & Protection) • Tend to Optimize Response Time

  22. How Timesharing Works Terminal Multiplexor VM VM VM Timesharing OS • Timesharing Still Pervasive in Computing • Engineering Network Still Time-Shared in Some Respects • Access to User Files • Email/Web Server • Download Software • Terminals Replaced by Unix Workstations and PCs • Example of Network File System/OS

  23. Personal Computers • CPU Sharing Among One Person’s Processes • Ability of Only One Active Process at One Time • Early Apple/Mac: Only do 1 Action at Time • Same for Win 3.1 and Win 95 • Improved with Win 98 and NT • Today’s Apple and Windows MS – Multi-Process! • Increased Power of Computing for Personal Tasks • Graphics - Two-D, Three-D, Real-Time • Multimedia - CDs and DVDs

  24. Process Control & Real-Time • Computer is Dedicated to a Single Purpose • Classic Embedded System • Must Respond to External Stimuli in Fixed Time • Continuous Media Popularizing Real-time Techniques • An Area of Growing Interest • Embedded Computing Estimated as one of Key Technologies for 21st Century • Pervasiveness: Consumer Products/Electronics • Cars, Refrigerators, Phones, Microwaves, etc. • Elevators, “Smart” Products and Buildings, etc. • Embedded Java • Microsoft CE

  25. Evolution of Modern OS Timesharing Network OS Memory Mgmt PC & Wkstation Client-Server Model Scheduling Protection System Software Protocols Batch Human- Computer Interface Memory Mgmt Real-Time Protection Scheduling Scheduling Files Devices Modern OS Java/JINI/JavaOS

  26. Virtual Address Space • An Abstraction provided by the Operating System • Essentially • A sandbox for the process • Practically • A Contiguous Memory area that • Starts at offset 0 • Ends at offset 232-1 • Entirely devoted to a single process • Is transparently managed by the O.S. • Has a layout imposed by the O.S.

  27. Virtual Memory • Components of Program (Identifiers, Labels, variables, etc.) Define Name Space • Language Translation • Converts Name Space Elements to Virtual Addresses • Binds Symbolic Names to Virtual Addresses • Virtual Memory System • Dynamically Binds Virtual Addresses to Physical Addresses • Defers Binding Decision to During Program Execution • Perform Binding “As Needed”

  28. Names, Virtual Addresses, Physical Addresses Distinguish Between Symbolic Names vs. Virtual Addrs. vs. Physical Addrs. Source Program Absolute Module Executable Image Name Space Virtual Address Space Physical Address Space Compile and Link Tools Yt: Virtual Address Space  Physical Address Space  {}

  29. Traditional Organization Code Area at the bottom Static Data above Constants Static strings Static variables Heap Grows upward Stack Grows downward Lot’s of free VM in between Virtual Address Space 0xffffffff 0x0

  30. OS Conventions • Layout is dictated by the OS • Specifically by the “Loader” • Loader • The OS module responsible for • Allocating a virtual address space • Bringing the content of the executable file into the address space • Bringing any dependent shared library into the address space • Performing any required relocation • Transferring control to the entry point of the program.

  31. Zooming In. • Close look on the code area

  32. Loading • Loader extracts the information from the executable • Executable holds a header with • Offset and size of code (blue area) • Offset of entry point (main) within blue box • Offset and size of constant data (green area) • List of needed shared library (optional) Program Executable:

  33. Loading and Execution • Loader • Grabs file zones and move them in virtual memory • Relocate the code as necessary • Sets up the execution stack • Transfer control to the entry point with a jump • Execution Stack • A memory area at the top of the VM • Grows downward • Grows on demand (with OS collaboration) • Purpose • Automatic storage for local variables

  34. A First Look at Activation Records • Storage Organization for Program Execution • Code Referenced by PC • Global/Local Variables • Static Data Area • Stack Contains • Set of Activation Records • All Active Procedures and Functions • Heap for Dynamic Memory Allocation Code Static Data Stack Heap

  35. A General Activation Record Returned Value Actual Parameters Optional Control Link Optional Access Link Saved Machine Status Local Data Temporaries • To the Calling Procedure • Passed in to Procedure • To Act. Record of Caller • Referenced Non-Local Data • Needed to Restart Caller • Local Variables for Scope • Compiler Generated

  36. An Activation Record in C • Actual Parameters Supplied by Caller • Needed to Restart Caller • Local Variables for Scope • If Callee Calls Another Procedure/Function Etc. Incoming Param 2 Incoming Param 1 Saved State Info Local Variables Temporary Storage Outgoing Parameters

  37. Activation Records • Procedure Activation Represents the Actions that Must Occur when a Caller Invokes a Callee: • Transfer of Actuals into Formals by the Language’s Parameter Passing Mechanism • Modification of Environment and State by Alloc of Memory for Variables that are Local to Callee • Identification of the Control Return Point of Caller After Callee Complets • Every Procedure Activation has Lifetime which is the Sequence of Steps (Code) of Procedure Body of Callee

  38. What are Possible Activations? • Nested • A calls B calls C • Non-Overlapping • A calls B • B calls C • Recursive • A calls itself • Concurrent • A calls B (spawns process) • A calls C (spawns process) • B, C: execute in parallel and compete for Resources

  39. Activation Tree • Graphical Representation of Activations over Time

  40. How is Tree Interpreted? • Each Node is a Specific Procedure Call • Root Node is Start of Program • Parent Node • Flow from Parent to Child • Caller to Callee • Sibling Node • All Nodes to Left have Completed • Parent Comples when All Children Complete • Utilize Control Stack to Represent Current State of an Activation • s, q(1,9), q(1,3), q(2,3) • Where is this on Prior Slide? • Represents “state” at Point in Time

  41. Relationship to Environment and State • Recall: • Assignments Change State • Declarations Change Environment • Differentiation also Possible from Static and Dynamic LevelsProcedure Definition vs. Procedure ActivationName Declaration vs. Name BindingScope of Declaration vs. Lifetime of Binding Environment State Compile Time Run Time Name Storage Value Environment State

  42. Issues Impacting Runtime Environment • Are Procedure/Functions Recursive? • What happens to Values of Local names after the Procedure Activation Completes? • Can a Procedure Refer to Non-Local Names? • What are Parameter Passing Mechanisms? • How are Results Returned from Functions? • Can Proc/Func be Returned as a Result? Passed as Parameters? • Can Programmer Dynamically Allocate Storage? • How is Deallocation Handled? • These are: • Rules of the Game • What Every Software Engineer Should Know!

  43. Memory Allocation Strategies • Details the way that Memory is Managed within OS • Crucial for Activation Records • Different Allocation Strategies Used by Each Area • Static – Compile Time • Stack – Run Time • Sizes of Data Known at Compile Time • Parameters during Calls • Heap – Run Time • Allocate and Deallocate Memory (malloc) • Programmatic Needs Code Static Stack (Automatic) Heap (Dynamic)

  44. Where does memory comes from ? Three pools Static Automatic (Stack) Dynamic Memory Pools Automatic (Stack) Dynamic Static

  45. Static Pool • Content • All the static “strings” that appear in the program • All the static constants used in the program • All the static variables declared in the program • static int • static arrays • static records • static .... • Allocation ? • Well... it is static, i.e., • All the sizes are determined at compile time. • Cannot grow or shrink

  46. Static Allocation • Binding Names to Storage Location at Compile Time • Program and Procedure/Function Variables • Consider C Program: int xyz; char c[20]; int abc () { static int x; . . . { static int y; . . . } . . . } Global vars known at compile time Static means to allocate at compile Data values persist over multiple calls to abc() x, y: retain values in successive calls to abc!

  47. Static Allocation • Static Allocation is Limited and Programming Language Specific • In Pascal, Global Program Variables Only • In C, Global Variables and Specific Static • What are Implications to Compilation Process? • Are these two Programs Same? Why? Different? How? main() { int x[1000000]; . . . } main() { static int x[1000000]; . . . }

  48. Automatic Pool (Stack Allocation) • Content • Local variables • Actuals (arguments to methods/functions/procedures) • Allocation • Automatic when calling a method/function/procedure • Deallocation • Automatic when returning from a method/function/procedure • Management policy • Stack-like

  49. Automatic Pool (Stack Allocation) • Tightly Coupled with Procedure Activation • Parameters, Local Variables, Temporary Variables • Allocated as Each Procedure/Function Called • Stack Expands for Nested (and Recursive) Calls • Two Step Process • Call Sequence: Allocation Activation Record and Enter Data into its Fields • Return Sequence: Restores State of Program to Caller to Continue Execution • What Does Caller vs. Callee Do?

  50. Caller and Callee

More Related