본문 바로가기
Computer Science/Operating System

Fundamental Concepts of OS

by Gofo 2021. 3. 24.

OS의 Key Concepts

Operating System이 제공하는 핵심적인 기능은 다음과 같다.

  • Abstraction
  • Protection
  • Illusion
  • Coordination and Optimization

 


Abstraction

일반적인 의미에서의 abstraction은 "복잡성을 줄이기 위해 주요한 특징을 간추려 제공하는 것"으로, 어떠한 복잡한 것을 간단하게 제공하는 것이다.

 

OS는 하드웨어의 복잡성을 숨기고, 프로그래머에게 clean, uniform, and standard interface을 제공한다.

OS에서의 abstraction이란 프로그래머가 하드웨어를 쉽게 제어할 수 있도록 인터페이스(API)을 제공하는 것이다.

예를 들어 POSIX APIs가 있다.

 

Big Library

OS는 bootstrapping, device drivers, sheduling, GUI 등 reusable한 프로그램 코드의 집합을 가지고 있다.

이런 의미에서 OS는 big library로 생각할 수 있다.

 

이 중 절반 이상이 C 표준 라이브러리 함수들의 집합으로 이루어져있다.

 

라이브러리에는 프로그래머가 주로 사용하는 함수들이 존재한다.

그리고 라이브러리 함수들은 system call을 호출하도록 연결되어 있다.

 

System call은 application SW와 OS 사이에서 인터페이스를 제공한다.

 

 

 

Interrupt Driven System

예를 들어 printf() 함수를 application에서 호출한다고 하자.

그러면 C library 안에 있는 printf 코드가 실행되고, write() system call을 호출한다.

 

이는 전체적으로 보면 아래와 같은 흐름을 보이게 된다.

이를 Interrupt driven system(Event driven system)이라 한다.

 

Execution flow with OS

 

Entry Point

프로그램이 실행이 실행되는 첫 번째 지점(instruction)을 entry point라고 한다.

 

일반적인 application은 main 함수를 entry point로 가지기 때문에 entry point가 보통 1개이다.

 

그러나 OS는 많은 entry point을 가지고 있다.

라이브러리 함수, interrupt handler function 등이 모두 entry point이다.

 

Embedded System에서의 Execution Flow

Embedded system의 경우 OS가 없이 hardware와 application으로만 구성되어 있다.

따라서 다양한 작업을 처리하기 위해서는 아래와 같은 형태로 이루어져야 한다.

 

하드웨어에서 전원이 공급된 후 interrupt가 발생하면, 발생한 interrupt에 해당하는 ISR(Interrupt Service Routine) 함수가 실행된다. 이 ISR 함수는 하드웨어의 개수만큼 존재하며, ISR의 기능을 수행하는데 필요한 helper 함수를 호출한다.

 

아래는 OS가 다양한 task들을 scheduling하는 모습을 모방한 것이다. 

interrupt가 발생하면 interrupt handler가 호출이 되고, 이는 다시 schedule 함수를 호출한다. 그리고 schedule이 여러 task들을 적절한 기준에 따라 처리한다.

 


Protection

OS는 응용프로그램들을 신뢰하지 않고, 응용프로그램으로부터 컴퓨터(하드웨어)를 보호하기 위한 기능을 제공한다.

응용프로그램들은 오류가 발생할 수 있으며 치명적인 코드를 포함할 수 있기 때문이다.

 

Memory Protection

각 프로그램들의 메모리 공간에 대해 분리한다.

응용프로그램이 다른 응용프로그램의 영역, 혹은 운영체제의 영역에 침범하지 못하도록 하는 것이다.

 

Legal addresse의 범위를 determine하여, 허용된 메모리 밖을 보호한다.

이를 위해서 Base register와 Limit register을 이용한다.

Base register는 프로그램이 사용하는 메모리의 시작주소를 담고 있고, Limit register는 프로그램이 사용하는 메모리의 최대 크기를 담고 있다.

 

프로그램이 메모리를 참조할 때마다 해당 프로그램의 base와 limit의 범위에 있는가를 확인한다.

만약 범위를 벗어나서 trap(exception)에 걸리게 되면 운영체제는 해당 프로그램을 kill한다.

 

Memory protection algorithm

 


Illusion

컴퓨터가 가지는 물리적인 한계를 사용자가 느끼지 못하도록 한다.

  • CPU에 대한 illusion
    • 짧은 시간 단위로 작업들을 switching하여 CPU가 여러개인 것 처럼 한다.
    • 이를 통해 time-sharing(mulitasking)을 할 수 있다.
  • 메모리에 대한 illusion
    • Virtual memory을 통해 각 프로그램마다 전체 메모리를 사용하는 것 처럼 illusion을 일으키기도 한다.

 


Coordination and Optimization

OS는 많은 작업들이 효율적으로 일어나도록 한다.

  • Coordination
    • 다수의 task, thread, user들이 존재할 때 그것들이 충돌을 일으키지 않게 조화롭게 작동할 수 있도록 한다.
  • Optimization
    • task, thread, user들의 성능이 저하되지 않도록 최적화 한다.

 

Concurrency와 efficiency를 고려해야 한다.

  • Concurrency
    • Multitasking
    • Multi-user support
    • Multithreading
  • Efficiency
    • Overlapped I/O and Processing : I/O device와 CPU가 동시에 작동될 수 있다.
    • Effective stroage management : Caching, paging, swapping
    • Fast interrupt handling

 

Multitasking and Synchronization

Synchronization은 최적화의 대표적인 기법이다.

여러 개의 동작이 수행되고 있을 때 그 작업들이 혼동되지 않도록 synchronization한다.

 

예를 들어, "안녕하세요. 여기는 대한민국입니다."라는 메시지와 "우리 헤어져! 잘 먹고 잘 살아라!"라는 이메일이 동시에 왔다고 하자.

이 때 synchronization이 적용되지 않다면 "안녕하세요. 우리 헤어져! 여기는 잘 먹고 잘 살아라! 대한민국입니다."처럼 메시지가 섞여버릴 수 있다. 이를 방지하기 위해 synchronization을 적용한다.

 

 

 

'Computer Science > Operating System' 카테고리의 다른 글

Process, PCB(Process Control Block)  (0) 2021.06.16
User Mode, Kernel Mode  (0) 2021.06.16
Interrupt, I/O Device  (0) 2021.04.05
컴퓨터 구조와 프로그램 실행  (0) 2021.04.03
History of Computers and OS  (0) 2021.03.18

댓글