Computer Science/OS

Operating System Structures(2)

박붕어 2023. 11. 21. 21:00

Objective

  1. OS의 다양한 구조를 알 수 있다.
  2. OS가 어떻게 설치되고 부팅되는지 알 수 있다.

Operating System Design and Implementation

운영체제의 설계와 구현.

운영체제를 개발하는 방법론은 존재하지 않는다. But, 몇몇의 성공적이라고 증명된 접근법이 존재.

OS는 하드웨어와 시스템 유형에 영향을 받는다.

*시스템 유형 : Batch, Timesharing, Single User, Multi User, Distributed, Realtime 등.

Goals

  1. User Goals : 사용하기 편하고, 배우기 쉽고, 안정적이고, 안전하고 속도가 빨라야한다.
  2. System Goals : 설계와 구현, 유지 보수가 쉬워야하고, 유연하고 안정적이고, 오류가 없고 효율적이여야한다.

중요한 원칙 : Policy와 Mechanism을 분리해야한다.

  • policies : What will be done ⇒ 무엇을 할 것인가.
  • Mechanisms : How to do Something ⇒ 어떻게 할 것인가.

Policy와 Mechanism을 분리하는 것은 최대한의 유연성을 제공한다.

여담 😃

옛날에는 Operating System을 Assembly로 구현했지만 기술이 발전하여 여러가지 장점이 있는 High-Level Language로 OS를 개발하기 시작했다. C, C++ 이나 PERL, Python등 다양한 언어를 통해서 OS를 구현하고 있다.(LINUX가 그러하다)

Assembly Language가 아닌 High Level Language로 개발된 최초의 OS는 MIT에서 개발된 Master Control Program이다. Master Control Program은 Burroughs Computer에서 동작하는 OS이며 ALGOL, MULTICS, PL/1 이라는 언어를 사용하여 개발되었다.

LINUX와 Windows의 Kernel은 주로 C로 개발이 되었다. Device Driver, Register의 상태를 저장하고 복구하는 부분은 Assembly로 개발이 되었고 그 외의 부분은 C로 개발이 되었다.

운영체제 개발 시 High-Level Language(우리가 아는 그 언어들)???

  • 장점 : 개발속도가 빠르다. Compact 하다. 이해하기 쉽고 Debugging이 쉽다.
  • 단점 : 속도가 느리고 저장공간을 많이 차지한다.

→ 기술의 발전으로 하드웨어의 처리속도가 증가하고 저장공간이 커짐에 따라 단점이 극복되었고, High-Level Language를 사용하여 운영체제를 개발하게 되었다.

OS Structure

Simple Structure

  • MS-DOS ( DOS : Disk Operating System)굉장히 메모리가 작아 Module화 되어있지 않았다.——— Resident System Program —————— ROM BIOS Device Driver ———⇒ Interface가 존재하지 않았다.
  • 이렇게 계층구조로 나뉘어져 있었지만 메모리가 작아 Application이 하드디스크, 디바이스에 직접 접근할 수 있었다.(ROM BIOS Device Driver로 바로 접근할 수 있는 별도의 Path가 존재했다.)
  • ——— MS-DOS Device Driver ———
  • ——— Application Program ———
  • 1980년대 최초의 운영체제.

Layered Approach

OS가 계층구조로 나뉘기 시작했다.

Layer0 : Hardware / Layer1 : Device Driver / .... LayerN : User Interface

Layer(n+1)에서는 Layer(n)의 기능을 이용하여 새로운 기능을 만들지만

Layer(n)에서는 Layer(n+1)에서 정의된 기능을 가져올 수 없다❗

  • UNIXSystem Call Interface
    Kernel ⇒ 혼자 할일이 너무 많아요‼️ 😭
    Physical Hardware
    이렇게 KernelSystem Call Interface와 Physical Hardware사이에 존재하며 여러 기능을 수행한다.
    • 단점
    • Kernel에 너무 많은 기능이 들어있어 기능간 연관성과 종속성이 커진다. ⇒ 한 기능을 수정하면 그 기능에 엮인 많은 기능에 영향을 미친다.
  • Kernel 단 하나의 층에서 CPU Scheduling, File System, Memory Management등의 기능을 제공한다.
  • UNIX의 핵심은 Kernel + System Program이다.
  • Micro Kernel System많은 기능이 Kernel에서 User로 이동했고 User Module간에 Message Passing방식을 사용한다.단점 : Module과 Kernel사이에 Overhead가 발생한다.
  • *Overhead : 어떤 일을 처리하기 위해 들어가는 간접적인 처리시간 ➕ 메모리 자원 (낭비)
  • 장점 : 확장성 👍 , 안정성 👍 , 이식성 👍 , 보안👍
  • → Kernel이 핵심 기능만 갖도록 축소되었다.

Modules.

요즘 나오는 운영체제들은 전부 Modules 구조를 사용한다.

  • 객체지향형 방식
  • 기능별 분리
  • Message Passing 방식을 사용하여 Module간 통신
  • 필요할 때 Kernel에서 각 모듈을 불러올 수 있다.
  • Layer구조와 비슷하지만 더 Flexible → 유연하다.

*요즘 나오는 운영체제는 하나의 운영체제 구조만 사용하는 것이 아닌 여러 구조를 합쳐서 사용한다. → Hybrid Systems

Virtual Machine

하드웨어 위에 가상화 + 가상화 위에 운영체제

  • 왜? → 옛날에는 컴퓨터 하나가 너무 비싸서 컴퓨터 하나를 여러개로 나누고 싶었다.
  • 물리적인 컴퓨터 자원이 가상머신을 통해서 여러개의 논리적 컴퓨터로 나누어진다.
  • CPU Scheduling : 각각의 User가 CPU를 하나씩 소유한 것 처럼 CPU를 가상으로 분리한다.
  • Spooling and a File System : 하드 디스크도 가상으로 쪼개진다.
  • 심지어 모니터도 쪼개서 여러 사용자가 사용 가능.
  • Virtual Machine개념은 다른 Virtual Machine들을 Isolate시키기 때문에 Protection을 제공한다.

VMWare

클라우드 컴퓨팅에서 핵심적인 기술이다.

운영체제 위에 VMWare 프로그램을 올리고, 그 위에 운영체제를 올리는 것.

Java Virtual Machine

OS위에 Java Interpreter가 존재하여 OS에 영향을 받지않고 Java를 실행시킬 수 있다.

Operating System Generation(설치)

운영체제는 보통 특정 기계에서 동작하도록 설계된다. 즉, OS가 하드웨어의 정보를 수집할 필요가 있다.

SYSGEN이라는 프로그램이 하드웨어에 대한 정보를 수집한다.

ROMBootstrap Program이 설치되고 Bootstrap Program이 컴퓨터 실행 시 시스템을 초기화 하고 Kernel을 메모리에 올려 실행시킨다 → Booting

System Boot

1단계를 거치는 과정 : Bootstrap Loader가 kernel이 어디있는지 파악하여 Memory에 올리고 Kernel을 실행한다.

2단계를 거치는 과정 : 고정된 저장장소에 저장된 Boot Block이 Bootstrap Loader를 실행시킨다. Bootstrap Loader가 위의 과정을 진행한다.

*Bootstrap Loader는 Chip자체에 저장되어있는 Firmware이다.

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

Processes(1)  (0) 2023.11.24
운영체제 2강 연습문제  (0) 2023.11.21
Operating System Structures (1)  (0) 2023.11.20
운영체제 1강 연습문제  (1) 2023.11.20
Operating System Instruction (2)  (1) 2023.11.20