All
Linux
오픈 소스 기반의 대표적인 유닉스 계열 운영체제
•
기본 개요
◦
리눅스는 Linus Torvalds가 처음 개발한 오픈소스 커널 기반 운영체제
◦
GNU 프로젝트의 유틸리티들과 결합되어 하나의 완전한 시스템을 구성
◦
다양한 배포판(Distro) 존재: Ubuntu, CentOS, Debian 등
•
장점
◦
오픈소스: 무료로 사용 가능, 커스터마이징 유연
◦
안정성/신뢰성: 서버 운영에 적합, 장시간 실행 가능
◦
풍부한 개발 생태계: 커널 및 도구에 대한 활발한 커뮤니티 지원
◦
보안성: 사용자/그룹 권한 관리, 빠른 보안 패치 적용
•
단점
◦
일반 사용자에게는 GUI 기반 사용성 낮음
◦
상용 소프트웨어 호환성 부족 (MS Office, Adobe 등)
◦
드라이버/하드웨어 호환성에서 이슈가 발생할 수 있음
리눅스 커널
•
리눅스는 일체형 커널(Monolithic Kernel) 구조를 사용
•
일체형 커널 (Monolithic Kernel)
◦
운영체제의 핵심 기능(프로세스 관리, 메모리 관리, 파일 시스템, 네트워크, 드라이버 등)이 하나의 커널 공간 내에서 함께 동작
◦
모든 커널 컴포넌트는 동일한 주소 공간에서 실행되어 빠른 성능을 제공
•
특징
◦
성능이 뛰어남 (시스템 콜과 커널 모듈 간의 전환이 빠름)
◦
모듈화(modularization) 가능 → 필요 시 커널 기능을 동적으로 로드/언로드
•
단점
◦
커널에 버그가 생기면 시스템 전체에 영향
◦
구조가 커질수록 유지보수가 어려움
임베디드 시스템
•
특정 기능만 수행하도록 설계된 전용 컴퓨터 시스템
◦
예: 세탁기, 스마트TV, 자동차 ECU, 라우터 등
•
범용 PC와 달리 입력과 출력이 제한적이며, 소형화되고 저전력
•
경우에 따라 운영체제 없이 구동되거나, 경량화된 OS 사용
실시간 시스템
•
정해진 시간 안에 반드시 결과를 제공해야 하는 시스템
◦
정확성뿐 아니라 응답 시간 보장이 중요
◦
주로 제어, 자동화, 통신, 의료 등 분야에서 사용
•
경성 실시간 시스템 (Hard Real-Time System)
◦
마감 시간을 절대 초과해서는 안 됨
◦
시간 위반 시 시스템 실패로 간주
◦
예: 항공기 제어, 인공심장박동기
•
연성 실시간 시스템 (Soft Real-Time System)
◦
시간 제한을 최대한 지키는 것이 좋지만 약간의 초과는 허용
◦
예: 영상 스트리밍, 실시간 게임
임베디드 리눅스
임베디드 시스템에 최적화된 경량화된 리눅스 배포판
•
임베디드 리눅스는 일반 리눅스에서 불필요한 기능을 제거하고, 특정 하드웨어에 맞춰 최소한의 리소스로 동작할 수 있도록 커스터마이징된 운영체제
◦
OpenWrt, Yocto, Buildroot, Raspbian 등 다양한 형태 존재
•
장점
◦
오픈소스 기반으로 비용 절감 가능
◦
다양한 아키텍처(ARM, MIPS 등) 지원
◦
모듈화와 커스터마이징이 용이
•
단점
◦
하드웨어 자원이 제한되므로 성능 제약
◦
드라이버/하드웨어 호환 이슈가 있을 수 있음
◦
커널이나 디바이스 트리 설정 등 초기 개발 난이도 존재
Windows
•
Microsoft에서 개발한 대표적인 상용 운영체제
◦
사용자 친화적인 GUI 환경과 높은 호환성을 갖춘 데스크탑 중심 OS
•
초기 버전: 1985년 Windows 1.0 출시 (MS-DOS 위에서 동작)
•
본격적인 운영체제화: Windows NT 계열부터 자체 커널 기반 OS로 발전
◦
Windows XP, 7, 10, 11 등으로 이어짐
•
데스크탑, 노트북, 태블릿, 서버 등 광범위한 플랫폼에서 사용됨
윈도우 커널
Windows NT 기반의 커널은 마이크로 커널 구조를 확장한 하이브리드 커널 구조
•
마이크로커널 + 모놀리식 커널의 장점을 결합한 구조
◦
핵심 기능은 커널 모드에서 수행되며, 유연성과 성능을 모두 고려
•
I/O 관리자 (I/O Manager)
◦
파일 시스템, 장치 드라이버, 네트워크 요청 등을 일관된 방식으로 처리
◦
다양한 I/O 방식 지원 (동기/비동기, 캐시 등)
•
GDI (Graphics Device Interface)
◦
윈도우의 그래픽 출력 처리 담당
◦
텍스트, 도형, 이미지 등 사용자 인터페이스 요소를 화면에 렌더링
•
LPC (Local Procedure Call)
◦
프로세스 간 통신(IPC) 기능 제공
◦
커널 모드와 사용자 모드 간 안전한 데이터 전달 가능
•
가상 메모리 관리자 (Virtual Memory Manager)
◦
프로세스마다 고유한 가상 주소 공간 제공
◦
페이징, 스왑, 메모리 보호 등 지원
•
객체 관리자 (Object Manager)
◦
윈도우에서 모든 자원(파일, 프로세스, 쓰레드 등)을 객체로 추상화하여 관리
◦
보안 및 접근 제어 일관성 유지
•
프로세스 관리자 (Process Manager)
◦
프로세스와 쓰레드의 생성, 종료, 스케줄링 등 전반적인 실행 흐름 관리
•
보안 관리자 (Security Reference Monitor)
◦
사용자 인증, 접근 제어, 보안 감사 등의 기능 수행
•
레지스트리 (Registry)
◦
시스템과 응용 프로그램의 설정 정보를 중앙집중적으로 관리하는 DB 구조
Android
모바일 운영체제
스마트폰, 태블릿 등 모바일 기기에 최적화된 운영체제
•
모바일 운영체제의 특징
◦
터치 인터페이스 중심의 사용자 환경 제공
◦
저전력 설계 및 배터리 효율 고려
◦
무선 네트워크 기반 통신 기능 강화 (Wi-Fi, LTE, Bluetooth 등)
◦
앱 중심 구조: 응용 프로그램을 앱 스토어에서 설치하여 기능 확장
◦
센서 및 하드웨어 통합: GPS, 가속도계, 카메라, 마이크 등 다양한 센서 연동
•
대표적인 모바일 운영체제
◦
Android
◦
iOS
▪
Apple의 모바일 운영체제로, iPhone, iPad 등에 탑재
안드로이드 특징
•
ARM, x86 등 다양한 CPU 아키텍처 지원
◦
스마트폰, 태블릿, TV, 웨어러블 등 다양한 디바이스에서 동작 가능
•
리눅스 기반의 일체형 커널 구조
•
운영체제는 C, C++로 작성, 응용 프로그램은 Java(Kotlin) 기반
•
다양한 하드웨어 제조사 지원 → 파편화 문제 존재
◦
다양한 해상도, API 버전, 제조사 커스터마이징 등으로 인해
앱이 일부 기기에서만 동작하거나 호환성 이슈 발생
안드로이드 런타임 (ART: Android Runtime)
Dalvik(기존 가상머신)을 대체한 실행 환경
•
Dalvik 대비 주요 차이점
◦
Dalvik은 Just-In-Time (JIT) 컴파일 방식 사용 → 앱 실행 시 매번 바이트코드를 해석하며 기계어로 변환
◦
ART는 Ahead-Of-Time (AOT) 컴파일 방식 사용 → 앱 설치 시점에 바이트코드를 미리 기계어로 변환
•
AOT 컴파일 방식의 특징
◦
초기 설치 시간은 길어질 수 있음
◦
하지만 실행 시점에는 이미 기계어로 변환되어 있어 앱 실행 속도가 빠름
•
장점
◦
앱 실행 속도 향상
▪
실행 중에 코드를 해석하지 않기 때문에 앱 응답성과 부팅 속도가 개선됨
◦
배터리 효율 개선
▪
실행 중 CPU 연산 부담이 줄어들어 전력 소모가 감소함
◦
메모리 사용량 감소
▪
공유 가능한 기계어 코드 덕분에 중복 로딩이 방지됨
◦
JIT과 AOT 병행 지원 가능 (최신 버전에서는 Hybrid)
▪
실행 중 자주 사용되는 코드만 다시 최적화하여 성능을 유지함
•
단점
◦
앱 설치 시간이 증가
▪
설치 시 AOT 컴파일을 수행하므로 시간이 더 걸릴 수 있음
◦
앱 저장공간 사용량 증가
▪
바이트코드와 컴파일된 기계어 코드가 함께 저장되기 때문에 저장공간을 더 많이 사용함

