"운영체제"의 두 판 사이의 차이
잔글 |
잔글 (→같이 보기) |
||
109번째 줄: | 109번째 줄: | ||
{{운영체제|검토 필요}} | {{운영체제|검토 필요}} | ||
+ | {{정보통신}} |
2024년 11월 4일 (월) 00:40 기준 최신판
운영체제(運營體制)란 개인 PC, 스마트폰, 서버컴퓨터, 채굴기 등 각종 컴퓨터 운영에 필요한 하드웨어와 소프트웨어를 제어하고 관리하기 위해 기본적이고 공통적인 기능을 모아둔 시스템 소프트웨어를 말한다. 영어로 OS(Operating System, 오에스)라고 한다.
[아사달] 스마트 호스팅 |
목차
개요[편집]
초기의 컴퓨터들은 계산기처럼 단일 작업들을 수행하기 위하여 만들어졌다. 여러 프로그램들을 연속으로 자동 실행하여 처리 속도를 높일 수 있었던 레지던트 모니터와 같이, 1950년대에는 기본적인 운영체제의 기능들이 개발되었다. 운영체제는 1960년대 초까지만 하여도 현대의 운영체제와 같이, 더 복잡한 형태로 존재하지 않았다. 하드웨어 기능에 런타임 라이브러리, 인터럽트, 병렬 처리가 추가되었다. 개인용 컴퓨터가 애플, 아타리, IBM, 아마기와 같은 기업 덕택에 1980년대에 유명해졌다. 이 업체들은 한때 메인프레임과 미니 컴퓨터에 널리 쓰였던 운영체제 기능을 추가하였다. 나중에 그래픽 사용자 인터페이스와 같은 수많은 기능들이 개인용 컴퓨터 운영체제를 위해 개별적으로 개발되었다.
1950년대 초에 컴퓨터는 한 번에 하나의 프로그램만 실행할 수 있었다. 각 사용자는 컴퓨터만을 사용하여 예약된 시간에 천공카드와 테이프의 프로그램과 데이터에 접근하여야 했다. 프로그램이 컴퓨터에 적재되면 컴퓨터는 프로그램이 끝나거나 충돌을 일으킬 때까지 동작하였다. 토글 스위치와 패널 불빛을 이용하여 앞면 패널을 통해 프로그램을 디버깅할 수 있었다.
그 뒤에 나온 컴퓨터는 인간이 알아들을 수 있는 어셈블리어로부터의 기계어 발생이나 입출력과 같은 기능을 도와주기 위하요 사용자 프로그램을 연결해 놓은 소프트웨어 라이브러리와 함께 등장하였다. 이때가 바로 현대 운영체제의 탄생 시기이다. 그러나 여전히 컴퓨터는 한 번에 하나의 일만 할 수 있다.
종류[편집]
주요 운영체제[편집]
윈도우 |
유닉스 |
에이아이엑스 |
솔라리스 |
지엔유 |
- 윈도우(Windows) : 미국 마이크로소프트 회사가 만든 운영체제이다. '윈도' 또는 '윈도우즈'라고도 한다. 개인 PC 시장의 대부분을 장악했고 서버컴퓨터 시장에서도 상당한 시장을 차지했으나, 스마트폰 시장에서는 안드로이드와 iOS에게 밀려 시장점유율이 매우 낮다.
- 유닉스(UNIX) : 1969년 미국 AT&T의 벨 연구소에 근무하던 켄 톰슨과 데니스 리치가 개발한 오픈소스 기반의 운영체제이다. 유닉스를 기반으로 리눅스, AIX, BSD, 솔라리스, 안드로이드, iOS 등 다양한 운영체제가 개발되었다.
- 에이아이엑스(AIX) : 미국 IBM 회사가 만든 운영체제이다. '에이아이엑스'라고 읽는다. IBM P 시리즈와 IBM X 시리즈 서버컴퓨터에서 주로 사용한다.
- 솔라리스(Solaris) : 미국 썬 마이크로시스템즈가 개발한 유닉스 계열의 운영체제이다. 2010년 오라클이 썬을 인수한 후, 오라클 회사가 관리하고 있다.
- 도스(DOS) : 컴퓨터에서 파일을 읽고 쓰고 복사하고 삭제하는 등의 역할을 수행하는 운영체제이다. 미국 마이크로소프트의 MS-DOS 등의 제품이 있다.
- 지엔유(GNU) : 미국 리처드 스톨만이 유닉스 운영체제의 상용화에 반대하면서 만든 오픈소스 기반의 무료 공개 운영체제이다. GNU 운영체제를 기반으로 GPL, LGPL, GFDL 등 다양한 저작권 유형을 만들었다.
스마트폰 운영체제[편집]
안드로이드 |
아이오에스 |
타이젠 |
- 안드로이드(Android) : 2003년 앤디 루빈이 리눅스를 기반으로 만든 오픈소스 운영체제이다. 2005년 구글이 인수하여 전 세계에 무료로 보급하였다. 삼성전자㈜, LG, 화웨이, 샤오미 등 전 세계 스마트폰의 운영체제로 사용되고 있다.
- 아이오에스(iOS) : 스티브 잡스가 설립한 애플이 개발한 운영체제이다. '아이오에스'라고 읽는다. 아이폰, 아이패드, 아이팟, 애플TV 등에서 사용되고 있다. 2001년 개발 당시에는 OS X(오에스텐)이라고 부르다가 2010년 iOS로 이름을 변경했다.
- 타이젠(Tizen) : 삼성전자㈜와 인텔 등이 주도하여 구글의 안드로이드와 애플의 iOS에 대항하기 위해 만든 오픈소스 기반의 운영체제이다. 리눅스를 기반으로 개발했고, 삼성전자㈜의 스마트폰, 스마트 카메라, 스마트워치, 스마트 TV 등에 사용되고 있다.
리눅스 계열의 운영체제[편집]
리눅스 |
엑스윈도우 |
페도라 |
레드햇 리눅스 |
센트오에스 |
데비안 |
우분투 |
붉은별 |
- 리눅스(Linux) : 기존의 유닉스(Unix) 운영체제를 소형화하여 PC와 서버컴퓨터 등에서 사용하기 위해 만든 운영체제이다. 오픈소스 기반의 무료 소프트웨어이다.
- 엑스윈도우(X Window) : 1984년 미국 매사추세츠 공과대학교(MIT)에서 개발한 리눅스 계열의 운영체제이다. GUI 기반의 화려한 그래픽을 사용한다. 'X11' 또는 'X'라고도 한다.
- 페도라(Fedora) : 오픈소스 기반의 리눅스 운영체제이다. 페도라를 기반으로 레드햇 리눅스가 개발되었다.
- 레드햇 리눅스(RHEL) : 미국 레드햇이 만든 기업용 리눅스 운영체제이다. 무료 오픈소스이지만 기술지원은 유료로 제공되고 있다.
- 센트오에스(CentOS) : 레드햇 리눅스(RHEL)와 호환되는 오픈소스 기반의 무료 운영체제이다. '센토스'라고 읽기도 한다. 레드햇 리눅스를 포크하여 Red Hat 상표만 삭제하고 다시 컴파일하여 만든 리눅스 제품으로서, 레드햇 리눅스와 사실상 동일하게 작동한다. 다만 미국 레드햇 회사의 유료 기술지원을 받을 수 없다.
- 데비안(Debian) : 이안 머독이 개발한 오픈소스 기반의 리눅스 운영체제이다. 데비안을 기반으로 우분투가 개발되었다.
- 우분투(Ubuntu) : 남아프리카공화국 출신의 영국인인 마크 셔틀워스가 개발한 오픈소스 기반의 리눅스 운영체제이다. 우분투는 남아프리카의 반투어로 "네가 있기에 내가 있다"는 뜻으로서 '다른 사람에 대한 인간적 배려'를 의미한다. 기존의 데비안을 포크하여 개발했다.
- 붉은별(Red Star) : 북한의 조선콤퓨터중심(KCC)이 개발한 리눅스 기반의 운영체제이다. 페도라 리눅스를 참조하여 개발했다.
BSD 계열의 운영체제[편집]
비에스디 |
프리비에스디 |
티맥스오에스 |
- 비에스디(BSD) : 1977년 미국 버클리 대학교의 빌 조이가 주도하여 개발한 오픈소스 기반의 운영체제이다. 유닉스를 기반으로 개발했다.
- 프리비에스디(FreeBSD) : 미국 버클리 대학교에서 개발한 BSD 계열의 오픈소스 운영체제이다.
- 티맥스오에스(Tmax OS) : 한국의 ㈜티맥스소프트가 기존 FreeBSD 운영체제를 기반으로 개발 중인 운영체제이다. 키오스크, ATM, 포스(POS) 등에 탑재할 예정이다.
구성[편집]
커널[편집]
펌웨어와 장치 드아비어의 도움을 받아 커널은 모든 컴퓨터 하드웨어 장치에 대한 가장 기초 수준의 제어권을 제공한다. 커널은 램을 통해 프로그램 설정 및 초기화하고 디스크, 테이프, 플래시 메모리와 같은 매체의 파일 시스템을 갖춘 장시간 비휘발성 기억 장치를 위한 데이터를 정리한다. 운영체제 내에서 커널의 영역과 그 구성에 따라 모노리딕 커널, 마이크로 커널 등으로 분류한다.
프로그램 실행[편집]
운영체제는 응용 프로그램과 하드웨어 사이의 인터페이스 역할을 한다. 운영체제는 응용 프로그램 개발을 단순하게 하는 서비스의 집합이다. 프로그램을 실행하면 운영체제가 프로세스를 만든다. 커널은 메모리와 다른 자원을 할당하여 프로세스를 만들며, 이로써 멀티태스킹 환경에서 프로세스에 대한 우선 순위를 확립하고, 메모리에 프로그램 코드를 적재하며 프로그램을 실행한다. 그 뒤 프로그램은 사용자 및 장치와 상호작용한 다음 원하는 명령을 수행하게 된다. 운영체제는 프로세스들을 생성하거나 삭제하고, 중단시키거나 재개시킨다. 프로세스 간의 동기화와 통신, 교착상태 처리에 관한 메커니즘을 제공한다.
- 사용자 및 시스템 프로세스의 생성과 종료 관리
- 프로세스의 일시 중지와 속개
- 프로세스 동기화를 위한 수단의 제공
- 프로세스간 통신을 위한 수단의 제공
- 교착 상태 처리를 위한 수단의 제공
인터럽트[편집]
인터럽트는 주변 환경에 반응하고 상호작용하는 데에 효율적인 방법을 운영체제에 제공하므로 운영체제에 핵심적인 역할을 한다. 동작을 요구하는 이벤트(폴링)를 위한 다양한 소스의 입력을 운영체제가 감시할 수 있는 다른 대안은 스택이 매우 작은 구형 운영체제에서 볼 수 있으나 스택이 큰 현대의 운영체제에서는 드문 편이다. 인터럽트 기반의 프로그래밍은 현대의 대부분의 CPU에서 직접적으로 지원된다. 인터럽트는 자동으로 로컬 레지스터 컨텍스트를 저장하고 이벤트에 반응하는 특정 코드를 실행하는 방법을 컴퓨터에 제공한다. 매우 기초적인 컴퓨터들은 모두 하드웨어 인터럽트들을 지원하며 이벤트가 발생할 때 실행될 코드를 프로그래머가 지정할 수 있게 한다.[1]
모드[편집]
현대의 CPU는 여러 모드의 명령을 지원한다. 이러한 기능을 지원하는 CPU에는 두 가지 모드가 있다.
수퍼바이저 모드[편집]
수퍼바이저 모드는 메모리의 기록 및 삭제 방식을 제어하는 것과 그래픽 카드와 같은 장치와 통신하는 것과 같이 운영체제의 커널이 하드웨어에 제한 없이 액세스해야 하는 낮은 수준의 태스크를 위해 사용한다. 컴퓨터가 처음 시동할 때 자동으로 수퍼바이저 모드에서 실행된다. 컴퓨터를 켜자마자 먼저 실행되는 몇 안되는 프로그램들이 바이오스와 부트로더이며 운영체제는 하드웨어 제한 없이 접근한다.
보호 모드[편집]
보호모드는 수퍼바이저 모드의 반대로 그 밖의 거의 모든 용도로 사용된다. 응용 프로그램들은 보호 모드 안에서 동작하며, 수퍼바이저 모드의 모든 것을 제어하는 커널과 통신해야만 하드웨어를 이용할 수 있다. CPU는 오래된 프로세서를 가상으로 구현하기 위한 가상 모드와 같이 보호 모드와 비슷한 다른 모드들을 지니고 있을 수 있다.(예시로 32비트에서 16비트 프로세서, 64비트에서 32비트 프로세서를 가상으로 구현할 때)
메모리 관리[편집]
멀티프로그래밍 운영체제 커널은 현재 프로그램이 이용하는 모든 시스템 메모리를 관리해야 한다. 이로써 어느 특정한 프로그램이 다른 프로그램이 이미 사용하고 있는 메모리와 상호 작용하지 않게 한다. 프로그램이 시분할하므로 각 프로그램은 메모리에 독립적으로 접근해야 한다.
가상 메모리[편집]
페이징이나 세그먼테이션과 같은 가상 메모리 어드레싱을 이용하면 커널은 어느 메모리를 각 프로그램이 주어진 시간에 사용할 수 있게 할지 설정할 수 있다. 그러므로 운영체제가 여러 개의 태스크에 같은 메모리 위치를 사용할 수 있게 한다. 프로그램이 접근할 수 있는 메모리 범위에 없는 메모리에 접근하려고 하지만 그곳에 할당되면 커널은 프로그램이 마치 할당된 메모리를 초과 사용한 것과 같은 방식으로 인터럽트 처리한다.
현대의 운영체제에서 자주 접근하지 않는 메모리는 일시적으로 디스크나 다른 매체에 저장하여 다른 프로그램에게 사용할 수 있는 공간을 제공해 준다. 이를 스왑 처리(swapping)라고 하며 이를 통해 여러 개의 프로그램이 특정한 메모리 영역을 차지할 수 있다.
멀티태스킹[편집]
멀티태스킹은 여러 개의 독립적인 컴퓨터 프로그램을 하나의 컴퓨터에 실행시키는 것을 말한다. 마치 태스크들이 동시에 수행하는 것처럼 보여 준다. 대부분의 컴퓨터가 한 번에 최대 한 두개를 수핼할 수 있고 이는 일반적으로 시분할을 통해 수행된다. 다시 말해 각 프로그램은 컴퓨터의 실행 시간의 일부를 사용한다.
운영체제 커널은 스케줄러라는 프로그램이 포함되어 있는데 이 프로그램은 얼마나 많은 시간을 각 프로그램이 실행에 소비하게 할 것인지를 결정하며 여기서 실행 제어권이 프로그램에 넘어갈 수 있게 한다. 제어권은 프로그램이 CPU와 메모리에 접근할 수 있게 하는 커널로 말미암아 프로세스로 넘어간다. 나중에 다른 프로그램이 CPU를 사용할 수 있게 하기 위해 제어권은 같은 메커니즘을 통하여 커널로 반환된다. 커널과 응용 프로그램 간의 제어권 이동을 이른바 문맥 교환이라고 부른다.
디스크 접근 및 파일 시스템[편집]
디스크에 저장된 데이터로 접근하는 것은 모든 운영체제의 기본 기능이다. 컴퓨터는 더 빠른 접근, 더 높은 신뢰성을 위해, 또 드라이브의 남은 공간을 더 잘 이용하기 위한 특정한 방식으로 구조화된 파일을 이용하여 디스크에 데이터를 저장한다. 파일을 디스크에 저장하는 이러한 방식을 파일 시스템이라고 부르며 파일이 이름과 특성을 가질 수 있게 한다. 또, 이러한 파일들을 디렉터리 트리로 정렬되는 특정 계급의 디렉터리와 폴더에 저장하게 한다.
단순한 운영체제들은 기억 장치의 시스템에 접근하기 위한 제한된 옵션들을 지원하는데, 유닉스와 GNU/리눅스와 같은 운영체제들을 가상 파일 시스템(VFS)이라는 기술을 지원한다. 유닉스와 같은 운영체제는 공통 API를 통해 접근하는 파일 시스템이나 디자인에 관계 없이 다양한 기억 장치를 지원한다. 그러므로 프로그램을 개발할 때 장치 접근에 대한 정보를 공부하지 않아도 되게 한다. VFS는 다양한 파일 시스템에 특정한 장치 드라이버와 파일 시스템 드라이버를 사용하여 프로그램들이 무제한의 장치에 접근할 수 있는 기능을 운영체제에 제공한다.
연결된 하드 드라이브와 같은 기억 장치들은 장치 드라이버를 통해 접근한다. 장치 드라이버는 드라이브의 특정한 언어를 이해하고 이 언어를 운영체제가 모든 디스크 드라이브에 접근할 때 사용하는 표준 언어로 번역할 수 있다. 유닉스에서 이를 블록 장치의 언어라고 한다.
장치 드라이버[편집]
장치 드라이버는 하드웨어 장치들과 상호 작용할 수 있도록 개발된 특정한 종류의 컴퓨터 소프트웨어이다. 장치 드라이버의 주된 설계 목적은 추상화이다. 하드웨어의 모델은, 특히 같은 종류의 장치라 하더라도 각기 다르다. 제조업체들은 더 신뢰할만한, 더 나은 성능을 제공하기 위해 더 새로운 모델들을 출시하고 이러한 새로운 모델들은 다르데 동작하기도 한다. 컴퓨터들과 운영체제들은 현재나 미래에 모든 장치를 어떻게 제어할 것인지 예측하는 것은 불가능하다. 이러한 문제를 해결하기 위해 운영체제들은 반드시 어떠한 종류의 장치가 제어될 것인지를 지시하여야 한다. 그러면 장치 드라이버의 기능이 이러한 운영체제의 함수 호출을 장치 특유의 호출로 번역하게 된다. 이론적으로 새로운 방식으로 제어되는 새로운 장치는 적절한 드라이버를 사용할 수 있는 상황이라면 올바르게 동작한다. 새로운 드라이버는 운영체제의 관점에서 장치가 평소처럼 동작하고 있음을 보증하게 한다.
네트워킹[편집]
현재 대부분의 운영체제는 다양한 통신 프로토콜, 하드웨어, 응용 프로그램을 지원한다. 서로 비슷하지 않은 운영체제를 실행하는 컴퓨터가 자원(유무선 연결을 이용한 연산, 파일, 프린터, 스캐너)을 공유하기 위해 같은 네트워크에 참여할 수 있다. 네트워크는 컴퓨터의 운영체제가 원격 컴퓨터의 자원에 접근하는 데 필수적이다. 마치 리소스가 로컬 컴퓨터에 바로 연결되어 있는 것처럼 보이게 만들어 준다. 여기에는 컴퓨터의 그래픽, 사운드, 하드웨어를 공유하거나 네트워킹 파일 시스템을 이용하는 등 단순한 통신에서 나오는 모든 것을 포함한다. 일부 네트워크 서비스는 컴퓨터의 자원을 투명하게 접근할 수 있게 한다. 이를테면 시큐어 셸(Secure Shell, SSH)은 네트워크로 이어진 사용자들이 컴퓨터의 명령 줄 인터페이스에 직접 접근할 수 있게 한다.
보안[편집]
컴퓨터의 보안은 수많은 기술이 올바르게 동작하고 있는 지에 달려 있다. 또, 운영체제는 보안을 위하여 특정 환경에 대한 권한을 사용자나 프로그램에 개별적으로 설정하고 인증 프로세스를 제공한다. 인터넷 보안은 특히 여러 사용자가 사용하는 시스템에 적절하다. 시스템을 사용하는 각 사용자는 개인 파일을 다른 사용자가 읽을 수 없게 할 수 있다.
사용자 인터페이스[편집]
어떠한 종류의 입력을 받는 모든 컴퓨터는 사람이 컴퓨터와 소통할 수 있게 하는 사용자 인터페이스가 필요하다. 키보드, 마우스와 같은 장치들이 이러한 역할을 하지만 사용자 인터페이스는 이를 위한 소프트웨어로 이루어진다. 사용자 인터페이스는 역사적으로 컴퓨터 명령어를 한 줄씩 입력해 나가는 명령 줄 인터페이스와 일반적으로 창, 단추, 아이콘을 이루는 시각 환경이 존재하는 그래픽 사용자 인터페이스로 나뉜다.
그래픽 사용자 인터페이스[편집]
현대의 대부분의 컴퓨터 윤영 체제는 그래픽 사용자 인터페이스(GUI)를 지원한다. 마이크로소프트 윈도우와 맥 OS와 같은 일부 컴퓨터 시스템에서 GUI는 커널에 통합되어 있다.
기술적으로 그래픽 사용자 인터페이스는 운영체제의 서비스가 아니지만 운영체제 커널에 통합하면 GUI가 출력 명령을 수행하는 데 필요한 수많은 문맥 교환을 없앰으로써 GUI를 더 반응적으로 만들 수 있다. 다른 운영체제로는 그래픽 하부 시스템을 커널과 운영체제로부터 분리시키는 모듈성이 있다. 1980년대 유닉스에서 VMS 등은 이러한 방식으로 만들어진 운영체제였다.[1]
각주[편집]
참고자료[편집]
- 〈운영 체제〉, 《위키백과》
- 〈운영 체제〉, 《나무위키》, 2019-10-24
- 몰랑이말랑이, 〈운영체제(Operation System : OS)란? 운영체제 종류와 목적, OS 정복〉, 2019-01-23
같이 보기[편집]
|