컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있는 환경을 제공하는 소프트웨어
운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로 동작하는 시스템 소프트웨어의 일종으로 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.
운영체제도 하나의 소프트웨어로서 전원이 켜짐과 동시에 메모리에 올라간다. 하지만 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 발생한다.
따라서 운영체제 중 항상 필요한 부분만 메모리에 올려놓고, 그렇지 않은 부분은 필요할 때 메모리로 올려서 사용하게 된다. 이 때 메모리에서 상주하는 운영체제의 부분을 커널(Kernel) 이라고 한다. 커널은 운영체제 코드 중에서 핵심적인 부분이다.
Windows
, Unix
, Linux
, MS-DOS
등이 있다.
주로 Windows
는 개인용, Unix
와 Linux
는 서버용 운영체제로 사용된다.
운영체제는 컴퓨터 하드웨어와 사용자 사이에 존재하며, 사용자가 직접 운영하기 힘든 하드웨어에 대해서 운영체제가 관리하기도 하고 사용자에게 편리한 인터페이스를 제공하는 역할도 한다.
컴퓨터 시스템 내의 자원을 효율적으로 관리한다.
- CPU, 메모리 및 주변 장치, 입출력 장치 등 하드웨어 자원과 소프트웨어 자원을 관리한다.
- CPU 스케줄링, 메모리, 파일, 입출력, 프로세스(생성,삭제,자원 할당 및 반환, 프로세스 간 통신) 등을 관리한다.
컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다.
사용자 및 프로그램들 간에 자원이 형평성 있게 분배되도록 균형자 역할을 한다.
동시 작업을 지원하는지 여부에 따라 단일 작업용 운영체제와 다중 작업용 운영체제로 나누어 볼 수 있다.
한 번에 하나의 프로그램만 수행시킬 수 있는 운영체제
DOS 환경에서는 하나의 프로그램이 수행되는 동안 다른 프로그램을 수행시킬 수 있는 명령어 입력 라인이 뜨지 않아 한 번에 하나만 작업할 수 있었다.
하나의 프로그램의 수행이 끝나기 전에 다른 프로그램을 수행시킬 수 있는 운영체제
최근에는 대부분의 운영체제가 다중 작업을 지원하고 있다.
다중 작업용 운영체제에서는 여러 프로그램이 CPU와 메모리를 공유하게 된다. 하지만 일반적으로 CPU는 하나밖에 없으며, 다중 작업용 운영체제라도 CPU에서는 매 순간 하나의 프로그램만이 수행된다.
이는 CPU의 처리속도가 워낙 빨라 수 ms 이내의 짧은 시간 간격으로 여러 프로그램이 CPU에서 번갈아 수행되기 때문에 여러 프로그램이 동시에 수행되는 것처럼 보이게 된다.
1. 시스템에 따른 분류
시분할 시스템 : CPU의 작업 시간을 여러 프로그램들이 조금씩 나누어 쓰는 시스템
다중 프로그래밍 시스템 : 메모리 공간을 분할해 여러 프로그램들을 동시에 메모리에 올려놓고 처리하는 시스템
다중처리기 시스템 : 하나의 컴퓨터 안에 CPU가 여러 개 설치된 시스템.
2. 다중 사용자의 동시 지원 여부에 따른 분류
단일 사용자용 운영체제 : 한 번에 한명의 사용자만이 사용하도록 허용하는 운영체제
다중 사용자용 운영체제 : 여러 사용자가 동시에 접속해 사용할 수 있게 하는 운영체제 (이메일 서버, 웹 서버, MS 윈도즈 등)
3. 작업을 처리하는 방식에 따른 분류
일괄 처리 : 작업 요청의 일정량을 모아서 한꺼번에 처리하는 방식. 따라서 모든 작업이 완전히 종료된 후에 결과를 얻을 수 있다. ⇒ 응답시간이 길다.
시분할 방식 : 여러 작업을 수행할 때 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식 ⇒ 일괄 처리 방식에 비해 짧은 응답 시간을 갖는다.
- 사용자의 요청에 대한 결과를 곧바로 얻을 수 있는 시스템을 대화형 시스템이라 부르며, 시분할 방식이 대표적인 예이다.
실시간 처리 : 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 시스템
시간 제약의 중요성에 따라 아래와 같이 두 가지로 나뉜다.
- 경성 실시간 시스템 : 주어진 시간을 지키지 못할 경우, 매우 위험한 결과를 초래할 가능성이 있는 로켓, 원자로 제어 시스템 등을 말한다.
- 연성 실시간 시스템 : 멀티미디어 스트리밍 시스템과 같이 데이터가 시간을 맞추어 전달되어야 올바른 기능을 수행할 수 있는 시스템. (위험한 결과를 초래하지는 않는다.)
https://github.com/WooVictory/Ready-For-Tech
https://coding-factory.tistory.com/300