운영체제(OS) 개요
컴퓨터를 잘 모르는 분들도 운영체제(OS: Operating System)라는 용어는 들어본 적이 있으실 거예요. 운영체제는 컴퓨터를 켤 때 가장 먼저 실행되는 소프트웨어로, 오늘날 많은 사람들이 이용하고 있는 Windows와 Mac OS, 그리고 Linux 등이 해당됩니다. 또한 운영체제는 컴퓨터에만 포함되는 것이 아닌, 기본적으로 스마트폰이나 스마트 와치, 자동차 네비게이션 등에도 들어가 있습니다.
이처럼 대부분의 기기들은 모두 운영체제를 포함하고 있는데, 운영체제는 어떤 이유에서 필요한 걸까요? 🤔
대표적으로 아래 4가지의 이유를 들 수 있습니다.
1. 효율성
우리는 컴퓨터를 사용할 때 한 가지 작업만 하는 경우는 그다지 많지 않습니다. 웹 서핑을 하면서 음악도 듣고, 중간에 지인에게 연락이 오면 답장도 하는 것처럼 여러 가지 작업을 병행해서 하게 됩니다. 이럴 때 컴퓨터는 주어진 자원(키보드, 네트워크 카드, 사운드 카드)을 각 소프트웨어에 할당해야 하는데, 운영체제는 이러한 자원들을 효율적으로 분배하고 회수하여 원활한 동작이 이루어지게끔 만듭니다.
2. 안정성
운영체제는 외부의 악의적인 침입이나, 사용자의 미숙한 조작으로부터 발생할 수 있는 컴퓨터 자원에 대한 위협을 방지하고 있습니다. 보안을 위한 대책이 기본적으로 구현되어 있긴 하지만, 좀 더 안전하게 보호하기 위해 백신과 같은 외부 유틸리티를 활용합니다. 운영체제만으로도 모든 위협에 대한 보호가 가능하면 좋겠지만, 보안에만 특화된 유틸리티에 맡기면 더욱 안전하겠지요?
3. 확장성
우리는 다양한 하드웨어와 함께 컴퓨터를 사용하고 있습니다. 하지만 세상에는 너무나 다양한 하드웨어가 존재하는데, 마우스라 하더라도 어떤 마우스는 버튼이 두 개인데, 또 어떤 마우스는 세 개일 수 있습니다. 이때마다 서로 다른 하드웨어들을 지원하는 소프트웨어를 설치해야 합니다.
하지만 운영체제는 복잡한 과정 없이 다양한 장치를 사용할 수 있도록, 하드웨어 인터페이스라는 것을 제공하고 있습니다. 이 인터페이스를 통해 하드웨어를 일관된 방법을 사용할 수 있도록 하기 때문에, 사용자는 어떤 소프트웨어를 깔아야 하는지 신경쓸 필요 없이 간편하게 사용할 수 있습니다. (Ex. 새로운 하드웨어 연결 시, 자동으로 드라이버 설치 창이 켜지는 것)
4. 편의성
하드웨어 인터페이스뿐만 아니라 운영체제는 사용자를 위한 인터페이스도 제공하고 있습니다. 예전에는 폴더 만들기, 삭제하기와 같은 운영체제의 기본적인 기능을 이용하기 위해 검은색 터미널에 사용자가 직접 명령어를 입력해야 했습니다. 하지만 오늘날 대부분의 운영체제는 기본적으로 GUI(Graphic User Interface) 환경을 제공하기 때문에, 이전과 달리 마우스를 통해 간편하게 조작하여 운영체제의 기능들을 이용할 수 있습니다.
운영체제의 업데이트를 통해, 언제든 더 나은 사용자 환경을 제공받을 수 있습니다.
운영체제의 구조 ⛱
운영체제 구조에서 기억해야 하는 가장 중요한 내용은 커널(Kernel)입니다. 커널은 운영체제의 핵심이 되는 기능들을 모아 놓은 것으로, 대표적인 기능에는 프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 관리 등이 있습니다. 또한 커널은 내부에 시스템 호출과 디바이스 드라이버라는 것을 포함하고 있는데, 어떤 구조인지 그림을 통해 살펴 보도록 합시다.
시스템 호출 (System Call)
시스템 호출은 커널이 자기 자신을 보호하기 위해 만든 인터페이스입니다. 커널은 사용자나 어플리케이션으로부터 컴퓨터 자원을 보호하기 위해 커널 내부에 직접적으로 접근하는 것을 차단하고 있습니다. 하지만 시스템 호출이라 하는 인터페이스가 있기 때문에, 내부 자원을 어떻게 얻을 수 있을지 고민하지 않고, 미리 정해진 절차를 따라 결과만 요청해서 받으면 됩니다.
API와 SDK에 대해 알고 계시면, 시스템 호출에 대한 이해에 도움이 될 것 같습니다 🤗
디바이스 드라이버 (Device Driver)
시스템 호출이 어플리케이션과의 인터페이스라면, 디바이스 드라이버는 하드웨어와의 인터페이스입니다. 컴퓨터 하드웨어의 종류는 너무나 다양하기 때문에 이를 일일이 개발하여 커널에 포함하는 것은 불가능합니다. 그렇기 때문에 커널에서는 입출력의 기본적인 부분만을 개발하고, 나머지는 하드웨어 개발자가 인터페이스를 참고해 만들 수 있도록합니다. 그렇게 만들어진 소프트웨어를 커널이 실행될 때 함께 실행되도록 합니다.
'💻 컴퓨터공학 > 운영체제' 카테고리의 다른 글
CPU를 효율적으로 사용하기 위한 스케줄링 (0) | 2021.10.09 |
---|---|
프로세스와 쓰레드의 차이 (0) | 2021.10.03 |
기본적인 컴퓨터 구조 (0) | 2021.10.01 |
댓글
이 글 공유하기
다른 글
-
CPU를 효율적으로 사용하기 위한 스케줄링
CPU를 효율적으로 사용하기 위한 스케줄링
2021.10.09 -
프로세스와 쓰레드의 차이
프로세스와 쓰레드의 차이
2021.10.03 -
기본적인 컴퓨터 구조
기본적인 컴퓨터 구조
2021.10.01