본문 바로가기

운영체제

운영체제(Operating System) 개요

728x90
반응형

Goal

  • 운영체제가 무엇인지 간단하게 설명할 수 있다.
  • 운영체제의 구조에 대해 그림으로 설명할 수 있다.
  • 운영체제를 이루고 있는 핵심 요소에 대해 그 역할을 설명할 수 있다.

운영체제(OS, Operating System)란?

사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템 자원을 효율적으로 관리하는 시스템 소프트웨어이다.

 

운영체제는 컴퓨터 사용자, 하드웨어, 소프트웨어 사이의 중재자로서 인터페이스를 제공한다.

=> 컴퓨터 운용을 위해 총괄 감독 역할을 수행

 

하드웨어 ↔ 운영 체제 ↔ 셸 / 응용 프로그램 ↔ 사용자

 

운영체제 종류

Windows, Mac OS, Unix, Linux, Android, iOS 등

 

운영 체제의 주요 목적

 

1. 효율적인 자원 관리

  • 같은 자원으로 더 많은 작업량을 처리
  • 같은 작업량을 처리하는 데 보다 적은 자원을 사용
  • 적당한 순서로 자원을 배분하고 적절한 시점에 자원을 회수하여 여러 응용 프로그램이 사용할 수 있게 해준다.

 

2. 자원 보호 => 안정적인 컴퓨터 시스템 환경 조성

  • 사용자가 자원에 직접 접근하는 것을 막음으로써 자원을 보호
  • 악의적인 응용 프로그램으로부터 컴퓨터 자원을 보호
  • 시스템 운영에 치명적인 문제가 발생할 수 있으므로, 중요 자원을 숨긴다.
  • 사용자가 직접 접근은 못하지만, 자원을 이용할 수 있도록 적절한 인터페이스를 제공 => (자원 보호 + 편의성)

 

3. 사용자와 시스템간의 편리한 인터페이스를 제공

  • 장치를 일관된 방법으로 사용할 수 있도록 하드웨어 인터페이스를 제공
  • 그래픽 사용자 인터페이스(GUI)를 제공함으로서, 사용자에게 편의성을 제공

운영체제의 구조

커널(Kernel)

운영체제의 '핵심'이 되는 프로그램으로, 항상 메모리에 상주한다.

프로세스 관리, 메모리 관리, 장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것이 커널이다.

Kernel

 

커널의 역할

  • 보안 : 하드웨어와, 프로세스의 보안을 책임진다.
  • 자원 관리 : 한정된 시스템 자원을 효율적으로 관리. ex) 프로세스 스케줄링
  • 추상화 : 운영체제의 복잡한 내부를 감추고 깔끔하고 일관성 있는 인터페이스를 하드웨어에 제공하기 위해 몇가지 하드웨어 추상화들로 구현된다. 

 

*하드웨어 추상화(Hardware Abstraction)

같은 종류의 장비에 대한 공통 명령어 집합

 

*추상화 계층(abstraction layer)

특정한 집합의 기능의 자세한 부분을 숨기는 한 방법

ex) 하드웨어 추상화 계층, OSI 7-Layer

 

*하드웨어 추상화 계층(HAL, Hardware Abstraction Layer)

하드웨어와 소프트웨어 사이의 추상화 계층으로,

하드웨어의 차이를 숨겨서 응용 프로그램이 작동할 수 있는 일관된 플랫폼을 제공한다.

HAL은 드라이버에 의지한다.

 

셸(shell)

'껍데기'라는 단어로, 커널을 감싸고 있는 프로그램이다.

쉘은 커널 사용을 위한 인터페이스 제공해준다.

 

운영체제는 커널과 인터페이스(Shell)를 따로 분리하여,

같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작할 수 있다.

 

Shell 분류

  • 명령 줄 셸 : 명령 줄 인터페이스(CLI, Command Line Interface)를 제공
  • 그래픽 셸 : 그래픽 사용자 인터페이스(GUI, Graphic User Interface)를 제공

<참고>

Shell은 좀 더 넓은 의미에서 어떤 프로그램을 감싸고 있는 요소이다.

 

Shell의 역할

 

시스템 콜(System Call)

커널 서비스를 이용하기 위한 요청으로, 커널에 직접 접근하는 것을 막는다.

시스템 콜은 커널 접근을 위한 인터페이스 역할을 수행한다.

 

보통 C나 C++과 같은 고급 언어로 작성된 프로그램들은 직접 시스템 콜을 사용할 수 없기 때문에 고급 API를 사용한다.

 

드라이버(Driver)

하드웨어나 장치를 제어하기 위해 커널의 일부분으로 동작하는 프로그램

응용 프로그램과 커널의 인터페이스가 시스템 호출이라면, 하드웨어와 커널의 인터페이스는 드라이버가 담당한다.

 

Kernel 인터페이스


용어 정리

더보기

*컴퓨터 시스템(computer system)

하드웨어, 운영 체제 및 컴퓨터 작동에 필요한 모든 것

 

*시스템 자원(system resource)

컴퓨터 시스템을 운용하기 위해 필요한 장치 및 데이터

ex) 프로세스, 소켓, 메모리, 가상 메모리, 장치, 파일, CPU 등

 

*그리드 컴퓨팅(grid computing)

필요한 컴퓨팅 자원을 구매하여 사용하는 컴퓨팅 환경

분산 시스템읜 한 분야로, 서로 다른 기종의 컴퓨터들을 묶어 대용량의 컴퓨터 풀(computer pool)을 구성

 

*SaaS(Software as a Service)

그리드 컴퓨팅이 하드웨어적인 컴퓨팅 환경의 통합이라면, SaaS는 사용자가 필요할 때 소프트웨어 기능을 이용하고 비용을 지불하는 개념이다. 필요 기능을 모아 서버에서 실행하고 사용자는 해당 기능에 대한 서비스를 제공받는다.

 

*클라우드 컴퓨팅(cloud computing)

클라우드(인터넷)을 통해 가상화된 컴퓨터의 시스템리소스를 요구하는 즉시 제공(on-demand availability)하는 컴퓨팅 환경

그리드 컴퓨팅과 SaaS를 합쳐 놓은 형태이다.

자신의 컴퓨터가 아닌 클라우드(인터넷)에 연결된 다른 컴퓨터로 처리하는 기술

 

*API와 시스템 콜

API(Application Programming Interface)란?

응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.

주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.

 

API는 시스템 콜 보다 좀 더 광범위한 개념이다.

시스템 콜은 커널을 사용하기 위한 함수를 제공해주는 API의 일종이다.

 

API 예시

ex) Win32 API, DirectX, OpenGL

 

728x90
반응형