What is an Operating System?
Operating system is a program that acts as an intermediary between a user of a computer and the computer hardware.
운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 사이의 중개자 역할을 하는 프로그램
From the view of Users, OS is a program for ease of use and performance.
From the view of Systems, OS is a program for resource allocation and control.
- manages all resources
- decides between conflicting requests for efficient and fair resource use
- controls execution of programs to prevent errors and improper use of the computer
사용자의 관점에서 OS는 사용 및 성능 향상을 위한 프로그램
시스템 보기에서 OS는 리소스 할당 및 제어를 위한 프로그램
- 모든 리소스를 관리
- 효율적이고 공정한 자원 사용에 대한 상반된 요청들 사이에서 결정
- 프로그램의 실행을 제어하여 오류 및 컴퓨터의 부적절한 사용을 방지
But there's no universally accepted definition of OS.
Mobile operating systems often include not only a core kernel but also middleware – a set of software framework that provide additional services such as databases, multimedia etc.
(e.g., Apple’s iOS & Google’s Android).
“The one program running at all times on the computer” is the kernel; Everything else is either a system program (ships with the operating system) or an application program.
Computer System Operation
One or more CPUs, device controllers connect through common bus (address/data/control bus) providing access to shared memory.
Each device is connected through a specific device controller.
Concurrent execution of CPUs and devices competing for memory cycles.
- I/O devices and the CPU can execute concurrently.
- Each device controller is in charge of a particular device type.
- Each device controller has a local buffer.
- CPU moves data from/to main memory to/from local buffers.
- I/O is from the device to local buffer of controller.
- Device controller informs CPU that it has finished its operation by causing an interrupt.
하나 이상의 CPU, 장치 컨트롤러가 공통 버스(주소/데이터/컨트롤 버스) 를 통해 연결되어 공유 메모리에 액세스할 수 있습니다. 각 장치는 특정 장치 컨트롤러를 통해 연결되며 메모리 주기를 두고 경쟁하는 CPU와 장치의 동시 실행됨
- I/O 장치와 CPU를 동시에 실행
- 각 장치 컨트롤러는 특정 장치 유형을 담당
- 각 장치 컨트롤러에는 local buffer
- CPU는 데이터를 주 메모리에서 로컬 버퍼로 이동
- I/O는 디바이스에서 컨트롤러의 로컬 버퍼로 전달
- 장치 컨트롤러는 CPU에 인터럽트를 발생시킴으로써 작동을 마쳤음을 알림
Interrupt Handling from HW perspective
Old Interrupt Handling (x86)
- I/O devices have IRQ lines. (IRQ is an Interrupt Request)
- IRQs are mapped by PIC (Programmable Interruptible Controller) to generate interrupts to CPU.
- 80386 core has one INTR (Interrupt) and one INTA (Interrupt Acknowledge) line.
Interrupt Handling from SW perspective
Interrupt Vector Table
-> Interrupt Service Routine
-> Disabling Interrupt
-> Save Processor-State
-> Interrupt Handling
-> Restore Processor-State
-> Enabling Interrupt
- Interrupt transfers control to the interrupt service routine (or interrupt handler), through the interrupt vector, which contains the addresses of all the service routines (generally stored in low memory)
- Interrupt handler is generally a part of the operating system
- Interrupt architecture must save the address of the interrupted instruction
- A trap (or an exception) is a software-generated interrupt caused either by an error or a user request
- 인터럽트는 모든 서비스 루틴의 주소를 포함하는 인터럽트 벡터를 통해 인터럽트 서비스 루틴(또는 인터럽트 핸들러)으로 제어 권한을 전송 (일반적으로 낮은 메모리에 저장됨)
- 인터럽트 핸들러는 일반적으로 운영 체제의 일부
- 인터럽트 아키텍처는 중단된 명령의 주소를 저장해야 함
- trap(또는 예외)는 오류 또는 사용자 요청에 의해 발생하는 소프트웨어 생성 인터럽트
Interrupt Timelines (Single Process)
Classes of Interrupts
Program (Trap or Software Interrupt)
- arithmetic overflow
- division by zero
- execute illegal instruction
- reference outside user’s memory space
- by user’s request (e.g. system call or monitor call)
Timer
I/O
Hardware failure
프로그램(트랩 또는 소프트웨어 인터럽트)
- 산술 오버플로우
- 0으로 나누기
- 잘못된 지시 실행
- 사용자의 메모리 공간 외부 참조
- 사용자의 요청(시스템 통화 또는 모니터 통화 등)
타이머
입출력
하드웨어 오류