Posts OS 서론 (Introduction)
Post
Cancel

OS 서론 (Introduction)

Preview Image

공룡책(10판) Chapter 1 요약

지난번에 이어 전반적으로 맛을 보는 단계이다. 우선은 가볍게 보자.


운영체제가 할 일 _ What Operation Systems do

컴퓨터 시스템은 하드웨어, 소프트웨어 및 데이터로 구성되어 있으며, 운영체제는 컴퓨터 시스템이 동작할 때 소프트웨어 간의 하드웨어 사용을 제어하여, 유용한 작업을 할 수 있는 환경을 제공한다.

운영체제의 역할을 이해하기 위해 다음과 같은 관점이 있다.

  • User View; 사용자 관점

목표는 사용자가 수행하는 작업의 최적화 하는것으로 자원의 이용 효율보다는 사용의 용이성을 위해 설계된다.

  • System View; 시스템 관점

운영체제를 자원 할당자 (Resource Allocator) 로 보아 자원에 대한 많은 요청에 대해서 효율적으로 자원을 할당할 수 있도록 결정한다. 제어 프로그램 (Control Program) 으로의 역할로 컴퓨터의 부적절한 사용 방지를 위해 사용자 프로그램의 수행을 제어한다.

- 운영체제의 정의

운영체제의 보편적 정의로는 컴퓨터에서 항상 실행중인 프로그램으로 커널(Kernel)이라고 할수 있고, 운영체제에는 어플리케이션 프로그램 개발을 쉽게 하고 기능을 제공하는 미들웨어 프레임워크와 시스템을 관리하는데 도움을 주는 시스템 프로그램이 포함된다.


컴퓨터 시스템의 구성 _ Computer-System Organization

현대 범용 컴퓨터 시스템은 하나 이상의 CPU와 각 구성요소, 공유 메모리 사이의 엑세스를 제공하는 공통 버스를 통해 연결된 장치 컨트롤러로 구성된다. 운영체제에는 각 장치 컨트롤러마다 장치 드라이버가 있으며, 이는 장치 컨트롤러의 작동을 알고 있고 운영체제에 장치에 대한 인터페이스를 제공한다. CPU와 장치 컨트롤러는 병렬로 실행되어 메모리 사이클을 놓고 경쟁한다.

- 인터럽트 _ Interrupts

장치 컨트롤러에 입력이 발생하면, 이 이벤트는 시스템 버스(System bus)를 통해 CPU로 전달된다. 이를 인터럽트(Interrupt, 방해)라고 하며, 인터럽트가 발생하면 CPU는 하던 일을 중단하고 메모리의 고정된 위치를 찾는데, 여기에는 인터럽트 서비스 루틴이 저장되어 있다. 이 주소의 배열이 인터럽트 벡터(interrupt vector) 이다. CPU는 서비스 루틴을 실행 완료 후 인터럽트되었던 연산을 재개한다.

interrupts

  • 인터럽트 구동 사이클
  1. 장치 컨트롤러가 인터럽트 요청 라인에 신호를 선언하여 인터럽트 발생 (raise)
  2. CPU는 인터럽트를 포착(catch)하여 인터럽트 핸들러로 디스패치(dispatch)
  3. 핸들러는 장치를 서비스하여 인터럽트를 지움(clear)

컴퓨터에는 인터럽트 벡터의 주소보다 많은 장치가 있기도 하고 동시에 많은 인터럽트가 발생할 수 있으므로, 이 문제를 해결하기 위한 기법으로 인터럽트에 우선순위를 둔다. 우선순위가 높은 인터럽트가 실행을 선점한다.

- 저장장치 구조 _ Storage Structure

  • 부트스트랩(Bootstrap) 프로그램

전원을 인가하였을 때 cpu가 가장 먼저 읽어야할 명령어들의 집합 프로그램으로, RAM이 아닌 ROM에 저장된다. 운영체제, 커널을 로딩하는 역할을 수행한다.

  • 폰 노이만 아키텍처의 instruction-execution cycle
    1. 명령어 집합(프로그램) 을 메모리에 로딩
    2. 메모리에 있는 명령어를 cpu가 fetch 하여 실행(execute)

메인 메모리(Random-Access Memory, RAM)는 프로그램과 데이터를 영구 저장하기에는 작고, 휘발성으로 전원이 공급되지 않으면 내용이 소실된다. 하여 대부분의 컴퓨터 시스템은 보조저장장치를 제공한다.

저장장치 시스템(Storage System) 은 용량과 속도에 따라 계층으로 구분하며 아래로 갈수록 용량이 크고 속도가 느리다.

  • 저장장치 시스템(Storage System)
    1. Register : 휘발성, 1차 저장장치
    2. Cache : 휘발성, 1차 저장장치
    3. Main Memory : 휘발성, 1차 저장장치
    4. SSD : 비휘발성, 2차 저장장치
    5. HDD : 비휘발성, 2차 저장장치
    6. Optical Disk (광학디스크) : 비휘발성, 3차 저장장치
    7. 자기테이프 : 비휘발성, 3차 저장장치

- 입출력 구조 _ I/O Structure

dma

인터럽트 구동 I/O (Input/Output) 의 형태는 소량의 데이터를 이동하는데는 적합하나 비휘발성 저장장치의 다량 데이터 이동에는 부적합하여 직접 메모리 액세스 (Direct Memory Access, DMA)가 사용된다. CPU의 개입 없이 장치가 직접 데이터 블록을 송수신하며 전송이 완료될 때 인터럽트가 발생한다. 전송 작업하는 동안 CPU는 다른 작업을 수행할 수 있다.


컴퓨터 시스템 구조 _ Computer-System Architecture

폰 노이만 아키텍처를 따르는 범용 컴퓨터 시스템은 다시 범용 처리기 (프로세서, Processor)의 수에 따라 다양한 방식으로 구분된다.

- 단일 처리기 시스템 _ Single-Processor Systems

옛날에는 단일 처리 코어를 가진 단일 프로세서를 사용하였다. 코어(Core)는 명령을 실행하고 로컬에 데이터를 저장하기 위한 레지스터를 포함하는 처리기의 구성요소이다. 하나의 메인 CPU가 있고 각 디스크, 키보드, 그래픽 컨트롤러와 같은 장치별로 제한된 명령어만 수행하는 프로세서가 탑재된다. 현대 컴퓨터 시스템은 잘 안씀.

- 다중 처리기 시스템 _ Multi-Processor Systems

가장 많이 쓰이는 컴퓨팅 환경. 다중 처리기 시스템을 통해 처리량 증가를 기대할 수 있다. 허나 프로세서가 작동하면서 오버헤드 및 경합, 병목이 발생하여 효율이 저하될 수 있다. 일반적으로 SMP (Symmetric Multiprocessing) 을 사용한다. 각 CPU 프로세서는 개별 로컬 캐시 및 자체 레지스터가 있으나 시스템 버스를 통해 물리 메모리를 공유하는 구조이다.

core

칩 내부 통신에 대한 속도 이득과 전력 이득을 도모하기 위하여 다중 코어 시스템으로 발전했다. 거의 모든 시스템은 다중 코어를 사용한다. 이 설계에는 L1 캐시, L2 캐시를 두어 메모리에 접근한다.

multicore

다중 처리기 시스템에 CPU를 추가하면 성능은 향상되지만 확장성이 좋지 않고 많이 추가하면 경합, 병목으로 성능이 저하된다.

  • NUMA (Non-Uniform Memory Access) : 모든 CPU가 공유 시스템 연결로 하나의 물리 주소 공간을 공유한다. 확장성을 가질 수 있다.

  • 블레이드 서버 : 다수의 처리기 보드 및 입출력, 네트워킹 보드들이 하나의 섀시 안에 장착되는 형태로 동작, 각각의 보드가 자신의 운영체제를 수행한다.

- 클러스터형 시스템 _ Clustered Systems

통상 독집적인 다중 코어 시스템들이 약결합(loosely coupled) 하여 구성된다. 이들은 저장장치를 공유하고 근거리 통신망(Local Area Network, LAN) 등으로 연결된다. 높은 가용성(availability)를 제공하기 위한 것으로 하나 이상의 컴퓨터 시스템이 고장 나더라도 서비스를 계속 제공할 수 있다. 하나의 클러스터가 다수의 컴퓨터 시스템이 네트워크로 연결되어 구성되므로 고성능 계산환경을 제공할 수도 있다.

  • 병렬(Parallel) 클러스터 : 여러 호스트가 공유 저장장치의 동일 데이터에 접근할 수 있다. 충돌 방지를 위하여 분산 잠금 관리자 (Distributed Lock Manager, DLM) 기능이 포함되어 있다.
  • 스토리지 전용 네트워크 (Storage-Area Network, SAN) : 여러 호스트를 여러 저장장치에 부착할 수 있다. 많은 호스트가 동일한 데이터베이스 및 어플리케이션을 공유하기에 성능과 신뢰도를 보장한다.


운영체제의 작동 Operation-System Operations

부트스트랩 프로그램이 운영체제 커널을 메모리에 적재하여 실행하면 시스템과 사용자에게 서비스를 제공할 수 있다.

- 다중 프로그래밍, 멀티태스킹 _ Multiprogramming and Multitasking

운영체제의 가장 중요한 측면은 다중 프로그래밍, 멀티태스킹이다. 한번에 둘 이상의 프로그램을 실행하여 CPU 이용률을 높이고 사용자 만족도를 높인다. 다중 프로그램 시스템에서 실행 중인 프로그램을 프로세스(Process) 라고 한다. 여러 프로세스가 동시에 메모리가 유지되는 상태에서 하나의 프로세스가 대기하는 경우 CPU는 다른 프로세스로 전환하여 처리하고, 대기를 마치면 다시 돌려받아 처리한다. 멀티태스킹은 다중 프로그래밍의 논리적 확장으로 프로세스의 전환 작업을 매우 신속하게 전환하여 사용자에게 빠른 응답 시간을 제공한다. 이를 위해 CPU 스케줄링으로 병행 프로세스를 실행할 때 효율을 챙길 수 있고 응답 시간 보장을 위해 가상 메모리를 활용할 수 있다.

- 이중 모드, 다중 모드 운용 _ Dual-Mode and Multimode Operation

multicore

운영체제와 사용자는 시스템 하드웨어 및 소프트웨어 자원을 공유하기에 잘못된 프로그램으로 다른 프로그램이나 운영체제가 잘못 실행되지 않도록 안정적 작동을 보장해야 한다. 이를 위해 독립된 두 가지 연산 모드가 필요하다. 이는 Mode bit로 구분된다.

  • 커널 모드 (Kernel Mode) : Mode bit 0
  • 사용자 모드 (User Mode) : Mode bit 1

악영향을 미칠 수 있는 일부 명령을 특권 명령(Privileged Instruction) 으로 지정하여 운영체제, 사용자를 보호한다. 특권 명령은 커널 모드에서만 수행할 수 있고, 사용자 모드에서 특권 명령을 수행할 경우 하드웨어는 수행하지 않고 운영체제에게 트랩을 걸어, 오류 메시지와 함께 비정상적으로 프로그램을 종료시킨다. 시스템 콜(System Call) 을 수행하여 커널 모드의 기능을 호출할 수 있다.


자원 관리 _ Resource Management

운영체제는 자원 관리자로써 CPU, 메모리, 파일 저장 공간, I/O장치 등을 관리한다.

  • 프로세스
  • 메모리
  • 파일 시스템
  • 대용량 저장장치
  • 캐시
  • 입출력 시스템

상세 내용은 나중 챕터에서 후술 예정.


보안과 보호 _ Security and Protection

컴퓨터 시스템이 정의한 자원에 의해 프로그램, 프로세스, 자원의 접근을 제어하는 기법(보호)과 내 외부의 공격을 방어(보안)할 수 있는 방법을 제공한다. 운영체제의 대부분은 식별자를 통해 사용자를 구분하며, 추가로 그룹 식별자를 사용하기도 한다. 때때로 제한된 장치에 접근하여야 할 때 권한 상승이 필요 할 수 있으며 운영체제는 이 방법 또한 제공한다. 프로세스는 유효 사용자 식별자(Effective User ID)를 이용하여 수행된다.


가상화 _ Virtualization

가상화란 단일 컴퓨터 하드웨어를 여러 실행 환경으로 추상화하여 실행할 수 있게 하는 기술이다. 이 환경은 다른 개별 운영체제로 볼 수 있으며, 가상 머신을 사용한다. 호스트 운영체제에서 게스트 운영체제의 복사본을 활용할 수 있으며, 이 때 게스트 운영체제를 수행하고 자원을 관리, 각 게스트를 서로로부터 보호하는 역할은 가상 머신 관리자 (Virtual Machine Manager, VMM)가 수행한다. 동시에 여러개의 OS를 사용할 수 있다.


분산 시스템 _ Distributed Systems

물리적으로 떨어져 있는 이기종 컴퓨터들의 집합으로, 네트워크를 통해 구성된다. 네트워크는 거리에 따라 근거리 (LAN), 광역 통신망 (WAN), 도시권 (MAN) 이 있고 블루투스와 같은 단거리 통신망 (Personal-Area Network, PAN) 이 있다. 네트워크 운영체제는 다른 컴퓨터, 다른 프로세스가 메시지를 교환할 수 있도록 하는 통신 체계 및 파일 공유 기능을 제공한다.


커널 자료구조 _ kernel Data Structures

운영체제의 구현에는

  • List, Stack, Queue 와 같은 각 원소가 직접 접근할 수 있는 배열
  • 데이터의 서열을 표시할 때 사용하는 Tree
  • 데이터의 산술 연산을 수행하여 하나의 수를 반환하는 해시 함수
  • n개의 항의 상태를 나타낼 때 사용 가능한 n개의 이진 비트 문자열인 Bitmap 등을 사용한다.


계산 환경 _ Computing Environments

  • 전통적
  • 모바일
  • 클라이언트&서버(대표적 web)
  • p2p(N대N 통신)
  • 클라우드 컴퓨팅(엣지 컴퓨팅)
  • 실시간 내장형 시스템 Realtime Embedded System (RTOS : 구동을 위한 os)


아직까지는 훑는 단계..!

This post is licensed under CC BY 4.0 by the author.

OS 스터디를 시작하기 전에..

OS 구조 (Operating System Structures)