개인용 컴퓨터의 윈도우 혹은 Mac
대형 컴퓨터에는 유닉스, 리눅스
모바일에는 애플의 IOS, 구글의 안드로이드가 대표적
컴퓨터와 스마트폰뿐만 아니라 MP3 플레이어, 내비게이션, 스마트 TV 등에도 운영체제가 있는데 이를 임베디드 운영체제(embedded operating system) 이라고 한다.
사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어
사용자가 하드디스크의 특정 위치에 직접 저장하려고하면 기존 데이터와 섞여서 엉망이 될 것이므로, 사용자가 요청하면 대신 하드디스크에 데이터를 저장하거나 꺼내준다.
운영체제는 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공하고 그 결과를 돌려준다.
응용 프로그램이나 사용자에게 모든 컴퓨터 자원을 숨기고, 정해진 방법으로만 컴퓨터 자원을 사용할 수 있도록 제한한다.
하드웨어에 대한 모든 책임을 맡고 있는 운영체제를 거치지 않고는 하드웨어에 접근할 수 없다.
자원 관리
자원 보호
하드웨어 인터페이스 제공
사용자 인터페이스 제공
최초의 컴퓨터인 애니악,
백열전구 같은 모양의 진공관이라는 소자를 사용하여 진공관이 켜지면 1, 꺼지면 0 으로 판단해서 2진법을 사용하는 계기가 되었다.
초기의 컴퓨터에는 키보드, 마우스, 모니터와 같은 주변장치가 없어 진공관을 전선으로 연결한 것이 오늘날의 프로그램을 대신하였다. 이렇게 전선을 연결하여 논리회로를 구성하는 것을 하드와이어링 방식이라고 했다.
전선으로 논리회로를 구성했으므로 다른 계산이나 수식을 사용하려면 전선을 다시 연결해야 하는 단점이 있었다.
이때는 운영체제가 없었다.
기술 발전을 거쳐 IC(Integrated Circuit) 이라는 칩으로 만들어지게 되었다. 진공관과 전선으로 만들어진 논리회로를 아주 작은 크기로 구현한 것으로, 현대적인 모습의 컴퓨터가 탄생했다.
미약하나마 CPU(Central Procenssing Unit)과 메인 메모리가 있었으나 키보드와 같은 입력장치, 모니터와 같은 출력장치가 없었다.
천공카드 리터(punch card reader)를 입력장치로, 라인 프린터(line printer)를 출력 장치로 사용했다.
매우 불편하지만 현대적인 프로그래밍을 가능하게 해주었으나 당시에는 한번에 한 가지 작업만 할 수 있었다.
이러한 시스템에서는 작업에 필요한 모든 작업을 한꺼번에 처리해야 하고, 프로그램 실행 중간에 사용자가 데이터를 입력하거나 수정하는 것이 불가능했다.
위와 같은 시스템을 일괄 작업 시스템(batch job system) 또는 일괄 처리 시스템(batch processing system)이라고 부른다.
작기는 하지만 운영체제가 사용되었기 때문에 메인 메모리가 운영체제의 상주 영역과 사용자의 사용 영역으로 나뉘어져 있었다.
윈도우 운영체제가 사용하는 파일 중 부팅 시 읽는 *.bat 이라는 파일의 bat 확장자가 batch job을 뜻한다. 즉 운영체제가 시작할 때 한꺼번에 처리해야 할 작업을 모아놓은 것이다.
키보드와 모니터가 등장했다. 이로 인해 작업 중간에 사용자가 입력을 하거나 사용자에게 중간 결과 값을 보여줄 수 있게 되었다. 중간 결과 값을 출력하여 프로그램에 이상이 있는지 혹은 프로그램이 정상적으로 진행되고 있는지도 확인할 수 있게 되었고, 입력값에 따라 작업의 흐름을 바꾸는 것도 가능해졌다
컴퓨터와 사용자의 대화를 통해 작업이 이루어지므로 대화형 시스템(interactive system)이라고 일컫었다.
대화형 시스템으로 문서 편집기, 게임과 같은 다양한 종류의 응용 프로그램을 만들 수 있게 되었다.
허나 일괄 작업 시스템은 입출력이 거의 없어 작업 시간을 예측할 수 있지만, 대화형 시스템의 경우 작업 시간을 예측하기 어려웠다. (입력과 출력이 얼마 만에 완료될지 모르기 때문)
컴퓨터의 크기가 작아지고 계산 능력이 향상되었다. 하지만 몇몇 사용자만 사용할 수 있는 데다가 가격이 비쌌는데 이 비싼 기계로 하나의 작업만 수행하는 것은 낭비라고 생각되었다.
효율적으로 사용하기 위한 연구가 진행된 결과 멀티 프로그래밍(multi programming) 기술이 개발되었다. 하나의 CPU로 여러 작업을 동시에 실행할 수 있는 기술로, 한 번에 하나의 작업 가능한 일괄 작업 시스템에 비해 효율성이 뛰어났다.
CPU를 공동으로 사용하면 작업이 끊겨 보일 텐데 다중 프로그래밍 시스템에서는 여러 작업이 동시에 실행되는 것처럼 보인다. 이는 시간을 분할하는 방법 때문이다.
여러 작업을 조금씩 처리하여 작업이 동시에 이루어지는 것처럼 보이게 하는 것을 시분할 시스템(time sharing system)이라고 한다.
CPU 사용 시간을 잘게 쪼개어 작업들에 나누어 주어서 모든 작업이 동시에 처리되는 것처럼 보이는데 이때 나뉜 시간 한 조각을 타임 슬라이스(time slice) 혹은 타임 퀀텀(time quantum)이라고 한다.
오늘날의 컴퓨터는 대부분 시분할 시스템을 사용한다.
단점으로는 여러 작업을 동시에 처리하기 위한 추가 작업이 필요한데 시스템 내에 많은 양의 작업이 공존하는 경우, 중요한 작업이 일정 시간 안에 끝나는 것을 보장하지 못한다. 이를 위한 다양한 해결 방법이 있다.
시분할 시스템에서 동시에 실행되는 작업의 개수를 멀티프로그래밍 정도라고 하며 일괄 처리시스템은 그 수준이 1이고 CPU가 3개의 작업을 한다고하면 그 수준이 3이라고 할 수 있다.
시분할 시스템에서 여러 작업을 동시에 실행할 수 있다는 것은 한 사람이 여러 프로그램을 동시에 실행할 수 있다는 의미이기도 하고, 여러 사람이 동시에 작업할 수 있다는 의미이기도 하다.
즉 시분할 시스템은 하나의 컴퓨터에서 여러 명이 작업할 수 있는 다중 사용자 시스템을 가능하게 했다.
이 시기에 C 언어로 유닉스를 개발했다.
스티브 잡스가 최초의 개인용 컴퓨터(Peronal Computer)인 애플2를 발표했다.
이 시기에는 소프트웨어도 급속도로 발전해서 운영체제 시장이 급속히 커졌다. 애플의매킨토시와, 마이크로소프트의 MS-DOS가 많이 사용되었다.
인터넷이 등장한 시기이기도 하다. 미국의 ARPA(Advanced Research Project Agency)는 서로 호환되지 않는 LAN(Local Arena Network)를 하나로 묶기 위한 연구를 했는데 그결과로 아르파넷(ARPAnet)이 만들어 졌고, 이게 대중에게 개방되면서 컴퓨터 간의 네트워킹을 위한 TCP/IP(Transmission Control Protocol / Internet Protocol) 라는 프로토콜을 정의했다. 오늘날의 인터넷은 이때 정의된 TCP/IP 를 사용하여 통신하는 것이다.
개인용 컴퓨터와 인터넷이 보급되면서 값이 싸고 크기가 작은 컴퓨터들을 하나로 묶어 대형 컴퓨터에 버금가는 시스템을 만들었는데 이를 분산 시스템(distribute system)이라고 부른다.
네트워크상에 분산되어 있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교환하도록 구성한 시스템이다.
분산 시스템은 시스템에 참가하는 모든 컴퓨터가 동일한 지위이기 때문에 컴퓨터가 고장 나거나 추가되면 작업을 분해하고 결과를 모으기가 어렵다.
클라이언트/서버 시스템은 이러한 문제를 해결하는 기술로, 작업을 요청하는 클라이언트와 거기에 응답하여 요청받은 작업을 처리하는 서버의 이중 구조로 나뉜다.
클라이언트/서버 구조가 알려진 것은 웹 시스템이 보급된 이후 일반인들에게 알려졌으며 인터넷을 사용하는 일반인이 급속도로 늘어나게 되었다.
단점으로는 서버 과부하가 있는데 요청이 서버로 집중되기 떄문에 수십만 명의 클라이언트를 처리하기 위해서는 많은 서버와 큰 용량의 네트워크가 필요하다.
서버의 부하를 줄일 수 있는 새로운 시스템으로 P2P 시스템(Peer-to-Peer system)이 만들어 졌다. 서버를 거치지 않고 사용자와 사용자를 직접 연결한다는 뜻으로 서버가 파일 검색만 맡고 사용자 간에 파일 전송이 이루어져 서버의 부하가 적다는 것이 장점이다.
미국의 냅스터, 우리나라에는 소리바다가 만들어졌지만 저작권 문제로 불법 소프트웨어로 규정되어 사용이 금지되었다.
메신저 프로그램에 도입되면서 큰 발전을 이루었는데 수만 명이 동시에 채팅을 하고 파일을 주고 받는 메신저 시스템은 클라이언트/서버 구조로 만들 수 없으며, P2P 기술을 이용하면 서버의 부하 없이 구현할 수 있다.
사용자 인증과 인가 및 필수 정보에 관한 것만 서버에서만 받고, 이런 절차가 완료되면 사용자 간에 직접 채팅을 하거나 데이터를 전달하는 것이다.
이외에도 그리드 컴퓨팅, 클라우드 컴퓨팅, 사물 인터넷 등이 발전하였다.
참조하는 책 및 사이트
쉽게 배우는 운영체제