해당 글은 쉽게 배우는 운영체제의 내용을 요약, 정리한 글입니다.

운영체제 소개

운영체제의 필요성

메모리, CPU등이 향상되고, 여러 작업을 동시에 할 수 있는 컴퓨팅 환경이 조성되어 사용 규칙이 필요해 졌다.
이러한 규칙을 운영체제라고 하며, 복잡한 작업 환경에서 운영체제가 없으면 기계를 망가뜨릴 수도 있다.

운영체제가 없어도 컴퓨터는 작동하지만, 새로운 기능을 구현하려면 매번 회로를 변경해야 하는 데다 복잡한 기능은 구현하기 어렵다.

운영체제가 없는 기계는 다른 기능을 추가하거나 성능을 향상시킬 수 없다.
운영체제가 있는 기계는 새로운 기능의 추가나 성능의 변경이 가능하여 성능 및 효율성의 향상을 꾀할 수 있다. 이를 프로그래밍 가능한 기계라고 부른다.

운영체제는 자원 관리의 역할도 한다.많은 응용 프로그램들이 사용하려는 자원을 관리하는 중재가의 역할을 한다. 또한, 악의적인 응용프로그램으로부터 컴퓨터 자원을 보호하기도 한다.

운영체제의 정의

사용자가 하드웨어를 사용하고자 한다면 운영체제를 통해야만 한다.
운영체제는 응용 프로그램이나 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공한다.
또한, 모든 컴퓨터 자원을 숨긴다. 때문에 하드웨어에 대한 모든 책임을 맡고 있는 운영체제를 거치지 않고서는 하드웨어에 접근할 수 없다.

운영체제의 역할

자원 관리

여러 응용 프로그램들이 키보드, 네트워크카드, 사운드카드 등의 컴퓨터 자원을 사용하고자 할때 운영체제는 이러한 자원을 나누어주어 원활하게 작업할 수 있게 돕는다.

자원 보호

악의적인 사용자나 미숙한 사용자로부터 자원을 보호해야 한다. 고의가 아니더라도 응용 프로그램이 다른 영역을 침범하여 데이터를 지울 수 있다. 이러한 비정상적인 작업으로부터 컴퓨터 자원을 지켜야 한다.

하드웨어 인터페이스 제공

복잡한 과정 없이 다양한 장치를 사용할 수 있도록 해주는 하드웨어 인터페이스를 제공한다.
운영체제는 CPU, 메모리 등의 다양한 하드웨어를 일관된 방법으로 사용할 수 있게 지원하기 때문에, 어떤 회사에서 만든 하드웨어인지 신경 쓸 필요가 없다.

사용자 인터페이스 제공

사용자가 운영체제를 편리하게 사용하도록 지원하기 위한 것.
그래픽 사용자 인터페이스(GUI)를 제공하여 마우스로 작업을 수행한다.

운영체제의 목표

효율성

자원을 효율적으로 관리한다. 적은 자원을 사용하여 결과를 빨리 보여주는 것이 효율적인 운영체제이다.

안정성

운영체제는 하드웨어 전체를 관리한다. 운영체제는 응용 프로그램의 안전 문제와 하드웨어적인 보안 문제를 처리할 수 있어야 하며, 시스템에 문제가 발생했을 때 이전으로 복구하는 결함 포용 기능을 수행해야 한다.

확장성

다양한 시스템 자원을 추가하거나 제거하기 편해야 한다.

편리성

사용자가 편리하게 작업할 수 있는 환경을 제공해야 한다.
응용 프로그램과 사용자에게 다양한 편리성을 제공하면서도 자원의 낭비 요소를 막아야 한다.

운영체제의 역사

초창기 컴퓨터(1940년대)

최초의 컴퓨터의 애니악은 전선을 잭에 꼽아 회로를 연결하여 구성했다.
키보드, 마우스, 모니터와 같은 주변장치가 없었다. 18000개의 진공관을 전선으로 연결하여 프로그램을 만들었는데, 이렇게 전선을 연결하여 논리회로를 구성하는 것을 하드와이어링이라 한다.

일괄 작업 시스템(1950년대)

진공관과 전선으로 만들어진 논리회로를 아주 작은 크기로구현한 IC를 사용하였다.
CPU와 메인 메모리가 있었지만, 입력장치나 출력장치는 없었다. 대신 천공카드 리더를 입력장치로, 라인 프린터를 출력장치로 사용했다.
천공카드 리더를 사용하는 경우 프로그램만 바꾸면 다른 작업이 가능했다.
한번에 한 가지 작업만 가능했으며, 이러한 시스템을 일괄 작업 시스템이라 한다.

대화영 시스템(1960년대)

키보드와 모니터가 등장했다. 기존의 일괄 작업 시스템은 작업의 최종 결과만 얻을 수 있었다. 중간에 새로운 값을 입력하거나 데이터를 변경하는 것이 불가능했고, 무언가 문제가 있어도 최종 결과로만 확인할 수 있었다.
하지만 키보드와 모니터가 개발되어 중간에 사용자가 입력을 하거나 사용자에게 중간 결과값을 보여줄 수 있게 되었다.
이러한 시스템은 사용자의 대화를 통해 작업이 이루어지므로 대화형 시스템이라고 부른다.

사분할 시스템(1960년대 후반)

컴퓨터의 크기가 작아지고 계산 능력이 향상되었다. 자원을 효율적으로 사용하기 위한 다중 프로그래밍 기술이 개발되었다.
CPU사용 시간을 아주 잘게 쪼개어 여러 작업에 나누어 준다. 이렇게 여러 작업을 조금씩 처리하여 작업이 동시에 이루어지는 것처럼 보이게 하는 것을 시분할 시스템이라고 한다.
단점은, 중요한 작업이 일정 시간 안에 끝나지 않을 수 있다. 원자력이나 미사일을 제어하는 시스템은 심각한 문제가 발생할 수 있으므로, 실시간 시스템을 사용한다.

분산 시스템(1970년대 후반)

개인용 컴퓨터가 등장하고, 인터넷이 등장했으며, 운영체제 시장이 급속히 커졌다.
개인용 컴퓨터와 인터넷이 보급되면서 값이 싸고 크기가 작은 컴퓨터들을 하나로 묶어 대형 컴퓨터에 버금가는 시스템을 만들게 되었다. 이를 분산 시스템이라 한다.

운영체제의 구조

커널과 인터페이스

커널은 운영체제의 핵심적인 기능을 모아놓은 것이다.
인터페이스는 커널에 사용자의 명령을 전달하고 실행 결과를 알려주는 역할을 한다.

시스템 호출과 디바이스 드라이버

시스템 호출은 커널이 자신을 보호하기 위해 만든 인터페이스이다. 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원제 직접 접근하는 것을 차단한다.
시스템 호출은 커널이 제공하는 시스템 관련 서비스를 모아놓은 것이며, 함수 형태로 제공된다.
print함수처럼 사용자가 문자를 출력하는 위치 등을 정해 주지 않아도 쉽게 화면에 출력할 수 있다.

드라이버는 커널과 하드웨어의 인터페이스이다. 각 하드웨어의 특성은 하드웨어 제작자가 가장 잘 알고 있어 하드웨어 제작자가 드라이버 소프트웨어를 만드는 것이 유리하다.

커널의 구성

단일형 구조 커널

초창기의 운영체제 구조, 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성된다.
모듈간의 통신 비용이 줄어 효율적인 운영이 가능하다.
하지만 버그나 오류를 처리하기 어려우며, 작은 결함이 시스템 전체로 확산될 수 있다.

계층형 구조 커널

단일형 구조 커널이 발전된 형태로, 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층간의 통신을 통해 운영체제를 구현하는 방식이다.
버그나 오류를 쉽게 처리할 수 있으며, 디버깅하기 쉽다.
오늘날의 운영체제는 대부분 이 구조로 이루어져 있다.

마이크로 구조 커널

가장 기본적인 기능만 제공한다. 각 모듈은 세분화되어 존재하고, 모듈간의 정보 교환은 프로세스 간 통신을 이용하여 이루어진다.
각 모듈은 독립적으로 작동하기 때문에 하나의 운영체제가 실패해도 전에 운영체제가 멈추지 않는다.

가상머신

호환성이 떨어지는 언어는 다른 운영체제와는 호환성이 떨어진다. 유닉스도 버전이 다양해지면서 유닉스 운영체제끼리도 호환되지 않는 경우도 있다.
이를 해결한 언어가 자바이며, 운영체제 위에 가상머신을 만들고 그 위에서 프로그램이 작동하도록 하였다.
가상머신을 사용하면 호환성이 높아지지만 응용 프로그램이 가상머신을 통해서만 작동하기 때문에 느려진다.

profile
코린이

0개의 댓글

Powered by GraphCDN, the GraphQL CDN