운영체제의 개념과 구조

Koo·2023년 9월 6일
post-thumbnail

운영체제의 역할

  • 운영체제 - 컴퓨터 하드웨어를 관리하는 소프트웨어
  • 애플리케이션/사용자와 하드웨어의 중간다리 역할
  • 컴퓨터 시스템
    • 하드웨어
    • 운영체제
    • 응용 프로그램
      • compiler, assembler, text editor, database system ...
    • 사용자
  • 일반적인 정의
    • 항상 실행되고 있는 프로그램
    • 커널이라 부름
    • 커널이 시스템 프로그램과 응용 프로그램 사이의 매개역할을 해줌

컴퓨터 시스템 구성

폰 노이만 구조의 컴퓨터 시스템

  • CPU는 bus를 통해서 메모리, 외부 장치들과 연결
  • RF, 블루투스 등 무선으로도 연결이 가능
  • 운영체제가 제어를 해주어야 한다

bootstrap program

컴퓨터를 부팅한다 → bootstrap 한다는 의미

  • 전원을 켜면 CPU가 제일 처음으로 로딩해야 할 명령어는 0x00 또는 ROM에 저장해 놓음
  • 이 때 불러오는 프로그램이 bootstrap을 해주는 booting용 프로그램
  • bootstrap program은 하드디스크에 있는 운영체제를 메모리에 로딩해주는 역할을 수행

Interrupts

  • 키보드를 누르면 눌렀다는 것을 CPU에게 알려주어야 함
  • 하드웨어가 언제든 interrupt를 트리거할 수 있고,
  • I/O에서의 신호를 bus를 통해 CPU에 보내면, CPU가 이를 처리
  • Interrupt는 주변 장치와 CPU가 통신하는 방법

von Neumann Architecture

  • 명령어-실행 사이클을 가짐
    • 명령어를 memory로부터 fetch하여
    • 명령어 레지스터(instruction register)에 저장
    • 이후, cpu에서 명령어를 처리
  • 처리된 결과는 다시 메모리에 저장됨

저장매체

  • RAM은 빠르지만, 레지스터와 RAM 중간에 속도가 훨씬 빠른 Cache가 존재
  • main memory는 RAM을 의미
  • 위로 올라갈수록 속도가 증가
  • 아래로 내려갈수록 더 큰 용량의 데이터를 적은 비용으로 저장할 수 있음

I/O 구조

  • CPU가 쓰레드를 갖고 있는 상태에서 cache를 통해서 RAM에 접근
  • 주변기기는 CPU에 interrupt를 주고 데이터를 주고받음
  • DMA(Direct Memory Access)
    • CPU를 통하지 않고 디바이스와 디바이스가 직접 통신이 가능
    • ex) CPU를 거치지 않고 네트워크에서 받은 동영상을 바로 LCD패널에 띄움

컴퓨터 시스템 구성요소

  • CPU - 명령어를 실행하는 하드웨어
  • Processor - 하나 이상의 CPU를 갖는 물리적 칩
  • Core - 명령어 실행, 산술 및 논리 연산, 메모리 접근, 캐시 관리 등을 수행하는 다양한 기능 블록으로 구성
  • Multicore - 여러 개의 core를 갖는 CPU
  • Multiprocessor - 여러 개의 프로세서를 갖는 것

Symmetric MultiProcessing(SMP)

  • 프로세서가 여러 개 존재
  • 메모리는 한 개지만, CPU는 여러 개 존재
    • 각 CPU는 각각의 register와 cache를 가짐

Multi-core design

CPU를 여러 개 사용하는 것은 비용적인 부담이 큼
→ CPU 안에 여러 개의 core를 가짐

Multi-programming

  • program - 명령어의 집합
  • 이전에는 한 개의 프로그램만을 로딩하여 사용, 모두 사용한 후 다른 프로그램을 올려서 사용했음
  • Multi-programming은 여러 개의 프로그램을 메모리에 동시에 올리는 것을 의미함
  • CPU 사용 효율을 높일 수 있음

Multi-tasking(Multi-processing)

  • Multi-programming이 되면, 하나의 CPU를 이용해 여러 개의 작업을 처리할 수 있음
  • CPU는 매우 빠른 속도로 작업을 교체하며 수행 → time-sharing, concurrency

CPU scheduling

  • Multi-tasking을 하려면 scheduling이 필요
  • CPU 효율을 높이는 방법이 무엇인지

operation mode

  • 사용자 모드와 커널 모드를 가짐
  • 사용자는 시스템 콜을 이용해 운영체제에게 작업을 요청
  • 시스템 콜이 일어나면 커널 모드로 전환됨
  • 시스템 콜이 처리되면 다시 사용자 모드로 돌아감
  • 사용자 모드와 커널 모드를 분할하면 사용자가 하드웨어에 직접적으로 접근하지 못하기 때문에 잘못된 접근을 막을 수 있음

가상화

  • 하나의 컴퓨터 위에서 여러 개의 운영체제를 사용할 수 있음
  • VMM - Virtual Machine Manager
    • VMWare, XEN, WSL ...
  • 하드웨어와 운영체제 사이에 VMM을 두면 여러 개의 운영체제를 사용할 수 있음

컴퓨팅 환경

  • 컴퓨터 및 소프트웨어 시스템의 구성 요소와 설정을 통합하여 컴퓨터에서 작업하는 환경을 의미
  • 컴퓨터 및 네트워크 하드웨어, 운영 체제, 응용 프로그램, 라이브러리, 설정 및 사용자 환경과 관련된 모든 것을 포함
  • 사용자가 작업을 수행하고 소프트웨어 프로그램을 실행하는 데 필요한 모든 것을 제공
  • 종류
    • 일반적인 컴퓨팅 환경
    • 모바일 컴퓨팅 환경
    • 클라이언트-서버 환경
    • Peer-to-Peer 환경
    • 클라우드 환경
    • 실시간 임베디드 시스템 환경(Real Time Operating System, RTOS)
    • ...

운영체제가 프로그램에 제공하는 기능

  • UI
  • 프로그램 실행 → process와 thread
  • I/O 처리
  • 파일 시스템
  • 통신
  • 에러 탐지
  • 리소스 할당
  • 로깅
  • 보안

응용 프로그램과 운영체제가 상호작용하는가?

  • 시스템 콜을 이용해 운영체제와 상호작용
  • 시스템 콜 - OS의 API(Application Programming Interface)
  • 하나하나 시스템 콜을 하기 힘들기 때문에 함수를 이용해 시스템 콜을 사용함
    • Process Control, File Manipulation, Device Manipulation, ...
profile
스터디를 해보자

0개의 댓글