프로그래밍 입문

컴퓨터 운영체제

토픽 프로그래밍 입문

운영 체제(運營體制) 또는 오퍼레이팅 시스템(영어: Operating System, OS)은 시스템 하드웨어를 관리할뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다.

입출력과 메모리 할당과 같은 하드웨어 기능의 경우 운영 체제는 응용 프로그램과 컴퓨터 하드웨어 사이의 중재 역할을 한다. 운영 체제는 휴대 전화, 게임기에서부터 슈퍼컴퓨터, 웹 서버에 이르기까지 컴퓨터를 포함하는 거의 모든 장치에서 볼 수 있다.

잘 알려진 현대의 PC 운영 체제에는 마이크로소프트 윈도우, 맥 OS X, 리눅스가 있다.[3] 이 밖에 BSD, 유닉스 등의 PC용 운영 체제도 존재한다.

운영 체제는 실행되는 응용 프로그램들이 메모리와 CPU, 입출력 장치 등의 자원들을 사용할 수 있도록 만들어 주고, 이들을 추상화하여 파일 시스템 등의 서비스를 제공한다. 또한 멀티태스킹을 지원하는 경우, 여러 개의 응용 프로그램을 실행하고 있는 동안, 운영 체제는 이러한 모든 프로세스들을 스케줄링하여 마치 그들이 동시에 수행되는 것처럼 보이는 효과를 낸다.

 

종류

싱글태스킹 운영 체제 / 멀티태스킹 운영 체제

싱글 태스킹 운영 체제는 한번에 오직 하나의 프로그램만 실행할 수 있으나 멀티태스킹 운영 체제는 하나 이상의 프로그램이 동시에 실행할 수 있게 한다.  

단일 사용자 운영 체제 / 다중 사용자 운영 체제

단일 사용자 운영 체제는 사용자 구별이 없으나 여러 프로그램이 나란히 실행하는 것은 허용한다.[4] 다중 사용자 운영 체제는 디스크 공간과 같은 리소스와 프로세스를 식별하는 기능을 갖춘 멀티태스킹의 기본 개념을 확장하며, 여러 사용자에 속해 있으면서 여러 사용자가 동시에 시스템과 상호 작용할 수 있게 한다. 

 

구성요소

커널 : 운영체제의 가장 중요한 요소가 커널인데, 커널은 일반인이 일반적으로 보지 못하는 낮은 수준의 프로세스를 제어한다. 얼마나 메모리를 읽고 쓸 것인지, 어느 프로세스를 실행할 것인지, 모니터, 키보드, 마우스와 같은 장치를 통해 어떠한 정보를 주고받을 것인지, 네트워크를 통해 받은 정보를 어떻게 해석할 것인지를 제어한다.

사용자 인터페이스 : 컴퓨터 사용자가 직접 프로그램을 제어하고 사용할 수 있게 하는 운영 체제의 기능이다. 사용자 인터페이스는 아이콘과 바탕 화면을 지닌 그래픽이나 명령 줄을 지닌 문자를 이룰 수 있다.

API/Application : 응용 프로그램이 다른 프로그램과 상호 작용할 수 있게 하는 서비스와 코드 라이브러리가 한데 모여 있는 API와 컴퓨터 운영에 필수적인 여러가지 어플리케이션을 제공한다. 

 

목적

운영 체제의 중요한 목적은 이를테면 다음과 같다.

  • 사용자에게 컴퓨터의 프로그램을 쉽고 효율적으로 실행할 수 있는 환경을 제공한다.
  • 컴퓨터 시스템 하드웨어 및 소프트웨어 자원을 여러 사용자 간에 효율적 할당, 관리, 보호하는 것
  • 운영 체제는 제어 프로그램으로서 사용자 프로그램의 오류나 잘못된 자원 사용을 감시하는 것과 입출력 장치 등의 자원에 대한 연산과 제어를 관리한다.

시스템 구성

일반적인 응용 프로그램들을 제외한 컴퓨터 시스템은 개념적으로 세 개의 구성 요소로 구분하기도 한다. 그 세 부분은 운영 체제, , 그리고 (낮은 수준의) 필수 유틸리티들이다.

셸은 사용자가 시스템을 운용할 수 있게끔 해주는 기본적인 응용 프로그램이다. 이런 셸의 행동들은 결국 운영 체제에 명령을 내리는 일이 된다. bash 등의 이러한 셸은 그러나 엄밀히 운영 체제의 일부가 아니며 운영 체제 입장에서는 셸이나 필수 유틸리티들이나 모두 응용 프로그램일뿐 구별하지 않는다. 다만 이러한 구분은 사용자의 입장에서 필수적인 응용 프로그램이라는 뜻이다.

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

커널

 
커널이 응용 소프트웨어를 컴퓨터 하드웨어에 연결하고 있다.

펌웨어장치 드라이버의 도움을 받아 커널은 모든 컴퓨터 하드웨어 장치에 대한 가장 기초 수준의 제어권을 제공한다. 커널은 을 통해 프로그램을 위한 메모리 접근을 관리하며 어느 프로그램이 어느 하드웨어 자원에 접근할지를 결정하며 CPU의 동작 상태를 늘 최적으로 설정 및 초기화하고 디스크, 테이프, 플래시 메모리와 같은 매체의 파일 시스템을 갖춘 장시간 비휘발성 기억 장치를 위한 데이터를 정리한다.

프로그램 실행

운영 체제는 응용 프로그램과 하드웨어 사이의 인터페이스 역할을 한다. 운영 체제는 응용 프로그램 개발을 단순하게 하는 서비스의 집합이다. 프로그램을 실행하면 운영 체제가 프로세스를 만든다. 커널은 메모리와 다른 자원을 할당하여 프로세스를 만들며, 이로써 멀티태스킹 환경에서 프로세스에 대한 우선 순위를 확립하고, 메모리에 프로그램 코드를 적재하며 프로그램을 실행한다. 

운영 체제는 프로세스들을 생성하거나 삭제하고, 중단시키거나 재개시킨다. 프로세스 간의 동기화와 통신, 교착태 처리에 관한 메커니즘을 제공한다.

 

댓글

댓글 본문
  1. 준바이
    좋은 자료 감사합니다