[운영체제(OS)] 1장. Introduction and System Structures

kothe·2022년 10월 15일
0

운영체제

목록 보기
1/17

1. Operating System

본격적으로 OS에 대해 정리하기에 앞서 정의와 간단한 개념에 대해 살펴보자.

Definition(Wiki, 2012)

OS는 hardware 와 user 사이의 interface이다.

  • OS는 activity들을 관리/조직하고 컴퓨터 resource들을 공유한다.
  • Machine에서 실행중인 각종 applications(guest)의 host처럼 작동한다.
    • Application이 시스템의 details들을 알지 않고도 host인 OS가 이런 복잡한 details들을 쉽게 핸들링 해준다.

Definition(Wiki, 2022)

OS는 컴퓨터의 hardware, software resources를 관리하는 system software다. App들에게 commom services를 제공한다.

  • OS는 App들과 하드웨어 사이에 있는 중간계층이다. App은 일반적으로 direct하게 하드웨어상에서 실행되지만, 필요에 따라서 운영체제에게 system call을 함으로써 서비스를 요청한다. 반대로 운영체제로부터 interrupt받기도 한다.

System Application과 Computer 하드웨어 사이에 OS가 껴있다.

System Call Interface + Kernel 영역이 OS이다.

Market share

  • General-purpose personal systems OS
    • MS Windows 75+%
    • MacOS 15+%
    • Linux ~2%
  • Mobile OS
    • Google Android(Linux based) 70~90%
    • Apple iOS 10+%
    • Others ~1%
  • Server and supercomputing systems OS
    • Linux distributions are dominant.

2. Functions of OS

운영체제의 기능들을 살펴보자. 크게 다음 4가지의 기능을 하고, 중요한 두 가지 기능인 Resource management, Process management에 대해 자세히 살펴보자.

Functions of OS

  • User interface (for user convenience) -> System call interface

    • CLI (Command Line Interface) -> 커맨드를 외워서 쳐야함
      • CUI (Character (Text) User Interface)
    • GUI (Graphical User Interface) -> 바탕화면, 메뉴에서의 클릭, 드래그 등등
    • EUCI (End-User Comfortable Interface)
      -> HCI (Human-Computer Interaction)
      -> UX (User eXperience)
  • Resouce management (for efficiency)

    • (1) Processor management (cpu 관리)

      • Process scheduling : 어느 process를 먼저 실행할까?
      • Process assignment : 어느 CPU에 할당할까?
    • (2) Memory management

      • Multi-user, multi-tasking system 이라면
        • Memory allocation / deallocation
        • Free space management
        • Memory protection
      • Memory 관리 기법
        • Virtual memory system 쓰는 경우
        • Total contiguous allocation
    • (3) File management

      사용자는 왼쪽의 tree 형태로 파일을 보지만, 커널 관점에서는 오른쪽과 같이 block들의 sequence로 보기 때문에 바로 밑 하위폴더라고 해도 block들이 멀리 떨어져 있을 수 있다. 운영체제는 사용자가 원하는 파일을 정확히 순서대로 찾아서 사용자에게 보여줘야 한다.

      • File/space management 기능들
        • Creation/deletion of files/directories
        • Support of primitives for file/directory manipulation
        • Mapping of files onto secondary storage
        • Storage space allocation
        • Free space management
    • (4) I/O management
      Running process를 App이라고 생각하면 편하다. app이 입출력(키보드 입력, 모니터로 출력 등)이 필요하다면 OS에 System call을 한다. 그럼 OS는 실제 I/O device에게 I/O request를 보낸다. 입출력이 모두 끝나면 I/O devices가 OS로 입출력이 모두 끝났음을 알리는 Interrupt를 보낸다. OS는 Interrupt와 함께 들어온 정보를 App을 Wakeup 하면서 보내준다. 밑의 그림을 보면 이해가 더욱 잘된다.
      버퍼풀을 사용하여 Disk 같은 I/O 장치에 접근하는 횟수를 줄일 수 있다.

  • Process management

    • (5) Process management

      • Process (실행을 시작했고, 종료하지 않은 상태의 App)

      • Process 관리 기능들

        • Creation/deletion
        • Dispatch(schedule)(CPU할당) / preemtion(강제로 CPU반납) / block(스스로 CPU반납)
        • Suspension(메모리 뺏기) / resumption(메모리 할당)
        • Process synchronization, Inter-process communication
        • Deadlock handling
      • 프로세스 관리를 위해 OS가 사용하는 자료구조 : PCB -> kernel 안에 있음

    • Thread management

  • +Networking / Security&Protection (TCP, IP프로토콜이 OS안에서 제공됨)

3. OS Classification

Linux, Unix, MS Windows 등등 200여가지의 OS를 다양한 기준으로 분류해보자.

OS 분류 기준

  • Number of concurrent users
    • Single-user system
    • Multi-user system
  • Number of concurrent porcesses
    • Single-tasking system
    • Multi-tasking system (Multiprogramming system)
  • Job processing mechanism (Computing paradigm)
    • Batch systems
    • Interactive systems (Time-sharing systems)
    • Personal computing
    • Parallel/Distributed computing
    • Real-time system
    • Embedded system
    • Mobile computing
    • Cloud computing
    • Ubiquitous computing
      위에서 아래로 쭉 발전해왔다.

Single-user system vs. Multi-user system

  • Single-user system
    • 유저 한 명만 system을 사용한다.
    • 유저가 모든 system resouces를 차지하고 사용하기 때문에 protection mechanism이 굳이 필요없다.
    • personal computers에서 주로 사용된다.
    • MS-DOS, MS Windows 95/98/10
  • Multi-user system
    • 많은 유저가 system을 동시에 사용할 수 있다.
    • 기기 한 대를 여러 사용자가 같이 사용하기 때문에, 제대로된 Protection mechanism이 필수다.
    • Multi-tasking 기능이 필요하다.
    • OS functions/facilities가 복잡해진다.
    • Unix, Linux

Single-tasking system vs. Multi-tasking system

  • Single-tasking system
    • 프로세스 한 개만 시스템 상에 존재한다.(현재 실행중인 프로세스가 끝난 후에, 다른 시스템이 실행될 수 있다.)
    • Single-user system
    • Simple OS structure
    • personal computers에 주로 사용된다.
    • MS-DOS
  • Multi-tasking system
    • 여러개의 프로세스가 동시에 실행되야하기 때문에 concurrency control, synchronization mechanisms 필요.
    • Complex OS structure
    • Unix, Linux

4. OS Structure

운영체제의 구조에 대해 알아보자.

OS structure

  • Kernel (운영체제의 핵심 부분. 일반적으로 OS=Kernel이라 해도 큰 문제는 없다)
    • OS의 자주 사용되는 기능들 (부팅 이후에 메모리에 상주하는 영역)
    • 자원관리와 관련된 기능들(resource management, process management)을 지원한다.
    • Nucleus, supervisor program, resident program이라고도 불린다.
  • Utilities
    • 부팅 후 메모리에 들어가지 않고, 디스크에 남아있다.
    • service functions(사용자와의 상호작용 등등의 부가기능)

Booting이란?

  • Bootstrap program (bootstrap loader)에 의해 진행된다.

    • OS kernel을 메모리에 load하고 locate하는 과정을 일컫는다.
    • Initializes all aspects of the system
      • CPU registers
      • Device controllers
      • Memory contents
    1. ROM에 있는 firmware가 실행되면서 , Bootstrap program이 boot code를 메모리에 올린다.
    2. boot code가 실행되면서, 하드웨어의 OS image를 찾아 메모리에 올린다.

5. Dual Mode Operation

운영체제와 관련된 용어/컨셉을 알아보자.

Two separate modes

  • CPU에는 1-bit의 mode를 판단하는 레지스터가 있다.

    • User mode : user application을 실행하고 있을 때
    • Kernel mode : operating system을 실행하고 있을 때 (supervisor mode, privileged mode)
  • trap이나 interrupt가 발생하면, user mode -> kernel mode로 바뀐다.

    그럼 trap 과 interrupt가 뭘까?

Interrupt and trap

  • Interrupt

    • CPU의 입장에서 예상치 못한 외부의 이벤트를 받는 것을 Interrupt라고 한다.
    • I/O같은 H/W로 부터 올 수도 있고, S/W로부터 받을 수도 있다. CPU가 Interrupt를 받으면 handling을 해야하는데, Interrupt handler는 kernel에 있기 때문에 User mode에서 Kernel mode로 바껴야하는 것이다.
  • Trap

    • S/W로부터 오는 Interrupt
    • Exception : 프로그램에 뭔가 오류가 생겨서 더 실행할 수 없을 때(0으로 나누기) 발생 -> kernel의 handler가 필요하다.
    • System call : 예를 들어, CPU가 어떤 프로그램을 실행하는 중에 kernel의 입출력 코드를 실행하는 경우 -> kernel 안의 코드가 필요하므로 kernel모드로 바뀜

    Interrupt 와 trap은 개념이 비슷하기 때문에 헷갈릴 수 있는데, 아래 특징으로 구분하면 된다.

Interrupt :

  • 비동기식 이벤트
  • 다른 하드웨어 장치가 CPU와 상관없이 발생시킴
  • keyboard event, I/O interrupt, timer ticks

Exception :

  • 동기식 이벤트
  • 내부적으로 CPU control unit이 명령어의 실행 결과로 자주 발생시킴
  • 0으로 나누기, page fault

Privileged instructions

machine instruction들 중에 kernel mode에서만 사용가능한 명령어들을 일컫는다.

6. System Call Interface

System call

  • Application/process와 OS 사이의 interface.
  • OS가 Application/process에게 제공하는 서비스.
  • trap이라는 명령어로 실행된다.
    조금 추상적이니 아래 그림을 보자.

박스들이 모두 function이다. OS는 수많은 functions들의 집합인 셈이다. Application은 하늘색부분의 function들만 call할 수 있고 이 function들이 System call function이다. 아래가 system call의 종류들이다.

System calls

  • Process control : create, terminate, load, wait, etc.
  • File management : create, delete, open, close, read, write, reposition, etc.
  • Device management : request, release, read, write, etc.
  • Information management : get/set time/date, get process/file/device attributes, etc.
  • Communications : create/delete connection, send/receive messages, etc.

System calls, Interrupts, Exceptions

위 내용들을 정리해보자
Device로부터 Kernel로 오는 signal이 Interrupt이다. Interrupt가 들어오면 kernel은 CPU에서 Interrupt handling을 해야하기때문에 cpu로 나가서 interrupt를 핸들링한다. 더 자세한 내용은 다음 챕터에서 다룬다. CPU에서 어떤 오류가 발생하면 kernel에서 Exception handling을 해준다. CPU의 process가 system call을 하면, system call handling이 진행된다.

7. Virtualization

가상화는 운영체제와 가장 밀접한 관련이 있는 기술이기때문에 다룬다.

Hardware virtualization (platform virtualization)

  • 가상머신(os를 가진 실제 컴퓨터 시스템처럼 동작)을 만드는 것 -> 하나의 실제 컴퓨터 시스템처럼 보인다. 가상머신 위에서 실행되는 App들은 물리적으로 존재하는 CPU/MEM을 사용하는 것이 아닌 가상의 resources를 사용한다.
  • Host machine (physical machine)위에 guest machine(VM)이 사용된다.
  • 단일 컴퓨터 하드웨어를 여러개의 서로 다른 execution environments를 만드는 것.-> illusion

guest machine의 물리적인 CPU/MEM 같은 resource는 없지만 그림을 보면 cpu, mem등 resource가 있고 자체적으로 app들을 서비스한다. 가상으로 존재하는 resource를 사용하는 것이다. 이를 위해서 Virtualization Layer가 필요하다. Virtualization Layer를 Host Os, Hypervisor, VMM이라고 부르기도 하는데 그 차이는 밑에서 알아보자.

실제 OS는 보라색 부분 Hypervisor이다.

Types of virtualization

VM의 Guest OS가 받은 System call은 Physical hardware를 직접 건드릴 수 없기 때문에 Hypervisor를 통해야지만 Hardware로 system call을 전달할 수 있다. 이 때 guest OS에서 hypervisor call로 전환하는 방법에 따라 가상화 종류가 나뉜다.

  • Para-virtualization(반가상화) : Guest OS가 Hardware에 접근이 안되니 system call이 hypervisor로 가게끔 Guest OS를 수정하는 방법. -> 성능이 더 좋음
  • Full-virtualization(전가상화) : Guest OS가 Hardware를 건드리려고 할 때, exception으로 인지해서 이 exception handling을 hypervisor call로 전환시켜주는 방법으로 guest os를 수정할 필요가 없다.
  • Hybrid virtualization : 최소 반가상화, 대부분이 전가상화.

Types of VMM (Hypervisor)

  • Type-1 (baremetal) : VMM이 hardware에서 직접적으로 돌아간다. VMM이 직접적인 hardware관리를 해야함.
  • Type-2 (hosted) : 기존의 OS를 host OS로 두고, 그 위에서 VMM을 올리고 그 위에 VM을 돌린다. 기존의 만들어진 OS기능(하드웨어 관리 기능 등)을 그대로 활용해보자는 컨셉
  • Type-3 (hybrid) : 실제 OS안에 VMM을 embedding 시켜버림.

OS virtualization

kernel이 여러개의 독립된 user-space instances를 만들어 주는 것. 기존의 OS를 그대로 쓴다. 하드웨어 가상화보다 성능이 더 좋다. 하지만 isolation이 하드웨어 가상화보다 더 견고하진 않다는 단점도 있다.

Benefits of virtualization

  • 서버 통합
    • cost saving
    • Isolation을 유지하면서 서버 자원을 효과적으로 사용할 수 있다.
  • 관리가 용이함
  • Availability/reliability 향상
    • Automatic restart, fault tolerance, disaster recovery
  • SW 개발 측면 - Testing

Cloud Computing

  • SaaS (Service as a Server) : 클라우드에 있는 App을 사용하는 것
  • PaaS (Platform as a Server) : 하드웨어 + 개발툴(compiler)
  • IaaS (Infrastructure as a Server) : 하드웨어 플랫폼만 빌려주는 것 (cpu만, mem만 etc)
profile
천천히 꾸준히

0개의 댓글