1. What is operating system?
1) 컴퓨터 하드웨어를 관리한다
ex) access to I/O devices, access to files, accounting, error detection
2) 프로그램이 실행되는 것을 관리하고 조정한다.
ex) scheduling, error reporting
2. OS 수행의 목적
1) 컴퓨터 프로그램을 실행하고 문제를 더 빠르게 수행할수 있게 된다.
2) 컴퓨터 시스템을 편하게 사용할 수 있게 한다.
3) 컴퓨터 하드웨어를 효율적으로 사용할수 있게 한다.
3. OS를 비유하자면?
1. Resource allocator( 자원을 분배함)
: CPU time, memory space, file-storage space, I/O devices 등을 관리한다.
: 어떻게 하드웨어를 효율적으로, 공평하게 분배 할수 있을지 결정하게 된다.
2. Controll program
: 프로그램의 실행을 제어하고, 에러나 부적절한 사용등을 방지한다.
3. 컴퓨터가 켜져있는 내내 실행되는 단 하나의 프로그램( 반드시 수행되어야 하는 프로그램이다)
: 나머지는 system program이나 application program 이라고 할 수 있다.
+) Kernel은 운영체제 의 프로그램 실행등을 담당하는 가장 핵심적인 부분이라고 할 수 있다.
4. Resource Manager 로의 역할
: 컴퓨터 시스템은 크게 CPU, memory, storage, I/O device 네가지로 나눠져 있는데, 이를 효율적으로 프로그램들에 분배한다는 역할을 한다고 볼 수 있다.
1) CPU나 device controller는 shared memory를 통해서 interaction을 한다.
ex) 키보드로 들어온 정보를 메모리에 저장한 후 CPU가 해석하게 된다.
2) CPU와 device가 동시에 실행되면서 이들이 memory cycle을 차지하기 위해 경쟁하게 된다.
5. 컴퓨터 시스템은 어떻게 동작하는가?
- Four basic principles
1) Computer system I/O operation
2) I/ O structure
3) Interrupt
4) Storage Structure
+) additional feature : Multi- processor systems
1. Computer System I/O Operation
: 대부분의 디바이스들은 그 디바이스를 담당하고 있는 device controller가 있고, 그 device는 주로 local buffer를 갖고 있다. 이때 I/O operation 이란 데이터가 local buffer에서 main memory로 이동하는 연산을 의미한다.
하드웨어 디바이스는 main memory이기 때문에 device controller의 데이터들은 반드시 main memory로 이동하게 되어있다. 이때 I/O operation과 CPU 프로그램 수행을 concurrently 하게 수행할 수 있다.
=> ( DMA에 의해서 가능한 것이다. : direct memory access)
=> 프로그램 수행과 I/O operation이 동시에 진행되기 때문에 I/O operation이 끝났다는 내용을 CPU에게 알려줄 메커니즘이 필요하다. 이를 Interrupt라고 한다.
- I/O transaction이란?
: 데이터가 main memory와 device controller사이를 이동하는 연산을 의미한다. 이 때 이동되는 통로를 bus라고 한다.
1) System bus: CPU- I/O bridge
2) Memory bus: I/O bridge - memory
3) I/O buses: 여러가지 디바이스 사이에서 일어나는 연산이다.
- DMA란? (Direct memory access)
: 디바이스가 I/O transaction을 CPU의 간섭없이 수행할 수 있는 프로세스를 의미한다.
I/O 요청이 필요할때 CPU가 명령을 내리면, 그 이후부터 I/O 연산이 CPU의 간섭 없이 이루어진다. 이럴때 CPU는 다른 유용한 일에 프로그램 수행을 할 수 있게 되는 것이다.
=> 만약 DMA를 지원하지 않는다면?
: I/O 연산이 이루어질때 매번 CPU의 간섭을 요구하게 되므로, CPU가 다른 프로그램을 수행 할 수 없게 되어서 I/O 연산과 CPU 프로그램 수행이 동시에 되지 않을 수가 있다.
=> CPU간섭 없이 I/O transaction이 실행되고, CPU가 I/O operation을 초기화한다.
: I/O가 끝난 뒤에 CPU에게 끝났다는 알람을 해주는 것이 interrupt이다.
-Interrupt란?
:I/O transaction이 끝났을 때 CPU에게 이를 알려줘야 하는데, 이때 사용되는 매커니즘을 interrupt라고 한다.
Interrupt가 발생했을 때 OS는 무조건적으로 해당 interrupt source에 해당하는 interrupt routine을 수행해야 한다.
=> 이때 interrupt service routine의 주소를 담고 있는 테이블을 interrupt vector라고 하고, 이 벡터는 모든 interrupt handler의 주소를 갖고 있다. interrupt가 발생했을 때 interrupt handler의 수행이 끝나게 되면 원래 수행했던 위치로 돌아오게 되는데, 따라서 컴퓨터 어딘가에 interrupte가 발생했던 주소를 반드시 저장해줘야 한다. (그래야 돌아오니깐)
->instruction 수행 시 매우 많은 interrupt가 지속적으로 발생하기 때문에 OS를 interrupt-driven하다고 말한다.
'Computer Science > Operating system' 카테고리의 다른 글
Ch 5-3) Process scheduling (0) | 2020.05.31 |
---|---|
Ch 5-(1),(2) Process Scheduling (0) | 2020.05.16 |
ch4 - Threads& Concurrency (0) | 2020.05.04 |
ch.3-2,3 프로세스 생성, 종료 & IPC (0) | 2020.05.04 |
3 little things- Limited Direct Execution 정리+ 번역 (0) | 2020.04.07 |