dealing with i o dealing with i o cs 105
play

Dealing With I/O Dealing With I/O CS 105 Tour of the Black Holes - PowerPoint PPT Presentation

Dealing With I/O Dealing With I/O CS 105 Tour of the Black Holes of Computing Problem: I/O devices are slow Solution 1: wait for I/O CPU stops executing instructions


  1. ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ Dealing With I/O Dealing With I/O CS 105 “Tour of the Black Holes of Computing” Problem: I/O devices are slow Solution 1: wait for I/O CPU stops executing instructions until device gives answer Exceptional Control Flow Exceptional Control Flow Solution 2: polling Keep computing something else while I/O is happening Topics Every so often, check to see whether I/O is done Exceptions Solution 3: interrupts Signals Keep computing something else while I/O is happening Shells Device eventually interrupts CPU to tell it I/O is done CS 105 – 2 – Dealing With Errors Dealing With Errors Control Flow Control Flow How to handle bad mistakes like divide by 0? Computers do only one thing From startup to shutdown, a CPU simply reads and executes (interprets) a Solution 1: ignore completely sequence of instructions, one at a time Solution 2: set a flag and let program check This sequence is the system’s physical control flow (or flow of control ) Used for minor errors like integer overflow Nuisance to check after every important operation (e.g., division) Physical control flow Solution 2: interrupts <startup> inst 1 Time Let CPU notify program in a special way when bad things happen inst 2 Mechanism can be (nearly) identical to that used for I/O inst 3 … inst n <shutdown> CS 105 CS 105 – 3 – – 4 –

  2. ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ Altering the Control Flow Altering the Control Flow Exceptional Control Flow Exceptional Control Flow Up to now: two mechanisms for changing control flow: Exists at all levels of a computer system Jumps and branches—react to changes in program state Low-Level Mechanism Call and return using stack discipline—react to program state Exceptions � Change in control flow in response to a system event (i.e., change in system state) Insufficient for a useful system Combination of hardware and OS software Difficult for the CPU to react to other changes in system state � Data arrives from a disk or a network adapter Higher-Level Mechanisms � Instruction divides by zero Process context switch (done by OS software and HW timer) � User hits control-C at the keyboard Signals (done by OS software) � System timer expires Nonlocal jumps (throw/catch)—ignored in this course System needs mechanisms for “exceptional control flow” CS 105 CS 105 – 5 – – 6 – Exceptions Exceptions Exception Tables (Interrupt Vectors) Exception Tables (Interrupt Vectors) An exception is a transfer of control to OS kernel in response to some event (i.e., change in processor state) Exception numbers Exceptions interrupt the normal control flow Each type of event has a unique code for exception number k User Process OS exception handler 0 interrupt k = index into exception table code for vector (a.k.a., interrupt vector) exception handler 1 Exception event current 0 Jump table entry k points to a next Exception processing 1 code for function (exception handler). by exception handler 2 exception handler 2 ... • Return to current Handler k is called each time ... n-1 • Return to next exception k occurs. • Or abort & never return code for exception handler n-1 Think of it as a hardware-initiated function call CS 105 CS 105 – 7 – – 8 –

  3. ✆ ✞ ✁ ✁ ✁ ✆ ✝ ✁ � ✁ � � ✁ ✁ � ✁ ✄ ✁ ✂ ✁ ✄ ☎ ✁ ✁ ✁ ✁ Asynchronous Exceptions (Interrupts) Asynchronous Exceptions (Interrupts) Synchronous Exceptions Synchronous Exceptions Caused by events external to processor Caused by events that occur as result of executing an instruction: Indicated by putting voltage on the processor’s interrupt pin(s) Traps � Intentional Handler returns to “next” instruction. � Examples: system calls, breakpoint traps, special instructions Examples: � Returns control to “next” instruction Timer interrupt Faults � Every few milliseconds, triggered by external timer chip � Unintentional but possibly recoverable � Used by kernel to take control back from user programs � Examples: page faults (recoverable), protection faults (unrecoverable) I/O interrupts � Either re-executes faulting (“current”) instruction or aborts � Hitting control-C (or any key) at the keyboard Aborts � Arrival of packet from network � Unintentional and unrecoverable � Finishing writing data to disk � Examples: parity error, machine fails ongoing self-tests � Aborts current program or entire OS CS 105 CS 105 – 9 – – 10 – System Call Example System Call Example Fault Example: Invalid Memory Fault Example: Invalid Memory User calls: open(filename, options) Memory Reference int a[1000]; Calls __ open function, which invokes system call instruction syscall main () User writes to memory location { 00000000000e5d70 <__open>: a[5000] = 13; ... Address is not valid } e5d79: b8 02 00 00 00 mov $0x2,%eax # open is syscall #2 e5d7e: 0f 05 syscall # Return value in %rax e5d80: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax 80483b7: c7 05 60 e3 04 08 0d movl $0xd,0x804e360 ... e5dfa: c3 retq Virtual memory system detects invalid address, causes fault OS sends SIGSEGV signal to user process (discussed in a few minutes) User process exits with “segmentation fault” %rax ���������������� ������ ��������� ����������� User Process OS ������������������� %rdi �� %rsi �� %rdx �� %r10 �� %r8 �� %r9 ��������� ���������������� %rax page fault event ��������� movl ��������������������������� Detect invalid address ������� �������������������������� errno Signal process CS 105 CS 105 – 13 – – 15 –

  4. ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ECF Exists at All Levels of a System ECF Exists at All Levels of a System Killing a Process Killing a Process Exceptions Problem: runaway process (e.g., unintentional infinite loop) Hardware and operating system kernel software Solution: kernel has superpowers, can kill it off Concurrent processes Problem: cleaning up after killing process Hardware timer and kernel software Kernel can close open files, release memory, etc. Kernel can’t know whether to delete temporary files or send “bye-bye” message Signals across network Kernel software Solution: let processes intercept attempt to kill Non-local jumps (ignored in this class) Assumption is that they will clean up and exit gracefully Application code No direct enforcement of that assumption! Unsupported in C (except for horrible setjmp hack) C++/Java throw / catch Python try/except CS 105 CS 105 – 16 – – 17 – Signals Signals Signal Concepts: Sending Signal Concepts: Sending A signal is a small “message” that notifies a process that an event of some Kernel sends (delivers) a signal to a destination process by updating some type has occurred in the system state in the context of the destination process Kernel abstraction for exceptions and interrupts Kernel sends a signal for one of the following reasons: Sent from kernel (sometimes at request of another process) to a process Kernel has detected a system event such as divide by zero (SIGFPE) or termination Different signals are identified by small integer IDs of a child process (SIGCHLD) Only information in a signal is its ID and fact of arrival Another process has invoked the kill system call to explicitly request that the Represented internally by one bit in kernel kernel send a signal to the destination process ID Name Default Action Corresponding Event Interrupt from keyboard ( ctl-c ) 2 SIGINT Terminate 9 SIGKILL Terminate Kill program (cannot override or ignore) 11 SIGSEGV Terminate & Dump Segmentation violation 14 SIGALRM Terminate Timer signal 17 SIGCHLD Ignore Child stopped or terminated CS 105 CS 105 – 18 – – 19 –

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend