[운영체제] Intro

유니야·2023년 1월 3일

운영체제(OS)

목록 보기
1/5

✏️ 운영체제 (OS, Operating System)

  • 정의

    컴퓨터 하드웨어 위에 설치되어 다른 사용자 및 모든 소프트웨어와 하드웨어를 연결하는 프로그램

ex) Windows 10, Linux, Mac OS

하드웨어 대신 응용 프로그램 및 I/O Device를 제어 (모니터, 마우스, 키보드 등)
프로그램 ⇒ 컴퓨터 하드웨어에게 특정 업무를 수행하도록 하는 명령어의 집합

  • 컴퓨터를 구성하는 시스템
    하드웨어, 운영 체제, 각종 소프트웨어, 사용자

컴퓨터 = 정보를 처리하는 기계
정보 = 불확실한 상황을 정의해서 수치로 표현한 것

커널 (Kernel)
운영 체제의 핵심.
컴퓨터의 전원이 켜지면 항상 메모리에 상주하는 프로그램. 좁은 의미의 운영 체제는 커널 자체를 말한다.

  • 부트 스트랩 (bootstrap)
    컴퓨터를 시작할 때 가장 처음 시작되는 프로그램

메모리에 운영체제, 즉 커널을 로딩하는 일을 담당

이후는 커널이 다른 응용 프로그램을 제어한다

⇒ 컴퓨터를 켠다는 의미의 부팅(Booting)은 커널을 로딩(loading)함으로써 컴퓨터를 시작하는 것. 시스템의 파워가 켜지면 처음 부트스트랩(bootstrap) 프로그램이 위치한 메모리에서 실행이 시작된다.

✏️ OS의 특징

  • 동시 작업 가능 여부
    • 단일 작업 (Single Tasking) 한 번에 한 작업만 가능한 운영 체제. 한 명령이 끝나기 전까지 다른 명령을 수행할 수 없다
    • 다중 작업 (Multitasking) 동시에 두 작업 이상 처리가 가능한 운영체제
  • 사용자의 수
    • 단일 사용자
    • 다중 사용자
  • 처리 방식
    • 일괄 처리 (Batch Processing) 작업을 일정량 모아 한 번에 처리하는 방식. 작업이 완전히 종료될 때까지 기다려야 한다
    • 사분할 (Time Sharing) 현대 컴퓨터가 사용하는 방식으로, 여러 작업 수행 시 컴퓨터 처리 능력을 일정 시간 단위로 분할하여 사용 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
    • 실시간 (Real Time OS) 정해진 시간 안에 어떤 일이 반드시 종료되어야 하는 시스템을 위한 OS

✏️ 컴퓨터 시스템의 구조

컴퓨터는 1개 이상의 CPU와 장치 컨트롤러(Device Controller)들로 구성되어있다. 그리고 이들끼리 공통 버스(Common Bus)로 연결되어 메모리를 공유한다.

각 장치 컨트롤러에는 로컬 버퍼가 있는데, CPU는 메모리와 각 장치의 로컬 버퍼 사이에서 데이터를 이동시킨다. 장치 컨트롤러는 CPU에 인터럽트 (Interrupt) 를 발생시킴으로서 작업이 끝났음을 알린다.

✏️ Interrupt

신호를 보내 이벤트의 발생을 알리는 것

컴퓨터는 여러 작업을 동시에 수행하다 기존 작업을 잠시 중단해야 할 때 인터럽트 신호를 보내고, 인터럽트를 처리한 뒤 다시 기존 작업으로 돌아온다.

  • 인터럽트의 종류
    1. Program
      • 트랩 (Trap) 소프트웨어에 의해 발생한 인터럽트
        • 예외 (Exception): 프로그램이 오류를 범한 경우
        • System Call: 프로그램이 커널 함수를 호출하는 경우
    2. Timer
    3. I/O
    4. Hardware failure
  • 인터럽트 벡터 (Interrupt Vector)
    인터럽트를 처리할 수 있는 모든 서비스 루틴의 주소를 저장하고 있는 공간
    인터럽트는 인터럽트 된 명령어의 주소를 저장한 뒤, 인터럽트 벡터를 통해 제어권을 인터럽트 핸들러(Interrupt Handler, OS의 일부)로 넘겨준다.

✏️ 기억 장치(Stroage)

커널은 실행기(Executor)를 통해 프로그램을 실행시킨다. 실행기는 기억장치(Stroage)에서 실행 파일을 가져오고, 커널은 이를 메인 메모리에 할당해 실행시킨다.

메인 메모리는 CPU가 유일하게 직접 접근할 수 있는 큰 저장 공간이다. 그러나 메인 메모리는 용량이 작고 휘발성 메모리이기 때문에, 용량이 크고 비휘발성인 보조 기억 장치(Secondary Stroage)가 필요하다

  • 휘발성 기억 장치: 메인 메모리, 캐시, 레지스터
  • 비휘발성 기억 장치: 자기 테이프(Magnetic Tapes), 광학 디스크(Optical Disk), 자기 디스크(Magnetic Disk), SSD(Soli-State Disk)

캐싱(Caching)

  • 빠르고 작은 저장 장치인 캐시(Cache)를 이용해 컴퓨터의 속도를 높이는 기술
  • 데이터를 디스크에서 직접 가져오는 것이 너무 느리기 때문에 캐시에 자주 사용되거나 최근 사용된 데이터를 담아두고, CPU나 디스크가 캐시의 데이터를 참조할 수 있도록 한다
  • 지역성(Locality)의 원리
    • 시간 지역성(Temporal Locality)
      한 번 접근한 데이터에 다시 접근할 확률이 높다
    • 공간 지역성(Spatial Locality)
      특정 데이터와 가까운 메모리 주소에 있는 다른 데이터에도 접근할 가능성이 높다
  • DMA(Direct Memory Access)
    장치와 메모리를 직접 연결하는 방식

장치의 데이터를 처리하기 위해 CPU를 거쳐 메모리에 로드하는 방식을 사용하면 인터럽트가 과도하게 발생해 CPU자원이 너무 많이 소모되는데, DMA를 통해 이를 해소할 수 있다
DMA방식은 메모리에 버금가는 속도로 입출력 장치가 데이터를 이동시키며, 장치 컨트롤러에 의해 장치 데이터가 블록 단위로 직접 메모리에 전달되고 CPU에서는 데이터 이동이 완료되었다는 블록 당 한 번의 인터럽트만 발생하므로 효율적이다.

✏️ Computer System Architecture

  1. Single-Processor System
    과거의 컴퓨터 시스템. 하나의 메인 CPU만 탑재된 시스템
  2. Multi-Processsor System
    현대 컴퓨터 시스템. 2개 이상의 프로세서를 가지고 있으며 각 CPU는 각자의 레지스터와 캐시를 가지고 있다
  3. Multicore Design
    하나의 칩에 코어를 늘리는 것. 이러한 멀티 프로세서 시스템을 멀티 코어라고 부른다. 동일한 성능의 CPU 여러 개를 1개의 칩 속에 넣어둔 것으로 보면 된다.
  4. Clustered System
    멀티 프로세서 시스템의 일종으로 여러 CPU를 모아놓은 구조. 클러스터 컴퓨터들이 하나의 저장소를 공유하고 이를 네트워크로 연곃한 시스템을 말한다.
    - 비동기식 클러스터링(Asymmetric Clustering)
    하나의 서버가 작업을 수행하고 다른 서버들은 모니터링하면서 대기하는 구조
    - 동기식 클러스터링(Symmetric Clustering)
    동시에 작업을 수행하면서 서로를 모니터링하는 구조

✏️ Operating System Architecture

1. Multiprogramming
여러 프로그램을 메모리에 로드해두고 한 프로세스가 대기 상태가 되면 다른 프로세스의 작업을 수행하는 시스템. CPU는 한 번에 한 작업만 수행할 수 있고, 한 사용자가 CPU와 I/O 장치를 오래 사용 못 하도록 작업 스케줄링 (Job Scheduling)을 통해 작업들이 선택되고 수행된다.
여러 프로그램이 메모리에 로드되어 있어 CPU가 쉬는 비효율을 제거하기 위해 사용된다.

2. Time sharing (Multitasking)
멀티 프로그래밍에서 더 확장된 시스템.
프로세스마다 작업 시간을 정해두고 번갈아가면서 작업하는 방식이다.
프로세스 간 CPU를 빠르게 전환함으로서 CPU의 시간을 분할하여 나누어 쓰는 것에 중점을 둔다.

프로세스(Process)
각 사용자마다 실행 중인, 메모리에 올라와 있는 프로그램

✏️ Operating System Operation for Protection

운영체제는 사용자와 컴퓨터 자원을 공유하기 때문에 사용자 프로그램이 오류를 일으키거나, 부정확한 프로그램이 임의로 하드웨어에 접근해 인터럽트를 보내 다른 프로그램을 부정확하게 실행하는 문제 등을 방지해야 한다.
1. Dual-Mode Operation
운영체제는 사용자 프로그램이 마음대로 시스템에 접근해 다른 프로그램이나 OS에 피해를 주지 못 하도록 모드를 나누어서 보호한다. 하드웨어가 제공하는 Mode bit를 통해 현재 모드를 확인할 수 있다.

  • 유저 모드(User Mode)
  • 커널 모드(Kernel Mode)

특권 명령(Previleged Instruction)
: 커널 모드일 때만 실행될 수 있는 명령문으로, 보안을 해칠 수 있는 중요한 명령문이다. 하드웨어는 커널 모드일 때만 특권 명령을 실행한다. 만약 유저 모드에서 실행되는 경우 하드웨어가 운영체제에 오류임을 알린다.
유저 모드에서 커널 모드의 기능을 호출하고 싶다면 System Call이라는 인터페이스를 이용해야 한다.

2. I/O Protection
모든 I/O 명령문은 특권 명령문으로, 모든 사용자 프로그램은 커널 모드에서 제어를 얻을 수 없다.

3. Memory Protection
인터럽트 벡터와 인터럽트 핸들러는 반드시 Memory Protection을 제공해야 한다.

4. Timer
특정 주기마다 인터럽트를 발생시키는 기능이다. 이를 통해 사용자 프로그램이 제어권을 운영체제에 넘겨주지 않는 상황을 방지한다. 주로 Time sharing 구현 및 현재 시간을 계산할 때 사용한다.

0개의 댓글