운영체제에 대해 알아보자❕
1. 운영체제(OS, Operating System)란?
컴퓨터 하드웨어와 응용 프로그램 간의 상호작용을 관리하고 제어하는 소프트웨어.
사용자와 하드웨어 사이의 인터페이스를 제공해 응용 프로그램이 동작하도록 지원하고, 시스템 자원을 효율적으로 관리하여 응용 프로그램이 원활하게 동작할 수 있도록 한다.
즉, 컴퓨터 하드웨어를 효율적으로 관리하여 사용자가 컴퓨터를 편리하게 사용할 수 있도록 도와주는 *시스템 소프트웨어이다.
- 컴퓨터 하드웨어를 관리 : 컴퓨터는 CPU, 메모리, 입출력 장치 등 수 많은 하드웨어로 구성되는데 이를 잘 관리해줘야 컴퓨터를 효율적으로 사용할 수 있다.
- 사용자 편의 제공 : 컴퓨터 시스템을 편리하게 사용할 수 있는 인터페이스를 제공한다. (운영체제없이 컴퓨터를 동작시킬 수는 있으나 모든 하드웨어에 대한 관리를 사용자가 직접 한다면 컴퓨터를 사용하는데 큰 불편함을 겪을 것이다)
*시스템 소프트웨어, 응용 소프트웨어?
- 시스템 소프트웨어
- 응용 소프트웨어를 실행하기 위한 플랫폼을 제공하고 컴퓨터 하드웨어를 동작, 접근할 수 있도록 설계된 컴퓨터 소프트웨어. 컴퓨터 시스템의 운영을 위한 모든 컴퓨터 소프트웨어에 대한 일반 용어이다.
- ex) 메모리에서 하드디스크로 데이터를 전송하는 것, 문자열을 디스플레이 장치로 출력하는 것 등
- 응용 소프트웨어
- 운영체제에서 실행되는 모든 소프트웨어를 뜻한다. 간단하게 줄여서 애플리케이션(앱)이라고 한다.
- ex) 워드프로세서, 스프레드시트, 웹브라우저, 컴파일러, 링커 등
2. 운영체제 목적 & 역할
목적
운영체제는 크게 4가지 목적을 가진다. 이에 따라 운영체제의 성능이 평가된다.
- 처리 능력 (Throughput) : 일정 시간 내에 시스템이 처리하는 일의 양
- 반환 시간 (Turn Around Time) : 작업을 의뢰한 시간부터 완료될 때까지 걸린 시간
- 사용 가능도 (Availability) : 시스템을 사용할 필요가 있을 때 빠르게 사용할 수 있는지에 대한 정도
- 신뢰도 (Reliability) : 주어진 문제를 정확하게 처리하는지에 대한 정도
역할
- 프로세스 관리 : 프로세스 생성, 실행, 정지 등을 제어한다. 실행 중인 프로세스들을 관리하는 역할도 한다. 예를들어, 하나의 CPU는 한 번에 한 프로세스만을 처리하는데 우리는 CPU가 여러 일을 동시에 하고 있다고 느낀다. 그 이유는 운영체제가 프로세스를 빠르게 교체하면서 여러 프로세스가 동시에 실행되는 것처럼 느끼게 하는 것이다.
- 메모리 관리 : 한정된 메모리를 어떻게 할당해 줄 것인지 관리한다. 모든 프로그램은 메모리에 올라와서 실행되는데, 오늘날에는 여러 프로그램을 동시에 실행시키기 때문에 사용중인 메모리를 보호하지 않으면 메모리 침범 이슈와 같은 문제가 발생한다. 이 또한 운영체제에서 관리한다.
- 하드웨어 관리 : 시스템에는 여러 하드웨어가 붙어있는데, 이들을 운영체제에서 인식하고 관리하게 하고 응용 프로그램이 하드웨어를 사용할 수 있게 만든다.
이 외에도 저장장치, 네트워킹, 오류처리, 보안 등과 같이 컴퓨터 시스템 내의 자원을 효율적으로 관리하기 위해 다양한 역할을 한다.
3. 운영체제 구조
운영체제는 인터페이스, 커널, 시스템 호출, 드라이버 총 4가지로 구성되어있다.
하드웨어 위에 커널(kernel)이 있고, 커널 위에서 인터페이스와 응용 프로그램(application)이 실행된다.
사용자는 커널을 직접 접근할 수 없고, 시스템 호출을 통해 접근할 수 있다.
- 인터페이스 (Interface)
- 사용자의 명령을 커널에게 전달하고, 실행 결과를 사용자에게 알려주는 인터페이스 역할.
- GUI (Graphical User Interface) : 그래픽 기반 사용자 인터페이스
- CLI (Command Line Interface) : 텍스트 기반 사용자 인터페이스
- 시스템 호출 (System Call)
- 커널이 제공하는 컴퓨터 자원의 사용과 연관된 함수
- 커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단하고, 시스템 호출을 통해 접근할 수 있도록 한다.
- 커널 (Kernel)
- 프로세스, 메모리, 저장장치를 관리하는 핵심적인 기능을 담당. 커널에는 시스템 호출과 드라이버가 있다.
- 사용자는 커널에 직접 접근할 수 없다.
- 드라이버 (Driver)
- 하드웨어를 제어하기 위한 소프트웨어로, 커널과 하드웨어의 인터페이스 역할.
- 하드웨어의 종류는 다양하기 때문에 운영체제가 모든 하드웨어에 맞는 인터페이스를 개발하기는 어렵다. 따라서 커널은 입출력의 기본적인 부분만 기본 드라이버로 운영하고, 그 외에 제품은 하드웨어 제작사에게 받아 커널이 실행될 때 함께 실행되도록 한다. 이 때 하드웨어 제작사가 만든 소프트웨어를 디바이스 드라이버라고 한다.
4. 운영체제 종류
운영체제의 경우 크게 임베디드, 서버, 모바일, 데스크탑 4개의 시장으로 나누어져 있다. 임베디드는 Linux 계열, 서버는 UNIX 계열, 모바일은 Android, 데스크탑은 Windows가 점유율이 높다.
- Windows (윈도우)
- 마이크로소프트에서 만든 운영체제. 오랫동안 데스크탑 OS 시장을 지배했으며 호환되는 응용 프로그램 수가 많다. 개발자를 위한 환경은 부족한 편이다.
- UNIX (유닉스)
- AT&T 벨 연구소에서 개발한 운영체제로, 대부분 현대적 컴퓨터 운영 체제의 원형이 되었다.
- 다중 사용자 및 다중 작업을 지원하는 운영체제. 서버용 컴퓨터에서 주로 사용되며 안정성과 신뢰성이 높다.
- 서버 운영에 필수적인 CLI에 특화되어 있어 서버 시장에서 인기가 많다.
- Linux (리눅스)
- Linus Torvalds(리누스 토르발스)가 개발한 오픈 소스 운영체제로, 다양한 배포판이 있다. 서버 시스템 및 임베디드 시스템에 주로 사용된다.
- GNU 프로젝트의 일환이다. GNU는 “GNU(그누) is Not UNIX”의 줄임말로, 유닉스 운영체제를 각자의 회사에서 개발하고 소스 코드를 공개하지 않는 문화에 대한 반발로 만들어졌다.
- 사실 Linux는 운영체제가 아닌 커널을 의미한다. GNU 프로젝트의 커널로 Linux가 채택되면서 GNU/Linux가 완성되었으며 GNU 또는 GNU/Linux가 운영체제를 의미한다.
- macOS (맥OS)
- Apple사에서 개발한 운영체제로 mac 데스크탑 및 노트북에서 사용된다. 시스템 안정성과 사용자 편의성에 중점을 두었다.
- Ubuntu (우분투)
- 리눅스 배포판의 한 종류로, 개인 사용자와 데스크탑 환경에 최적화된 운영체제이다. 그러나 한글을 지원하지 않아 따로 설치해야 한다.
참고자료 😃
https://kjhoon0330.tistory.com/entry/운영체제OS-운영체제란-무엇인가#3.1. 1
https://velog.io/@codemcd/운영체제OS-1.-운영체제란
https://coding-factory.tistory.com/300
https://zeromin-code.tistory.com/45