1. Linux
- 1991년 Linus Torvalds가 MINIX에 기반하여 개발
- MINIX: 마이크로 커널 구조의 아주 작은 수업용 운영체제
- 소스 공개
- 개발자 뿐 아니라 일반인 및 기업용으로 사용 가능한 운영체제
- 인텔 CPU 뿐 아니라 ARM 등 다양한 CPU를 지원
- 실습용 컴퓨터부터 슈퍼컴퓨터까지 널리 사용됨
장점
- 무료로 사용 가능
- UNIX와 완벽하게 호환 가능
- 높은 안정성
- 낮은 성능의 하드웨어에서 동작 가능
- 개인용 컴퓨터에서 서버 기능 수행 가능
단점
- 교육, 유지보수 문제
- 보안 문제가 상대적으로 심각할 수
- 떨어지는 보급률
- 특정 하드웨어가 지원되지 않을 수 있음
리눅스 커널
- 일체형 커널 : 소스가 공개되어 있기 때문에 필요 없는 부분은 제거 가능
- 멀티태스킹, 멀티유저 시스템
- 멀티코어, 멀티프로세서 지원
- 여러가지 하드웨어 지원
- UNIX 표준인 POSIX 표준 지원
- 프로세스 간 통신 지원: 세마포어, 메시지 큐, 공유 메모리 등
- 다양한 파일 시스템 지원: ext4, FAT, NTFS, HPFS 등
- 모듈 : 필요한 서비스를 모듈로 만들어 커널을 교체하거나 시스템을 재시동하지 않고 기능 추가 가능
- 파일 주변의 주변장치 접근
임베디드 시스템
- 미리 정해진 특정한 기능을 수행하기 위해 하드웨어와 소프트웨어를 결합하여 설계된 컴퓨터 시스템
- 한가지 일을 잘하도록 설계된 시스템
- 예: 세탁기
- 보통 실시간 시스템에 이용됨
실시간 시스템
- 시스템의 상황과 무관하게 정해진 마감시간 내에 주어진 이벤트에 반응해야 함
- 실시간 운영체제(RTOS)는 빠르게 주어지는 마감시간 내에 작업을 처리하는 데 중점을 둠
- 두가지로 구분: 경성 실시간 시스템, 연성 실시간 시스템
경성 실시간 시스템: 반드시 마감시간 내 작업을 완수해야 함
- 항공기 전자제어 시스템, 심박동기 등
연성 실시간 시스템: 마감 시간 내 작업을 완수하면 좋지만 못해도 실패는 아님
- 멀티미디어 재생
임베디드 리눅스
- 임베디드 시스템을 위해 개발된 리눅스
- 소용량 메모리를 감앙하여 운영체제의 크기를 최소화
- 저성능 CPU를 감안하여 성능이 최적화
- 리눅스는 원래 범용 컴퓨터 시스템을 위한 운영체제이므로 실시간 시스템의 요구사항에 대응할 수 있어야 함
임베디드 리눅스 장점
- 무료로 사용 가능하며, 운영체제를 응용에 적합하게 수정 가능
- 많은 사용자와 개발자로부터 검증받았으며 많은 검증된 코드를 바로 사용 가능
- 운영체제의 최신 동향 반영
- 리눅스에 익숙한 개발자는 빠르게 적응 가능
- 단점: 경성 실시간 시스템에 적절하지 못하고 요구되는 H/W 사양이 높음
2. Windwos
- PC에서 GUI를 제공하는 것을 목적으로 1985년에 발표
- Windows NT
- Windows 95
- Windows Xp
윈도우 커널
- 마이크로 커널을 확장한 형태
- 커널 모드에서는 마이크로커널 위에 여러 서비스가 동작: I/O 관리자, Win32 윈도우 관리자 GDI, 보안 참조 모니터, LPC 기능, 가상 메모리 관리자, 객체 관리자, 프로세스 관리자 등
- 사용자 모드에서는 OS/2, POSIX, Win32에 대응되는 하위 시스템이 동작
- I/O 관리자
- Win32 윈도우 관리자와 그래픽 장치 인터페이스 (GDI)
- 보안 참조 모니터 : 자원의 접근 가능 여부 점검
- LPC(Local Procedure call) 기능
- 가상 메모리 관리자
- 객체 관리자: 다른 서비스가 자원을 접근하려면 거쳐야 하는 자원 관리 서비스, 모든 자원은 객체로 간주
3. Android
모바일 환경의 요구조건
- 배터리로 동작하기 때문에 전력 소모를 줄여야 함
- 대부분 무선
- 터치 스크린 등 입력장치가 일반 PC와 다름
- 저수준 운영체제와 고수준 사용자 인터페이스가 결합
안드로이드
- 2008년 처음 발표
- 스마트폰에서 가장 널리 사용되고 있음
- 셋톱 박스, 스마트 TV, 자동차 등 사용범위가 넓어지고 있음
안드로이드의 특징
- 기본적으로 소스는 공개되어 있지만 회사에 따라 디바이스 드라이버 등이 비공개 되는 경우 늘고 있음
- ARM, x86 CPU 지원
- 리눅스에 기반한 일체형 커널 구조
- C, C++로 구현된 운영체제에 JAVA로 개발된 응용 프로그램 동작
- iOS에 비해 다양한 하드웨어를 지원하기에 파편화 문제 존재
-> 특정 H/W에서만 동작하는 S/W 존재 가능
- 안드로이드 런타임(ART) : 응용 프로그램을 처음 설치할 때 중간 코드를 실제 기계 코드로 번역하고 이후 실행할 때 번역 코드를 실행해 성능을 높임 -> 설치시 코드를 번역하는 과정이 포함되기 때문에 설치에 시간이 더 걸림
참고자료: 운영체제(김진욱, 이인복 공저, KNOU press 출판)
'CS > 운영체제' 카테고리의 다른 글
운영체제 보안, 보안정책 및 보안 메커니즘, 운영체제 보안 모델, 보안 커널 (0) | 2023.06.16 |
---|---|
분산 운영체제의 개요, 분산 파일 시스템, 분산 메모리, 원격 프로시저 호출 (0) | 2023.06.16 |
저장장치의 종류, 디스크 스케줄링 알고리즘, FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK, SLTF(회전시간최적화), 파일 관리 (0) | 2023.06.16 |
장치 관리, 장치의 개념, 장치의 구성, 입출력 처리 유형, 입출력 관리 (0) | 2023.06.15 |
페이지 교체 알고리즘, 프로세스별 페이지 집합관리 (0) | 2023.06.15 |