운영체제의 개념, 구조

Junyeong Fred Kim·2022년 3월 22일
0

운영체제

목록 보기
27/27

운영체제란,

  • 컴퓨터 시스템을 운영하는 소프트웨어
  • 컴퓨터에서 계속 돌아가는 프로그램
  • 어플리케이션 프로그램에게 시스템 서비스를 제공하기 위함
  • 프로세스, 자원, 유저 인터페이스 등을 제공하는 역할
  • 컴퓨터의 하드웨어를 관리하는 소프트웨어

간단히 말하면, 컴퓨터에서 사용자가 편리하게 하드웨어 위에서 Application Program을 이용할 수 있도록 하드웨어 위에서 얹혀진 프로그램이라고 생각하면 된다.

운영체제 구조

1. 폰노이만 구조

먼저 운영체제 구조를 알아보기 전에, 컴퓨터의 토대를 이루고 있는 폰노이만 구조에 대해서 알아보자.

폰노이만 구조는 사람의 두뇌 동작방식에서 영감을 얻었다고 한다. 여러 기억(Memory)을 저장하고, 저장된 기억을 토대로 생각(연산)을 하는 방식.

왜 등장하였는가?

  • 폰노이만 구조 전에는, 컴퓨터 프로그램이 컴퓨터에 내장되어있지 않기 때문에 간단한 덧셈, 뺄셈 연산을 할 때에도 하드웨어 전선을 직접 조작해야 했다.
  • 폰노이만 구조 등장 후에는 프로그램과 데이터가 메모리 영역에 내장되기 때문에, 연산을 하기 위해서 메모리에 있는 프로그램과 데이터를 버스(Bus)를 통해서 전달하여 연산을 할 수 있게 되었다.

핵심 개념

  • 중앙처리장치 (CPU)
  • 메모리

CPU

  • 제어장치 (Control Unit)
    입출력 장치간 통신 및 조율을 제어
    - 명령어를 읽고 해석하여 데이터 처리를 위한 시퀀스 결정
  • 산술 논리 장치 (Arithmetic Logic Unit)
    - 덧셈, 뺄셈 같은 두 숫자의 산술연산과 배타적 논리합, 논리곱 같은 논리 연산을 계산하는 디지털 회로

메모리

  • 명령어 레지스터
    - 프로그램 명령어 (Instruction Set)이 저장된다.
    • 명령어 레지스터를 통해, 프로그램 코드를 해석하여 데이터 레지스터에서 필요한 데이터를 가져온다.
  • 데이터 레지스터

Bus

  • 메모리 영역의 프로그램과 데이터를 CPU로 전달해주는 역할을 한다.
  • CPU가 메모리 영역 -> 버스로부터 프로그램을 전달 받고, 실행하는 과정은 아래와 같다.
  1. fetch: CPU가 메모리에 저장된 명령어를 받아와 계산할 때, 메모리로부터 명령어를 가져온다.
  2. decode: 가져온 명령어를 해석한다.
  3. execute: 해석한 결과를 실행한다.
  4. store: 결과를 저장한다.

2. 멀티 프로그래밍

  • 메모리에 하나의 프로그램만 넣지 않고 동시에 여러개의 프로그램을 넣어서 여러 프로그램을 동시에 실행시키는 것
  • 메모리에 여러 프로세스를 동시에 실행시킴으로써 CPU 사용 효율이 올라간다.
  • 예를들어, 유튜브 동영상을 보면서 코딩을 할 수 있는 것.
  • 하나의 CPU에서는 여러가지의 task를 받아와서 처리하는데, 이 때 CPU가 시분할(Time-Sharing)을 통해서 여러개의 task를 효율적으로 처리한다. 이에 따라 사용자 입장에서는 동시에 실행된다고 느끼게 된다.
  • CPU 스케쥴링: 어떤 프로세스를 다음에 실행해야 효율이 올라가는가? 를 정하는 것

3. 운영(Operation)의 두가지 모드

1. User Process

  • 운영체제가 CPU를 유저모드로 전환시키는 경우는, 유저 프로그램이 실행중일 때이다. 이유는 유저 프로그램이 직접적으로 하드웨어에 연결됨을 막기 위해서이다.
  • User Mode 중 Kernel에 System Call을 호출하면 커널이 필요한 작업을 실행해주고, 다시 User Mode로 돌아온다. 이 역시, User Process에서 직접적으로 하드웨어와의 연결을 방지하기 위함이다.

2. Kernel

  • 운영체제의 핵심 부분으로, 시스템 자원을 관리하는 역할을 한다.
  • 어플리케이션과 하드웨어를 연결시켜주는 다리 역할을 한다.
  • 운영체제가 CPU를 커널모드로 전환시키는 이유는, 커널이 실행될 때인데, 이는 커널이 특정 운영을 실행시킬 수 있게 하기 위함이다.

커널의 역할 - 운영체제 서비스 제공

  • 유저 인터페이스 (UI)
  • 프로그램 실행
  • I/O operation
  • 파일 시스템 조작
  • 커뮤니케이션
  • 에러 디텍션 (탐지)
  • 자원 할당
  • 로깅
  • 보안

System Call

  • CLI, GUI는 사용자가 운영체제와 소통(Interface)하는 방식이라면, System Call은 Application이 운영체제와 소통하기 위한 방법이다.
  • 위에서 설명된 User Mode에서 System Call을 호출하는 것을 통해 알 수 있다.
profile
기억보다 기록

0개의 댓글