[운영체제] #1 Introduction

또상·2022년 5월 13일
0

Operating System

목록 보기
1/13
post-thumbnail

운영체제

  • 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로, 사용자와 다른 소프트웨어를 하드웨어와 연결해준다.
  • 좁은 의미 : 커널 - 운영체제의 핵심 부분으로 메모리에 상주하는 부분.
  • 넓은 의미 : 커널 + 각종 주변 시스템 유틸리티
  • 🦕 운영체제 = 커널 + (미들웨어) + 시스템 프로그램
  • 🦕 OS가 아닌 것 : 응용 프로그램

목적

  1. 사용자가 HW 를 몰라도 편리하게 접근할 수 있는 환경을 제공하고
  2. 컴퓨터 시스템의 자원(CPU, RAM, I/O ...)을 효율적(최대한의 성능을 내면서 특정 사용자나 프로그램에 불평등이 발생하지 않도록)으로 관리한다.
    ex) 실행중인 프로그램에 CPU 를 번갈아 할당 / 메모리 공간을 적절히 분배



분류 기준

동시 작업 가능 여부

  1. 단일 작업 (single tasking)
  • 한번에 하나의 작업만 처리
    ex) MS-DOS
  1. 다중 작업 (multi tasking)
  • 동시에 두개 이상의 작업 처리
    -> CPU를 누구에게 줄지 고민 필요.
  • 현대의 OS 는 모두 가능하다. Windows, UNIX, Mac OS ...

🦕 컴퓨터 시스템 구조

  • 코어 : 명령을 실행하고 로컬로 데이터를 저장하기 위한 레지스터를 포함하는 구성 요소

1. 단일 처리기

  • 단일 처리 코어를 가진 하나의 CPU 사용
  • 장치별 프로세서를 따로 사용한다.
    ex) 디스크 스케쥴링은 디스크 컨트롤러 마이크로 프로세스가 담당

2. 다중 처리기 MultiProcessor

  • 단일 코어 CPU 가 있는 두 개 이상의 프로세서를 사용
  • 처리량이 올라간다! (오버헤드로 인해 프로세스 개수와 성능이 정비례 하는 것은 아님)
  1. SMP (Symmetric Multiprocessing)

  • 독립적인 레지스터와 캐시를 가지고, 메모리를 공유하는 시스템.
  • 많은 프로세스를 동시에 실행할 수 있으나 각 프로세서가 독립적이라 하나는 노는데 하나는 과부하가 걸릴 수 있음.
    • 특정 자료구조를 공유해서 피한다.
  • 자원을 여러 프로세서에 동적으로 공유할 수 있고, 프로세서 간 작업 부하가 덜걸림
  1. 같은 프로세스 칩에 코어 여러개

  • N개의 코어는 N개의 CPU 처럼 보인다.
  • 코어를 효율적으로 사용할 수 있게 프로그램을 개발해야함.
  • CPU 를 추가하면 성능이 좋아하긴 하는데, 시스템 버스에 대한 경합 현상이 일어날 수 있음.

많은 시스템에서 다중 코어 SMP 를 사용한다

  1. NUMA (Non-Uniform Memory Access)

  • 각 CPU 에게 독립적인 메모리 공간을 제공.
    • 로컬 메모리 엑세스가 빠르고 경합도 없다.
  • 모든 CPU가 공유 시스템으로 연결되어서 모든 CPU 가 하나의 물리적인 주소 공간을 공유한다.
    • 연결을 통해 원격 메모리에 접근할 때, 성능이 떨어질 수 있다.
  1. 블레이드 서버
  • 다수의 처리기 보드, I/O 보드, 네트워킹 보드를 하나의 섀시 안에 장착한 시스템이다.
  • 여러 독립적인 멀티 프로세서 시스템으로 구성된다.

3. 클러스터형 시스템

  • 여러개의 CPU
  • 여러 독립적인 시스템이나 노드를 연결해서 구성한다.
    • 일반적으로 각 노드는 다중 코어 시스템
  • 노드들은 저장장치를 공유하고, LAN 이나 고속 상호 연결망으로 연결된다.

높은 가용성 을 가진다.

  • 하나의 노드가 망가져도 다른 노드가 해당 작업을 수행하게 됨. (결함 허용)
  • 남아있는 하드웨어의 성능에 따라 작업을 수행. (graceful degradation)
    1. 비대칭형 클러스터링
    • 다른 컴퓨터가 응용 프로그램을 수행하는 동안, 하나의 컴퓨터가 긴급 대기 모드로 활성 서버를 감시하다가 서버가 고장나면 본인이 활성 서버가 되어서 작업을 이어 수행한다.
    1. 대칭형 클러스터링
    • 둘 이상의 호스트가 응용 프로그램을 실행하고 서로를 감시한다.
    • 고장나면 한쪽이 나머지 작업을 이어서 수행.
    • 여러 개의 응용 프로그램이 실행되는 환경에서 효율적.

고성능 계산 환경에 사용한다.

  • 병렬화 기법을 이용함.
    • 문제를 여러개로 쪼개서 각 프로세서에 나눠주고, 각 프로세서가 낸 결과를 합쳐서 최종 결과를 내는 방식.
    • 빠르게 결과를 낼 수 있음.

+) 병렬 클러스터링

  • 여러 호스트가 공유 저장장치 내의 동일한 데이터에 접근
  • 동시 접근으로 인한 문제가 발생하지 않도록 접근 제어, 잠금 기법 제공이 필요하다. (Distributed Lock Manager, DLM)

+) WAN 을 이용한 클러스터링

+) SAN (Storage-Area Network)

  • 를 통해서 아주 멀리 있는 클러스터 노드를 연결하거나,
  • 한 클러스터 내의 수천개의 노드를 가질 수 있게 되었다.
  • SAN 내에 있는 임의의 호스트에서 수행될 수 있도록 배정하기 때문.
  • 호스트들이 같은 DB 를 공유할 수 있어서 성능과 신뢰성이 좋다.

사용자의 수

  1. Single User : MS-DOS, Windows
  1. Multi User : UNIX, NT Server
  • 1대에 컴퓨터에 터미널을 이용해서 여러명의 사용자가 접근할 수 있다.
  • 보안과 같은 문제에도 신경써야 함.



처리방식

일괄처리 (Batch Processing)

  • 작업 요청을 일정량 모아서 한번에 처리한다.
  • 작업이 완전 종료될 때까지 기다려야 한다.
    ex) Punch Card System

시분할 (Time Sharing)

  • 일정한 시간 단위로 분할하여 여러 작업에 사용.
    • 넘겨줘야 하는 데드라인이 있긴 하나 우리가 사용하는 시스템은 대부분 데드라인을 어겨도 심각한 문제가 발생하진 않는 시스템이다.
  • 짧은 응답 시간
  • interactive
    ex) UNIX

실시간 (Realtime OS)

  • 정해진 시간 안에 어떤 일이 반드시 종료되는 것이 보장되어야 하는 실시간 시스템을 위한 OS
    ex) 원자로... 미사일... 반도체...
  • 다시 Hard Realtime OS, Soft Realtime OS 로 나뉜다.



용어 정리

  • Multitasking : 여러 작업을 수행 중
  • Multiprogramming : 여러 프로그램이 메모리에 올라가 있음
  • Time Sharing : CPU의 시간을 분할해서 사용
  • Multiprocess : 하나의 컴퓨터에 CPU 가 여러개. -> 우리 수업에선 다루지 않는다.

전부 컴퓨터에서 여러 작업을 동시에 수행한다는 뜻이긴 한데 약간씩 다름.


구조

  • CPU 스케줄링은 CPU 가 너무 빨라서 고민하는 문제고
  • 디스크 스케줄링은 헤드가 느려서 고민하는 문제
  • I/O 는 느림.. CPU 는 빠름. -> interrupt 를 사용한다.

입출력 관리 (공룡책 1장)
프로세스 관리 (공룡책 2, 3장)
메모리 관리 (공룡책 4장)
파일 관리 (공룡책 5, 6장) + 디스크 스케줄링

실제 코드, 보안 등... (7, 8, 9, 10 장)



참고 / 출처

반효경 교수님의 2014 운영체제 1. Introduction 강의를 듣고 포스팅하고,
공룡책을 읽고 추가 정리합니다.

profile
0년차 iOS 개발자입니다.

0개의 댓글