과거의 컴퓨터
컴퓨터가 개발된 초창기에는 하드웨어 자체를 관리하는 일과 실제 수행시킬 프로그램을 작성하는 일을 사용자가 다 해야했습니다. 즉 프로그램을 컴퓨터에서 수행시키려면 사용자가 시스템을 직접 시작시키고 컴퓨터에 로딩해 수행해야 했습니다. 하지만 이러한 방법이 비효율적임을 인식하고 컴퓨터가 자동적으로 일을 처리해주도록 만들 수는 없을까? 라는 고민에서 탄생한 것이 바로 운영체제입니다.
운영체제의 정의
운영체제는 영어로는 Operating System으로 컴퓨터의 하드웨어 바로 윗단에 설치되는 소프트웨어를 말합니다. 운영체제는 사용자가 하드웨어를 다루는 것이 쉽지 않으므로, 하드웨어 위에 기본적으로 탑재되어 전원을 켰을 때 사용자가 손쉽게 사용할 수 있도록 만들어줍니다.
메모리
소프트웨어가 컴퓨터 시스템에서 실행되기 위해서는 메모리에 그 프로그램이 올라가 있어야 합니다. 운영체제도 일종의 프로그램이기 때문에 컴퓨터의 전원이 켜짐과 동시에 메모리에 올라가게 되죠. 하지만 운영체제와 같은 규모가 큰 프로그램이 모두 메모리에 올라간다면 공간의 낭비가 심할것입니다. 이에 따라 운영체제는 필요한 부분만을 메모리에 올려놓고 나머지는 필요할 때 메모리로 올려서 사용하게 됩니다. 이때 메모리에 상주하는 운영체제의 부분을 커널(Kernel)이라 부르며, 이를 '좁은 의미의 운영체제'라고도 부릅니다.
운영체제의 기능
운영체제는 컴퓨터 하드웨어와 사용자 사이를 연결해주는 역할을 합니다. 따라서 운영체제의 역할은 하드웨어를 위한 역할과 사용자를 위한 역할 두 가지로 나누어 볼 수 있습니다. 즉 운영체제는 각종 하드웨어를 관리하고, 사용자에게 편리한 인터페이스를 제공하는 역할을 합니다. 또한 운영체제는 악성 프로그램이 메모리 영역을 참조한다던지, 사적인 파일에 접근하지 못하도록 보안 및 보호 기능을 수행합니다. 무엇보다도 운영체제의 기능 중에서 가장 핵심은 컴퓨터 시스템 내의 자원을 효율적으로 관리하는 것입니다. 그래서 운영체제를 자원관리자(Resource Manager)이라고 부르기도 합니다.
Q. 그렇다면 어떤 자원을 관리한다는 건가요?
운영체제는 CPU, 메모리, 하드디스크 등 하드웨어 자원뿐 아니라 소프트웨어 자원들을 통틀어 효율적으로 관리하고, 가장 좋은 성능을 내도록 하는 역할을 담당합니다. 물론 효율성만 따질 것이 아니라 이로 인해 일부가 지나치게 희생되지 않도록 형평성도 고려해야 할 목표입니다.
운영체제의 분류
1. 다중 작업을 지원하는가?
운영체제는 동시 작업을 지원하는지 여부에 따라 단일작업용 운영체제와 다중작업용 운영체제로 나누어볼 수 있습니다. 단일 작업용 운영체제의 대표적인 예가 바로 도스(Disk Operating System : DOS) 인데, 사용자가 명령어를 입력해 사용하는 방식으로 하나의 프로그램이 실행되는 동안 명령어 입력 라인이 뜨지 않아 한 번에 하나의 작업만 실행할 수 있었습니다.
하지만 최근에는 대부분의 운영체제가 다중작업 시스템을 지원합니다. 운영체제가 다중작업을 처리할 때에는 여러 프로그램이 CPU와 메모리를 공유하게 됩니다. CPU가 매 순간 하나의 프로그램만 실행할 수 있다고 해도 처리속도가 워낙 빨라 사용자 입장에서는 여러 프로그램이 동시에 실행되는 것처럼 보입니다. 이와 같이 CPU 작업시간을 여러 프로그램들이 조금씩 나누어 쓰는 시스템을 시분할 시스템(Time Sharing System)이라고 부릅니다.
CPU와 달리 메모리의 경우에는 여러 프로그램들이 조금씩 메모리 공간을 보유하며 동시에 메모리에 올라갈 수 있습니다. 이러한 시스템을 다중 프로그래밍 시스템(Multi-Programming System)이라고 부릅니다. 이렇게 여러 프로그램이 같이 실행되면서도 사용자의 관점에서는 각 프로그램에 대한 키보드 입력의 결과를 곧바로 화면에 보여주기 때문에 대화형 시스템(Interactive System) 이라고도 부릅니다. 대화형 시스템은 시분할 방식의 대표적인 특징이라고 할 수 있습니다.
다중작업 시스템, 시분할 시스템, 다중 프로그래밍, 대화형 시스템은 모두 여러 프로그램이 하나의 컴퓨터에서 동시에 실행된다는 개념을 가지고 있습니다. 그렇다면 CPU가 여러 개라면 여러 프로그램들이 서로 다른 CPU에서 동시에 실행될 수 있어 처리가 빨라지지 않을까요? 맞습니다. 하지만 운영체제의 입장에서는 여러 CPU를 관리하기 위해 더욱 복잡한 메커니즘을 필요로 하게 됩니다. 따라서 앞으로 설명하는 운영체제는 CPU가 하나 탑재된 컴퓨터를 다루겠습니다.
2. 작업을 어떤 방식으로 처리하는가?
- 일괄처리(Batch Processing) 방식 : 요청된 작업을 일정량씩 모아서 한꺼번에 처리하는 방식입니다. 모든 작업이 완전히 종료된 후에 결과를 얻을 수 있기 때문에 사용자의 입장에서는 응답시간이 길다는 단점이 있습니다.
- 시분할 방식 : 여러 작업을 수행할 때 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식입니다. 현대의 범용 컴퓨터는 대부분 시분할 방식을 사용합니다.
- 실시간(Real Time) 운영체제 : 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템에서 사용됩니다. 예를 들자면 원자로, 미사일 제어 시스템 등이 이러한 방식을 사용합니다. 실시간 시스템은 시간 제약의 중요성에 따라 경성 실시간 시스템(Hard Realtime System)과 연성 실시간 시스템(Soft Realtime System)으로 세분화할 수 있습니다.
이 포스팅은 책 '운영체제와 정보기술의 원리'를 읽고 공부한 내용을 정리하였습니다.
https://www.yes24.com/Product/Goods/90124877
'운영체제' 카테고리의 다른 글
[운영체제 이해하기 3] 인터럽트란? (0) | 2023.06.01 |
---|---|
[운영체제 이해하기 2] 운영체제의 자원 관리 기능 개요 (0) | 2023.05.29 |