01 운영체제란?
1. 운영체제 정의
- 컴퓨터 운영체제(Operating System, OS)는 컴퓨터 하드웨어와 소프트웨어 자원(resource)을 효율적으로 관리하고, 사용자와 컴퓨터 사이의 인터페이스 중추적인 역할을 하는 중요한 시스템 소프트웨어
- 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
- 운영체제는 일련의 작업 순서를 정하고 중앙처리장치(CPU), 주기억장치, 주변장치 등의 여러 하드웨어 시스템에 이를 할당하는 일련의 매우 복잡한 명령으로서, 프로그램 실행은 물론 파일 접근, 응용 프로그램 구동, 모니터 및 메모리 저장장치 제어, 글자판 명령 해석과 같은 특별한 임무를 수행하도록 CPU에 지시함. 또한, 여러 사용자가 동시에 작업을 수행할 때에는 이른바 시분할 (time-sharing) 방식으로 작업의 우선순위를 정해 시간과 자원을 효율적으로 배분하며, 네트워크상에서는 다른 컴퓨터와 상호 작용하는 일을 제어하기도 함
- 요약: 운영체제는 하드웨어를 제어하고 컴퓨터 자원을 관리하며, 컴퓨터 사용을 편리하게 해주고 응용 프로그램들의 수행을 도와주며, 사용자와 하드웨어 사이의 매개체 역할을 하는 소프트웨어
- 운영체제의 종류: 일괄처리 (batch processing) 운영체제, 대화형 운영체제, 실시간 운영체제, 하이브리드 운영체제
- 일괄처리 운영체제: 작업을 모아서 처리, 사용자와 상호작용 없이 순차적으로 실행함
- 대화형 운영체제: '시분할시스템'이라고도 함, 일괄처리 시보다 반환시간이 빠르고 이용자에게 즉각적인 피드백(feedback)을 제공(상호작용)함. 응답시간은 사용자 수에 따라 수 분, 혹은 수십 초가 걸리기도 함
- 실시간 운영체제: 모든 시스템 중 가장 빠른 응답시간을 보임, 결과값이 현재의 결정에 영향을 받음, 데이터의 처리가 매우 빠르고 반환시간이 매우 중요한 환경에 적합
- 하이브리드 운영체제: 일괄처리와 대화형 처리의 합성한 운영체계, 대화형 작업이 많지 않을 경우 백그라운드에서 배치 프로그램을 실행함. 현재 사용되고 있는 대부분의 컴퓨터 시스템.
2. 운영체제 주요 기능
1) 프로세스 관리 (Process Management)
- 운영체제는 프로세스(실행 중인 프로그램)의 생성, 실행, 중단을 관리함
- 프로세스 스케줄링 (어떤 프로세스가 언제 CPU를 사용할지 결정), 프로세스 동기화, 교착 상태 관리 등을 포함
- 이를 위해, 운영체제는 CPU 스케줄링 알고리즘을 사용하여 프로세스가 CPU 시간을 공정하게 공유할 수 있도록 함
- 또한, 시스템이 과부하 상태를 방지하기 위해 프로세스 수를 제어하며, 프로세스 간에 충돌이 발생하지 않도록 관리함
2) 메모리 관리 (Memory Management)
- 운영체제는 컴퓨터의 메모리를 효율적으로 관리함
- 각 프로세스에 메모리를 할당하고, 프로세스가 종료됐을 때 메모리를 회수하는 등의 역할을 담당
3) 디스크 및 파일 시스템 관리 (Disk/File System Management)
- 운영체제는 컴퓨터의 디스크 공간 및 파일 시스템을 관리함
- 이는 파일 생성, 삭제, 수정 등 파일 관련 작업을 관리하는 것을 말하며 운영체제의 중요한 기능 중 하나임
- 운영체제는 파일들을 디스크에 저장하고 검색하는 방법을 결정함
- 파일 시스템을 통해 데이터를 구성하고 사용자가 파일을 쉽게 저장, 검색, 수정할 수 있도록 함
4) 디바이스 장치 및 입출력(I/O) 관리 (Device Management)
- 운영체제는 컴퓨터의 하드웨어 리소스를 관리함
- 다양한 입출력 장치(CPU, 메모리, 디스크 저장 장치, 그래픽 카드, 키보드, 마우스, 디스플레이, 프린터, 네트워크 인터페이스 등)들을 관리하여 장치 드라이버를 통해 이들과 상호작용을 통해 동작을 관리함
- 이를 통해 장치들 간의 충돌 방지 및 장치 사용을 최적화함
5) 보안과 프라이버시/엑세스 제어 (Security/Access Control)
- 운영체제는 시스템의 보안 유지를 위해 악성코드 등을 감지하고 사용자 데이터의 프라이버시를 보호함
- 이는 엑세스 제어 (누가 어떤 파일에 접근 가능한지 결정), 보안 감사 (누가 언제 어떤 작업을 수행했는지 기록), 암호화 등을 포함
6) 사용자 인터페이스 (User Interface Provision)
- 운영체제는 사용자가 컴퓨터와 쉽게 상호작용할 수 있도록 인터페이스를 제공함
- 이는 텍스트 기반의 명령줄 인터페이스 (Command Line Interface, CLI) 또는 그래픽 사용자 인터페이스 (Graphical User Interface, GUI)를 제공함
7) 리소스 할당 (Resource Allocation)
- 여러 사용자가 시스템에 접근하거나 여러 작업이 동시에 실행되는 경우, 운영체제는 메모리 공간, CPU 사이클, 파일, I/O 장치 등의 리소스를 할당하는 역할을 담당
8) 오류 감지 및 처리 (Error Detection and Handling)
- 운영체제는 시스템에서 가능한 오류를 지속적으로 모니터링함
- 이는 하드웨어 수준의 오류(장치 실패 등)나 소프트웨어 수준의 오류(소프트웨어 버그 또는 사용자의 잘못된 명령 등)를 포함
- 그리고 발생한 오류를 적절하게 처리함
02 운영체제의 종류
- 운영체제는 컴퓨터 시스템의 핵심 소프트웨어로, 하드웨어와 응용 프로그램 간의 인터페이스 역할을 수행함
- 다양한 종류의 운영체제가 있으며, 각각의 운영체제는 특정한 목적과 특성을 가지고 있음
- 운영체제의 종류: Windows, macOS, Linux, Unix, iOS, Android, Chrome OS, FreeBSD 등
1. Windows
- Microsoft에서 개발한 운영체제로, 주로 개인용 컴퓨터에 사용됨
- 사용자 친화적인 그래픽 사용자 인터페이스 (GUI)를 제공하며 다양한 응용 프로그램 지원
- Windows 11은 최신 버전으로, 안정성과 보안성이 강화되었으며, 다양한 하드웨어와 소프트웨어 호환성이 높음
- 추가 정보:
- 국내(한국) 점유율 90% 이상, 호불호가 갈리지 않고 많은 사람이 이용 가능
- 사용자가 직관적으로 기능을 사용할 수 있는 인터페이스를 갖춤 (GUI)
- 리눅스용 Windows 하위 시스템 (WSL)이라는 개발용 플랫폼을 통해 개발자들이 선호하는 리눅스 도구를 사용해서 개발환경을 구축할 수 있음
- 많은 사람이 편리하게 이용하도록 미리 설정되어있는 설정과 애플리케이션이 많은 것이 단점
- WSL을 사용하더라도 이미 많은 애플리케이션이 설치되어 있어 개발환경 구축 시 난잡할 수 있다는 단점 때문에 아직까지 리눅스와 맥보다 새발자 친화적이지 않다는 의견 존재
- C#, .NET등의 Windows 기반 언어로 개발할 때 사용하면 편리
2. macOS
- Apple에서 개발한 운영체제로, 애플의 맥(Mac) 컴퓨터 시리즈에서 사용됨
- 사용자 친화적인 인터페이스와 뛰어난 성능 제공
- 멀티미디어 작업과 디자인 분야에서 많이 사용되며, 안정성과 보안성이 높음
- 추가 정보:
- 예전에는 전문가나 서버용 컴퓨터로 사용했던 유닉스 계열의 운영체제
- 유닉스 계열의 운영체제이므로 크기가 작고, 이해하기 쉽고, 프로세스 간 호환성이 좋음
- 폐쇄적인 환경으로 바이러스에 걸릴 걱정이 없음
- 유닉스 기반 터미널을 사용하기에 리눅스 명령어를 그대로 사용해서 개발환경을 구성
- 운영체제 업데이트 비용이 저렴, 운영체제의 안정성과 보안이 보장됨
- 애플의 Mac, iOS, watchOS 등의 소프트웨어 개발을 위한 IDE인 XCode, 리눅스용 패키지 관리 애플리케이션 홈브루 등을 사용할 수 있으므로 개발자 친화적
- 부드러운 GUI 인터렉션과 제스처 등 다른 제조사에서 흉내 낼 수 없는 견고하고 특별한 사용자 경험을 제공
- Windows와 다른 방식으로 조작해야 하기에 적응 기간 필요
3. Linux
- 개방형 소스 (Open Source) 운영체제로, 다양한 하드웨어 플랫품과 아키텍처에서 사용 가능
- 안정성, 보안성, 유연성, 확장성 등의 특징을 갖고 있음
- 많은 배포판 (Distribution)이 존재하며, 각각의 배포판은 다양한 용도와 특징을 제공하고 가장 유명한 배포판에는 Ubuntu, Fedora, CentOS, Red Hat Enterprise Linux (RHEL) 등이 있음
- 서버 환경이나 임베디드 시스템 (Embedded System)에서 널리 사용되며, 개발자들에게는 커스터마이징과 자유로운 개발 환경을 제공함
- 추가 정보:
- 주로 서버용 컴퓨터로 사용하는 유닉스 계열의 운영체제
- 서버용 컴퓨터는 서버로 구성하는 프로그램 외에 다른 불필요한 애플리케이션이 없고 단순해야 하기에 크기가 작고, 이애하기 쉽고, 프로세스 간 호환성이 좋음
- 무료 소프트웨어로서 자유롭게 사용, 복사, 배포, 및 개선 가능
- 커널 소스가 공개되어 있기 때문에 전 세계 수많은 개발자가 기여, 개선, 및 배포하기에 안정적
- 모든 소스가 공개되어 있기 때문에 사용자가 원하는 대로 프로그램 최적화 가능
- Windows나 Mac에서는 기본으로 제공하는 프로그램조차 설치해줘야 하는 것이 번거로울 수 있으나 원하는 프로그램만 설치해서 쾌적하게 시스템을 구축할 수 있다는 면에서 장점이 되기도 함
- GNU 컴파일러 모음 GCC(GNU Compiler Collection)라는 오픈소스 컴파일러가 무료로 제공되기 때문에 Windows나 Mac과는 다르게 리눅스 IDE나 개발 툴은 별도로 구매하지 않아도 됨
- 다중 작업과 다중 사용자, 다중 스레드를 쾌적하게 지원
4. Unix
- 초기에는 대형 서버 시스템에서 사용되던 운영체제로, 다중 사용자, 다중 작업 환경을 지원함
- 안정성, 신뢰성, 보안성 등의 특징을 가지고 있음
- 리눅스 운영체제는 유닉스의 영향을 받았으며, 다양한 변종이 존재. 범용적인 운영체제로 사용되는 Linux와 BSD (Berkeley Software Distribution)가 널리 알려져 있음
5. iOS
- Apple의 iPhone, iPad, iPod Touch 등 모바일 기기에서 사용되는 운영체제
- 사용자 친화적인 인터페이스와 편리한 사용자 경험 제공
- 앱 스토어를 통해 다양한 응용 프로그램을 설치 및 사용 가능
- iOS는 안정성과 보안성이 강화되어 있으며, 애플의 하드웨어와 소프트웨어 간의 최적화가 이루어져 좋은 성능을 발휘함
6. Android
- Google에서 개발한 운영체제로, 대부분의 스마트폰과 태블릿 기기에서 사용됨
- 개방형 소스(Open Source) 운영체제로, 널리 사용되는 리눅스 기반임
- 다양항 제조사와 기기에서 호환성을 갖추고 있으며 다양한 앱과 서비스 제공
- 대부분의 앱들이 안드로이드 운영체제에 최적화되어 있으며, 사용자 맞춤형 설정과 유연성이 강점
7. Chrome OS
- Google에서 개발한 운영체제로, 주로 Chromebook이라고 불리는 노트북 컴퓨터에서 사용됨
- 인터넷을 중심으로 한 클라우드 컴퓨팅 환경을 제공
- 주로 웹 브라우징, 온라인 작업, 클라우드 기반 앱 사용에 적합
8. FreeSD
- 유닉스 계열의 운영체제로, 오픈 소스 운영체제 중 하나
- 성능, 안정성, 보안성에 강조하며, 서버 환경에서 주로 사용됨
- 다양한 애플리케이션과 도구를 지원, 커뮤니티 기반의 개발 형태를 가지고 있음
출처
'OS 운영체제' 카테고리의 다른 글
bitmask (비트마스크) (0) | 2024.09.05 |
---|---|
failover (자동 전환) (0) | 2024.08.27 |
오버헤드 (Overhead) (0) | 2024.08.26 |
shared memory (공유 메모리) (0) | 2024.08.15 |
알아두면 좋은 운영체계의 용어 (0) | 2024.06.01 |