Advanced Operating Systems Miderm
What are the steps of a Bus 'Fetch'?
- Processor places address on bus - Processor uses control line to signal fetch request - Device senses its address - Device puts specified data on bus - Device uses control line to signal response
What are the different run-levels in Linux?
0 - halt 1 - single user 2 - multiuser 3 - full multiuser 4 - unused 5 - X11 6 - reboot To find the default run level on a system, you can execute the command 'grep initdefault /etc/inittab'.
Describe the calling convention for Intel.
1. A caller pushes the registers on the stack 2. Push the arguments in reverse order 3. Code in the called function pushes the registers 4. Push space for the local variables
Describe the calling convention for ARM.
1. Arguments beyond the first four are passed on the stack 2. To call a function, the caller executes a BL instruction. 3. When the BL executes, the hardware places the return address in register r14. 4. The called function must save registers it will use Key ARM difference: The first four arguments to a function are passed in registers r0 - r3. Other arguments are passed on the stack (like Intel).
What are the basic steps performed during a context switch?
1. Instructions are executed to push contents of the processor's registers on the stack of the process that was running at the start of the context switch. 2. The stack pointer for the current process is saved in the process table entry, and the stack pointer for the new process is loaded. 3. Instructions are executed to reload the processor's registers from values previously saved to the stack of the new process. 4. Return to the function in the new process that called the context switch.
What are the steps for making a system call?
1. Push parameters in reverse order 2. Library call that puts syscall # in CPU register 3. Switch to kernel mode 4. Execute the syscall 5. Return to user mode 6. Return to user program 7. Clean up
What is a Bus?
A bus is a subsystem that is used to connect computer components and transfer data between them. Devices use buses to reply to commands from the processor, transfer data to/from memory, and interrupt when operation completes.
What is the difference between a system call and a function call?
A function call is executing application code. It does not go to the OS, and it stays specifically within the bounds of the process itself. A system call is a way for a process to interact with the OS. The OS is trusted, while the user is not. The OS has super-privileges, and the user does not. Measures are implemented to ensure this is not abused.
When might deferred scheduling be used? Give an example.
A good example of when deferred scheduling might be used is when a semaphore is deleted with multiple processes waiting. All of these processes are moved to the ready state. Deferred scheduling would wait until all of these processes are moved to the ready state before making a decision on execution. This is handled by the resched function.
What is a heavyweight process?
A heavyweight process has at least one thread and a set of resources, including all those things we normally consider to be part of a process: memory, privileges, user identification, execution limits, and so forth. A process may support the execution of multiple threads, but at least one thread must be present. A process without a thread doesn't have any executable component. A heavyweight process is loaded dynamically. A stored file on the disk is loaded by the operating system, an address space is created, and then a process is created to run the address space.
What is a lightweight process?
A lightweight process is another term for a thread.
What is an interrupt mask?
A mechanism that an OS can use to control interrupts. It determines whether interrupts are enabled: assigned a value of 0, the processor ignores all interrupts. Hardware mechanism that controls interrupt recognition. Determines whether interrupt recognition is enabled. Set interrupt mask to prevent interrupt recognition. Clear interrupt mask to allow interrupt recognition.
What is the difference between a program and a process?
A program is a set of functions executed by a single thread of control. A process is a computational abstraction not usually part of the programming language. It is created independent of code that is executed. Key idea: multiple processes can execute the same code concurrently.
What is a CPU register used for?
A register may hold an instruction, a storage address, or any kind of data. It is temporary, high-speed storage.
What is the difference between a mutex and a sempahore?
A semaphore is a variable used to control access to a shared resource within the operating system, and a mutex is simply a lock acquired before entering a critical section and releasing it. A semaphore is better for multiple instances of a resource, but a mutex is better for a single shared resource.
What does it mean when a process is starved?
A starved process is when a low-priority task does not get any hardware resources indefinitely due to streams of high-priority tasks.
What is a thread?
A thread is an abstraction representing a "path of execution" for a processor through a set of instructions. There may be multiple threads operating using the same code at the same time. Threads of execution are known as lightweight processes. This is when an operating system starts a single process, and permits the process to create additional threads that all execute in the same address space.
What kind of scheduling algorithm would you see in a timesharing system?
A timesharing system would use a non-priority based scheduler such as round robin, where every process has equal access to the processor.
What is a shell?
A user interface for the operating system. Gives access to the kernel. Programs are called through the shell (CLI, GUI).
What are abstractions in operating systems?
Abstractions are used to hide the deep hardware architecture from the user. Instead of directly communicating with the CPU (for example) an application can simply call a library function provided by the operating system. It also provides security, making sure only the correct processes and users have access to certain things.
How do applications interact with hardware?
Applications interact with hardware using system calls.
What are the two approaches of message passing in Xinu?
Approach 1 - Message passing is one of many services. Messages are separate from I/O and process synchronization services. Messages implemented using lower-level mechanisms such as semaphores. Approach 2 - The entire operating system is message-based. Messages, not function calls, provide the fundamental building block. Messages, not semaphores, are used for process synchronization.
What process executes the context switch code?
BOTH - the old process executes the first half of the context switch, and is suspended. The new process continues executing where previously suspended, and runs the second half of the context switch.
What is an implicit data structure?
Because a process can only be in one list, we can use the list position to indicate the ID. Implicit data structure can be used to optimize memory footprint and speed by omitting the process ID field from all nodes. To omit the PID, use an array and use the i(th) element of the array for process i. In Xinu, the queue table inserts the i(th) process into the i(th) position of the queue. Let NPROC be the number of processes in the system, and assign process IDs 0 through NPROC - 1. Let i(th) element of the array correspond to process i, for 0 ≤ i < NPROC. Store heads and tails in the same array at positions NPROC and higher. This is feasible because a process can only appear once at any given time and the number of maximum processes is known at the time of compilation.
What is the difference between concurrency and parallelism?
Concurrency is about multiple tasks which start, run, and complete in overlapping time periods, in no specific order. Parallelism is about multiple tasks or subtasks of the same task that literally run at the same time on a hardware with multiple computing resources like multi-core processor.
What is deferred scheduling?
Deferred rescheduling is when interrupts are disabled, and rescheduling is delayed temporarily. This is used when the operating system moves multiple processes into the ready state at the same time. In this scenario, the operating system must make both processes eligible to use the processor before either is run. Rescheduling after one process is ready may cause the process to execute, regardless of the priority of the other processes.
What is a semaphore queueing policy?
Determines which process to select among those waiting. Needed when the signal function is called.
What are the different types of caches? Briefly describe each.
Direct mapped (1-way Set Associative): a memory line is always stored at the same cache line. Degree N-way Set Associative: Cache lines are divided into N sets, and a memory line can be in any set of the N sets. But inside a set, the memory line is stored into the same cache line. This is the most popular cache type. Fully associative: a memory line can be stored at any cache line.
In what ways is an interrupt mask insufficient?
Disabling interrupt recognition penalizes all processes when one process executes a critical section. Prevents recognition of I/O activity reports (i.e. interrupts). Restricts execution to one process for the entire system. Can interfere with the scheduling invariant (low-priority process can block a high-priority process for which I /O has completed).
What is a real-time system?
Does not give an equal priority to all computations. A real-time system assigns priorities to computations, and a scheduler ensures that each computation meets the required schedule. This allows the system to give the processor high-priority tasks, even if lower-priority tasks are waiting. Popular in systems where a critical task needs to be guaranteed, for example a voice transmission with a cell phone.
What is FIFO scheduling?
FIFO stands for First-In-First-Out. This scheduling algorithm is also known as First-Come-First-Serve (FCFS). When the processor is available, the scheduler will choose the process that has been waiting the longest. In this algorithm, the process is executed to completion. Meaning, bigger processes will get more CPU time, but it prevents starvation because each process is ensured processing time.
What are the two basic bus operations supported?
Fetch: to move data from a component to the processor Store: to move data from the process to a component
What is the difference between general purpose and special purpose registers?
General-purpose: - Local storage inside processor - Hold active values during computation (e.g., used to compute an expression) - Saved and restored during subprogram invocation Special-purpose: - Located inside the processor - Values control processor actions (e.g., mode and address space visibility)
Describe the implementation of context switching (in reference to Xinu).
Given a "new" process, N, and "old" process, O: 1) Save copy of all information pertinent to O on process O's stack. 2) Load saved information for N. 3) Resume execution of N.
What is a timesharing system?
Gives an equal priority to all computations, and allows a computation to start or terminate at any time. The amount of processing a computation gets is inversely proportional to the load on the system. The more processes that are running simultaneously, the slower each process runs. Because they allow computations to be created dynamically, timesharing systems are popular for computers that human users operate.
What happens to the processes that are blocked waiting on a semaphore in Xinu if a process deletes the semaphore (i.e., calls a semdelete on the semaphore)?
If a semdelete is called on a semaphore that has processes waiting, then those processes are moved to the ready state.
What happens when an interrupt happens during interrupt handling? What is the solution to solve this problem?
If not using locks, it could cause inconsistencies within the OS. It could cause a deadlock if using locks. It can exhaust the kernel stack if too many fire at once. The solution is to disable further interrupts while serving the current interrupt.
What kind of scheduling algorithm would you see in a real-time system?
In Xinu, First-In-First-Out is used. This gives bigger processes longer control of the processor, but means that all processes will have access to the CPU in definite time.
What is a monolithic operating system? Give an example.
In a monolithic system, application code is compiled together with operating system code and library code into a single executable file. This file is loaded once, and the loading of additional code is not required. The entire operating system is working in kernel space.
Xinu development links all application code together with the operating system code and library code to produce a "monolithic" executable file. This file is loaded once, after which loading of additional code is not required. However, there may be a variable number of processes in execution, even given this fixed collection of code. How is that possible?
In a monolithic system, the code is compiled together in a single executable. But, after it is loaded in memory we can create processes from the Kernel. Every process has its own virtual address space that cannot be interfered with. While the system and libraries are shared, each individual process is executed independently.
What happens if all processes wait for I/O?
In an OS, an execution must be running at all times. If all running processes are waiting, we would need an extra process to execute. This is called the NULL process: process ID zero and priority 0. It never terminates, and is typically an infinite loop.
In Xinu, how do operating system functions know which process is executing at a given time?
In an operating system, processes are tracked using states. Three of the primary states include ready, current, and blocked. A process is ready when it is eligible to execute, but not currently running. A process is current when it is being executed by the processor. A process is blocked when it is waiting for an event to occur (i.e., an I/O event). Xinu uses the prostate field in the process table to record the state information of a process. Xinu processes stored in the process table have a unique identifier (currpid) of type pid32 and are defined by a process control block (PCB) structure, called struct procent proctab[] that can keep track of each process.
What are the properties of lists in Xinu? Why was this decided?
Instead of six separate sets of linked-list functions, Xinu implemented a single set of functions to satisfy all situational requirements. All lists are doubly-linked - each node points to its predecessor and successor Each node stores a key as well as a process ID, even though a key is not used in a FIFO list Each list has a head and tail; the head and tail nodes have the same shape as other nodes Non-FIFO lists are ordered in descending order The key value in a head node is the maximum integer used as a key, and the key value in the tail node is the minimum integer used as a key
How would you guarantee a function is executed without being interrupted?
Interrupt recognition is used to identify and handle interrupt signals. The interrupt mask is hardware that controls interrupt recognition. This means we can see whether recognition is enabled or disabled, set the mask to prevent recognition, and clear the mask to allow recognition. In the case of a function that is critical and needs to guarantee execution without interrupts, the following steps would be executed: 1. Save current interrupt status 2. Disable interrupt recognition 3. Execute critical function 4. Restore interrupt recognition from saved copy This would block all interrupts until the function was executed, and then turn interrupts back on.
What is the difference between interrupt-driven and polled I/O?
Interrupt-driven means the operating system will interact with a device to start an operation. When an I/O operation completes, the device interrupts the processor. This optimizes concurrency, allows multiple devices to run in parallel, and lets the operating system know when it can start another operation. It is not always optimal though, such as before interrupts and I/O devices are initialized, or when a programmer may want to leave interrupts disabled for debugging. Polled I/O is when the processor starts an operation and does not enable interrupts. The processor enters a loop that checks a device status register, and waits for the operation to complete. This is a simpler design that requires less hardware and overhead, but is a lot slower than interrupt-driven when multiple devices are running in parallel. It is efficient when I/O is short and frequent.
What is inter-process communication and how is it achieved?
It is a mechanism allows processes to communicate each other and synchronize their action. This is used for the exchange of non-shared data and processes coordination. To achieve this, there are two primary ways: shared memory and message passing.
What are the uses of a low-level memory manager?
It manages memory within kernel address space. It allocates address spaces for processes. It treats memory as a single, exhaustible resource. It is positioned in the hierarchy below the process manager.
What is a kernel?
Lowest level but the most important part of an operating system. Provides resource management, and a bridge between software and hardware.
What type of I/O would be used in the MS-DOS operating system? At the early stages of operating system boot process?
MS-DOS is an old operating system that was designed to run on low-end hardware. Compared to today's operating systems, I/O was relatively slow using the command line. In this case, I would expect polled I/O to be used. In the early stages of system startup, we would most likely see polled I/O. As stated before, this is because I/O and interrupt may not be initialized yet.
What are the two basic approaches for I/O?
Memory-mapped I/O - Mapped into the same address space. Processor uses normal fetch/store memory instructions. Devices are placed beyond physical memory. Port-mapped I/O - Use a separate, dedicated address space. Special instructions used to access devices. Memory-mapped is used on more modern Intel machines, and most others. Port-mapped is used on earlier Intel machines.
What techniques are used to transfer multi-byte data between memory and I/O devices? Which is more complex?
Memory-mapped I/O - The device is assigned a set of addresses in the bus's address space. Similar to memory data access, it uses a fetch-store paradigm to communicate. The processor computes the address associated with the device, then the processor stores or fetches a value from the address. Direct Memory Access (DMA) - The device contains hardware that uses the I/O bus to communicate with memory. The device then proceeds to execute these operations one by one. This is very efficient because it does not have to frequently require the processor. Instead, the processor gives the device a list of operations at one time. But, this also makes it more complex and difficult to implement.
What is a special instruction that can go from user mode to kernel mode? Give an example for Intel x86 and ARM.
On Intel x86 architecture, we can use the 'INT' (interrupt), and on ARM we can use 'swi' (software interrsupt). Triggering an interrupt would make the operating system go into Kernel mode to handle.
Why does the OS control I/O?
One primary reason is safety. The computer must ensure that if a program has a bug in it, then it doesn't crash or mess up the system, or other running programs. Also fairness, as it makes sure other programs have fair use of a device.
What is mutual exclusion?
Only one process at a time can use a shared resource
What is a semaphore? How is it used?
Operating system guarantees only one process can access the shared item at a given time. Semaphores are allocated for items to be protected (known as a mutex). Applications must be programmed to use the mutex before accessing a shared item. This implementation avoids busy waiting.
What are the major components in an operating system? Briefly describe each.
Process manager - decide how to allocate CPU, keep track of status of each process. Memory manager - in charge of main memory, such as checking the validity of each request for memory space. Device manger - monitor every device, channel, and control unit. Clock (time) manager File manager - track every file, including data files, assembler, compilers and application programs. Inter-process communication - allow process to communicate with each other Intermachine communication - allow processes to manage shared data. Assessment and accounting - user/system, statistics.
What are the key hardware features from an OS point of view?
Processor - instruction set specifies processor functionality. Has registers, which are temporary and high-speed storage. Memory system - defines size of a byte, the smallest addressable unit. Provides address space. Defines important property for programmers: endianness. - Bus and address space - Individual I/O devices - Interrupt structure
What key situations do process coordination mechanisms handle?
Producer/consumer interaction and mutual exclusion
What are the benefits of using a real-time system?
Provides examples of the principles Makes everything concrete Gives students a chance to experiment Shows how abstractions map to real hardware
What are calling conventions?
Refer to the set of steps taken during a function call. They specify which registers must be saved by the caller, which registers must be saved by the called function, and where registers are saved (e.g., on the stack). Calling conventions are specifically dependent on the hardware and compiler being used. The key operating system's functions cannot be implemented unless the calling conventions are known.
What are the benefits of using the Xinu operating system?
Small — can be read and understood in a semester Complete — includes all the major components Elegant — provides an excellent example of clean design Powerful — has dynamic process creation, dynamic memory management, and flexible I/O Practical — has been used in real products
What kinds of system calls does an OS need?
Some of the main system calls needed in an OS include: - Process creation and management - Main memory management - File Access, Directory and File system management - Device handling (I/O) - Protection - Networking
What are the two categories of memory?
Stable Storage - such as flash memory that retains values after power is removed (addresses 0 through K - 1) Random Access Memory (RAM) - only retains values while the system is powered on (addresses K from N - 1)
What are the two different ways of semaphore allocation? Describe each.
Static - A fixed set of semaphores are defined at compile time. This saves space, reduces processing overhead and is more efficient. But, it is overall less powerful. Dynamic - Semaphores are created at runtime and deallocated when they are no longer needed. Has the ability to accommodate new uses, and is more flexible.
Describe the implementation of scheduling (in reference to Xinu).
Steps during scheduling include: 1) Examine processes that are eligible for execution 2) Select a process to run 3) Switch the processor to the selected process We need a scheduling policy that specifies which process to select. Then, we build a scheduling function that: - Selects a process according to the policy - Updates the process table for the current and selected processes - Calls context switch to switch from current process to the selected process
Why is Intel context switch code longer?
The ARM assembler uses shorthand.
What semaphore queueing policy is used in Xinu?
The First-Come-First-Serve (FCFS) algorithm is used in Xinu. This means we choose the process that has been waiting the longest for execution. It is extremally efficient, and ensures that no processes are at risk of starvation. The potential problem: low-priority processes can access a resource while high-priority processes remain blocked. This is called the priority inversion problem.
What memory optimization techniques are used in Xinu?
The Xinu operating system uses relative pointers and implicit data structure to optimize its memory.
Suppose a system contains three processes, A, B, and C, with equal priority. If process A is executing and suspends C, which process will run? Please explain.
The Xinu operating system uses round-robin for equal priority scheduling. This means processes with equal priority will be executed one after another in a circular order, ensuring that all processes have the same amount of CPU time. If process C has been suspended and not resumed, it is not eligible to use the processor. Thus, we will assume that process A and process B are eligible for execution from the CPU. In theory, because of round-robin scheduling, we can assume that process B would be run since process A was already run previously.
How are processes created and killed in Xinu?
The create procedure in Xinu creates a process. It finds a free entry using newpid and allocates space using getstk. The kill function is used for process termination.
What are the typical message passing functions?
The following functions and data items are characteristic in a typical message-passing environment: Source and Destination addresses must identify the machine and the process being addressed. Message is a generic data item to be delivered. Uses two system calls: send, which sends the message to a destination without blocking; the senders address is usually included), and receive, receives the next sequential message from source, blocking until its available.
What is a system call?
The programmatic way in which a computer program requests a service from the kernel of OS it is executed on. A way for programs to interact with OS and hardware.
Where are user-accessible register contents saved when a process is moved from the current state to the ready state? Where else may it be saved?
The register state is moved to the kernel's stack. A few registers may need to be saved separately, either on the stack or in memory. Xinu might save the stack pointer in the process table.
What rule is used to determine which process is running or should be running? What function is primarily responsible for enforcing this?
The rule that decides which process is running is called the scheduler. It is responsible for selecting an eligible process to run, and giving that process control of the processor. The highest priority eligible process is executed, and round-robin is used for processes with equal priority. In the Xinu operating system, the resched function is primarily used for scheduling. It completes every task of scheduling and context switching besides saving and restoring CPU registers.
What steps are taken at a hardware level when a function is invoked and returned?
The steps to invoke a function are heavily dependent on the hardware and calling convention. Steps for Intel include: 1. A caller will push the registers on the stack 2. Arguments are pushed in reverse order 3. The code in the called function pushes the registers 4. Space is pushed for local variables Calling conventions for ARM have additional steps. For example, the first step in ARM would be passing the first four arguments to registers r0 - r3.
What are the three primary states used in operating systems?
The three primary states are: Current - process is currently executing Ready - process is ready to execute Blocked - waiting for an event (ex. I/O device)
What are the two types of memory management?
The two types of memory management are the low-level memory manager and the high-level memory manager.
What is the basic memory layout of a C program?
There are four memory segments when a C program is compiled. These include text, data, bss, and stack segments. The text segment includes the program's code and functions. The data segment contains all initialized data. The bss segment contains all uninitialized data. Finally, the stack segment is used for dynamic memory allocation. These segments are stored together, with the text segment being at the lowest address, and the stack segment being at the highest. Before the stack segment there is free space that is dynamically allocated to the stack.
What are the two basic categories of multitasking systems?
These include timesharing and real-time systems.
In Xinu, returning from the execution of an interrupt handler occurs after the effect(s) of the interrupt has been dealt with. In particular, an interrupt could awaken one or more processes - that is, cause them to move from a blocked state to the ready state. Illustrate one case where multiple processes may be awakened as the result of an interrupt. Indicate how the interrupt handler prevents an awakened process from taking control of the processor before the interrupt handling has been completed.
This can happen when semaphores are used to synchronize access to a shared device (i.e., hard drive, etc.) While one process is using the device, multiple others can be in a waiting or blocked status. If an interrupt occurs while the process is using the device, it along with all waiting processes will be moved to a ready state. Once the interrupt has been handled, one of the processes now in the ready state will be selected for execution. In this case, multiple processes were awakened as the result of the interrupted semaphore. This is done using the resched_cntl function - which controls whether rescheduling is deferred or allowed.
What is a context switch in an operating system?
This happens when switching states within the operating system. It involves stopping the current process, saving enough information so it may be restarted later, and starting another process.
What are relative pointers used for in Xinu?
This is a memory optimization technique used in Xinu. With relative pointers, we store list elements in an array. Each item in the array is one node. We use the array index instead of the address to identify the node. Given that there is a fixed number of processes (NPROC), we can use the pointer to the array and add an offset of the index to get a node.
The code to implement a context switch is one of the few required functions in an operating system that are almost always written in assembly language. Why is this the case?
This is because registers and hardware status are not able to be changed or manipulated by higher-level languages. Context switching is the process of storing a process state so that it can be resumed later. To do this, it utilizes many CPU registers such as the program counter. Moreso, it is architecture dependent, and assembly language allows the developer to meet the specific requirements of the hardware (i.e., Intel or ARM).
What is round-robin scheduling?
This scheduling method gives equal processing time to all processes in a circular order. While this is fair in the sense that it gives all processes equal access, it can also mean bigger and higher priority processes do not get as many resources as they would with other algorithms.
When do we use threads to execute a process?
Threads are appropriate tools to use when multiple independent execution paths (or computations)need access to the same address space and other resources.
What are the two approaches used for process coordination?
Use hardware mechanisms - disable interrupts, stop all activities except for one process. Most useful for multiprocessor systems. Use operating system mechanisms - Works well with a single processor. No unnecessary execution.
How are process states used with semaphores?
When a process is waiting on a semaphore, it is NOT current, ready, or suspended. Instead, a new state is used called wait (PR_WAIT). This shows that a process is blocked on a semaphore.
What is interrupt handling? How is it achieved?
When an interrupt occurs, the entire state of the processor, including the program counter and status registers, is saved (dumped on the kernels stack). Control jumps to the kernel, and the processor runs the appropriate interrupt handler processor, which must have been placed in memory before the interrupt occurs. When an interrupt finishes, the operating system and hardware provide mechanisms that restore the entire state of the processor and continue processing at the point of interruption.
What is a primary flaw with priority-driven scheduling?
When you have high-priority processes, and low-priority processes, you have the risk of starvation.
How does Xinu extend the three primary states? List and give a description of each.
Xinu has additional states beyond the primary states of the OS. These include: Sleep - the processor is waiting on a timer Suspend - the process is suspended, not eligible until resumed Wait - the process is waiting on a semaphore
What is a multileveled vs multilayered orgranization?
Xinu uses a Multilevel structure, that is - a hierarchy of OS design that is a form of data abstraction. Helps the designer focus attention on one aspect at a time. Keeps policy decisions independent. Allows a given level to use all lower levels. Very efficient structure for an OS. A Multilayered structure is visible to the user as well as the designer. Each layer uses the layer directly beneath it. It involves protection as well as data abstraction. It can be very inefficient.
How are process states stored? What information does this include?
Xinu uses field prstate in the process table to record state information for each process.
What different operations can be executed on a semaphore?
create - create a new semaphore delete - delete an existing semaphore wait - Decrements count and continue. Adds calling process to set of waiting processes if resulting count is negative. signal - Increments count. Makes a process ready if any are waiting
What items are stored in the Xinu process table?
prstate - The current status of the process (e.g. whether the process is currently executing or waiting) prprio - The scheduling priority of the process prstkptr - The saved value of the process' stack pointer when the process is not executing prstkbase - The address of the base of the process' stack prstklen - A limit on the maximum size that the process' stack can grow prname - A name assigned to the process that humans use to identify the process' purpose