학습 개요
- 현대 컴퓨터에서 모바일 장치부터 슈퍼 컴퓨터까지 다양한 이질적인 환경에서 운영 체제가 동작함
- 지금까지 운영 체제의 전반에 대해 공부했는데 실제 우리가 사용하고 있는 운영 체제는 각각 해당하는 내용을 어떻게 반영했는지 실제 사례를 통해 공부함
- 리눅스와, 윈도우, 그리고 안드로이드에 대해 살펴봄
학습 목표
- 리눅스의 특징을 설명할 수 있음
- 임베디드 리눅스의 차이점을 설명할 수 있음
- 윈도우의 특징을 설명할 수 있음
- 안드로이드의 특징을 설명할 수 있음
강의록
Linux
리눅스의 개요
- 1991년 Linus Torvalds가 MINIX에 기반하여 개발
- MINIX
- 마이크로 커널 구조의 아주 작은 수업용 운영체제
- MINIX
- 소스 공개
- 개발자 뿐 아니라 일반인 및 기업용으로 사용 가능한 운영체제
- 인텔 CPU뿐 아니라 ARM 등 다양한 CPU를 지원
- 실습용 컴퓨터부터 슈퍼 컴퓨터까지 널리 사용됨
리눅스의 장점
- 무료로 사용 가능
- UNIX와 완벽하게 호환 가능
- 높은 안정성
- 낮은 성능의 하드웨어에서 동작 가능
- 개인용 컴퓨터에서 서버 기능 수행 가능
리눅스의 단점
- 교육, 유지 보수 문제
- 보안 문제가 상대적으로 심각할 수 있음
- 떨어지는 보급률
- 특정 하드웨어가 지원되지 않을 수 있음
- 최근에 좋아지고 있음
리눅스 커널
일체형 커널
- 소스가 공개되어 있기 때문에 필요 없는 부분은 제거 가능
- 멀티 태스킹, 멀티 유저 시스템
- 멀티 코어, 멀티 프로세서 지원
- 여러 가지 하드웨어 지원
- 리눅스의 대부분은 C 언어로 작성되어 있어 다양한 플랫폼에 손쉽게 이식 됨
- UNIX 표준인 POSIX 표준 지원
- 프로세스 간 통신 지원
- 세마포어, 메시지 큐, 공유 메모리 등
- 다양한 파일 시스템 지원
- ext4, FAT, NTFS, HPFS 등
- 모듈
- 필요한 서비스를 모듈로 만들어, 커널을 교체하거나 시스템을 재시동하지 않고 기능 추가 가능
- 파일 형태의 주변 장치 접근
임베디드 시스템
- 미리 정해진 특정한 기능을 수행하기 위해 하드웨어와 소프트웨어를 결합하여 설계된 컴퓨터 시스템
- 한 가지 일을 잘하도록 설계된 시스템
- ex) 세탁기
- 여러 센서를 이용하여 물의 양, 세탁물에 대한 정보 등 측정
- 효율적인 세탁을 위해 임베디드 시스템의 제어를 통해 동작
- 보통 실시간 시스템에 이용됨
실시간 시스템
- 시스템의 상황과 무관하게 정해진 마감 시간 내에 주어진 이벤트에 반응해야 함
- 실시간 운영체제(RTOS)는 빠르게 주어지는 마감 시간 내에 작업을 처리하는 데 중점을 둠
- 두 가지로 구분
- 경성 실시간 시스템 (Hard real-time system)
- 반드시 마감 시간 내 작업을 완수해야 함
- ex) 항공기 전자 제어 시스템, 심박동기 등
- 연성 실시간 시스템 (Soft real-time system)
- 마감 시간 내 작업을 완수하면 좋지만 못해도 실패는 아님
- 기준에 따라 어떤 작업을 완수할 것인가 결정해야 함
- ex) 멀티미디어 재생
- 경성 실시간 시스템 (Hard real-time system)
임베디드 리눅스
- 임베디드 시스템을 위해 개발 된 리눅스
- 필요한 요건
- 소용량 메모리를 감안하여 운영체제의 크기를 최소화하여 필요한 부분만 남겨야 함
- 저성능 CPU를 감안하여 성능이 최적화되어야 함
- 리눅스는 원래 범용 컴퓨터 시스템을 위한 운영체제이므로 실시간 시스템의 요구 사항에 대응할 수 있어야 함
- 장점
- 무료로 사용 가능하며, 운영체제를 응용에 적합하게 수정 가능
- 많은 사용자와 개발자로부터 검증 받았으며, 많은 검증된 코드를 바로 사용 가능
- 운영체제의 최신 동향 반영
- 리눅스에 익숙한 개발자는 빠르게 적응 가능
- 단점
- 경성 실시간 시스템에 적절하지 못하고 요구되는 H/W 사양 높음
Windows
윈도우의 역사
- PC에서 GUI를 제공하는 것을 목적으로 1985년에 처음 발표
- Windows NT
- POSIX 표준 및 Windows 3.0의 API를 지원하는 Win32 추가
- 서버용 운영체제로 보안과 신뢰성 강화
- Windows 95
- 이전과 달리 윈도우 안에 MS-DOS 포함
- Windows XP
- Windows NT 구조에 Windows 95/98의 사용자 편의성 결합
윈도우 커널
마이크로 커널을 확장한 형태
- 커널 모드에서는 마이크로 커널 위에 여러 서비스가 동작
- I/O 관리자, Win32 윈도우 관리자 GDI, 보안 참조 모니터, LPC 기능, 가상 메모리 관리자, 객체 관리자, 프로세스 관리자 등
- 사용자 모드에서는 OS/2, POSIX, Win32에 대응되는 하위 시스템이 동작
- NT API가 커널 모드와 사용자 모드를 연결
- 커널 모드에서는 마이크로 커널 위에 여러 서비스가 동작
윈도우 커널
- I/O 관리자
- Win32 윈도우 관리자와 그래픽 장치 인터페이스(GDI)
- 사용자의 입력과 화면 출력을 제어
- Win32 하위 시스템이지만 성능 향상을 위해 커널 모드에서 동작
- 보안 참조 모니터
- 자원의 접근 가능 여부 점검
- LPC(Local Procedure Call facility) 기능
- 같은 기계에서 동작하는 프로세스 사이의 정보 교환
- 객체 관리자
- 다른 서비스가 자원을 접근하려면 거쳐야 하는 자원 관리 서비스
- 모든 자원은 객체로 간주
- 프로세스 관리자
Android
모바일 운영체제
- 모바일 환경의 요구 조건
- 배터리로 동작하기 때문에 전력 소모량을 줄여야 함
- 대부분 무선 네트워크로 인터넷에 연결됨
- 터치 스크린 등 입 출력 장치가 일반적인 PC 환경과 다름
- 저 수준 운영체제와 고 수준 사용자 인터페이스가 결합된 형태
- 대표적인 모바일 운영 체제
- 안드로이드
- iOS
안드로이드 개요
- 2008년 처음 발표
- 스마트폰에서 가장 널리 사용 되고 있음
- 셋톱 박스, 스마트 TV, 자동차 등 사용 범위가 넓어지고 있음
안드로이드의 특징
- 기본적으로 소스는 공개되어 있지만, 회사에서 따라 디바이스 드라이버 등이 비공개 되는 경우가 늘고 있음
- ARM, x86 CPU 지원
- 다른 CPU 지원도 이론적으로는 가능
- 리눅스에 기반한 일체형 커널 구조
- C, C++로 구현 된 운영 체제에 Java로 개발 된 응용 프로그램 동작
- iOS에 비해 다양한 하드웨어를 지원하기에 파편화 문제 존재
- 파편화 문제
- 특정 H/W에서만 동작하는 S/W 존재 가능
- 파편화 문제
- 안드로이드 런타임 (ART)
- 응용 프로그램을 처음 설치할 때 중간 코드를 실제 기계 코드로 번역하고, 이후 실행할 때 번역된 코드를 실행해 성능을 높임 (AOT - Ahead-Of-Time 컴파일)
- 설치 시 코드를 번역하는 과정이 포함되기 때문에 설치에 시간이 더 걸림
정리 하기
- 리눅스 커널은 일체형 구조이며, 커널 소스는 공개 되어 자유롭게 수정할 수 있음
- 임베디드 시스템은 미리 정해진 특정한 기능을 수행하기 위해 하드웨어와 소프트웨어를 결합하여 설계 된 컴퓨터 시스템임
- 실시간 운영체제는 주어진 마감 시간 내에 필요한 결과를 얻기 위한 실시간 시스템을 위한 운영 체제임
- 실시간 시스템은 마감 시간을 얼마나 엄격하게 지켜야 하느냐에 따라 경성 실시간 시스템과 연성 실시간 시스템으로 나뉨
- 리눅스는 임베디드 시스템에서 활발히 사용되고 있음
- Windows 95부터 본격적인 GUI를 갖춘 운영 체제의 형태를 갖춤
- Windows XP 이후는 Windows NT의 구조인 수정 된 마이크로 커널에 기반한 운영 체제임
- Windows NT의 커널, I/O 관리자, Win32 윈도우 관리자와 GDI, 객체 관리자, 장치 드라이버 등은 커널 모드에서 동작함
- Android는 iOS와 함께 대표적인 모바일 운영 체제로, 리눅스에 기반한 일체형 커널 구조임