Linux
1991년 Linus Torvalds가 MINIX에 기반하여 개발 ( 1987년 앤드류 타넨바움, 운영체제 수업시간을 위해 인텔 프로세서에서 동작하는 유닉스 기반의 MINIX개발 간단하며, 숙제용으로 비어있는 부분도 있음)
특징 :
- 소스공개
- 개발자 뿐 아니라 일반인 및 기업용으로 사용가능한 운영체제
- 인텔 CPU와 ARM등 다양한 CPU지원(다양한 하드웨어 지원)
- 실습용 컴퓨터부터 슈퍼컴퓨터까지 널리 사용됨
장점 :
- 무료
- 유닉스와 호환 (유닉스 표준 POSIX를 거의 준수)
- 안정성 높음 (윈도우에 비해)
- 낮은 성능의 하드웨어에서 구동가능 (소스코드가 공개되어 필요없는 부분을 제거하여 하드웨어 요구사항을 경감, 임베디드 시스템과 같이 특정 임무만 필요한 경우 필요부분 남기고 나머지 없앰)
- 개인용 컴퓨터 서버기능 수행 (메일서버, 뉴스서버, DNS서버, IRC서버로도 활용가능)
단점 :
- 교육, 유지보수 문제 (무료제공이므로 문제 발생시 본인이 직접 해결, RedHat등 관련회사가 유료서비스)
- 보안문제가 상대적으로 심각(소스코드가 노출, 많은 개발자가 보완중이므로 약점이 빠르게 사라지기도 함, 보안위험에 노출되면 복잡한 일 발생)
- 보급율이 떨어짐( 내장형 시스템이나 서버에서 쓰임, 개인용 리눅스가 이전에 비해 늘기는 함)
- 특정한 하드웨어 지원에 문제(낮은 성능 하드웨어에서 구동하므로 강력한 최신 하드웨어 지원에 약함, 최근 좋아지는 상황)
리눅스의 커널
▷ 리눅스는 일체형 커널, 소스가 공개되어 임베디드 시스템의 경우는 불필요부분 제거가능 (일체형 커널의 단점을 피할수 있음)
▷ 멀티태스킹 , 멀티유저시스템 ( 프로세서가 하나여도 시간을 쪼개어 사용하는 시분할(time sharing))
▷ 멀티코어(multi-core), 멀티프로세서(multi-processor)지원 ( 리눅스는 하나의 시스템에 2개 이상의 CPU가 든 멀티프로세서, 하나의 프로세서에 계산담당 코어(core)가 둘이상 들어있는 멀티코어를 모두 지원 )
▷ 여러가지 하드웨어 지원: 리눅스는C언어로 작성 (C언어 컴파일러가 있는 플랫폼에서 손쉽게 이식됨), 인텔 CPU/ARM기반 SoC, Freescale의 68k, PowerPC, MIPS, OpenRISC, RISC-V등 현존하는 마이크로프로세서 대부분을 지원
▷ POSIX표준 지원(유닉스 표준)
▷ 프로세스간 통신지원 (세마포어, 메시지 큐, 공유메모리등 등 통신방법을 지원)
▷ 다양한 파일시스템 지원 (ex4 파일시스템을 기본, FAT,NTFS, HPFS등도 지원 )
▷ 모듈 : 필요한 서비스를 모듈로 만들어, 커널을 교체하거나 시스템을 재시동 하지않고 기능추가 가능 ( 하드웨어 지원 드라이버나 추가기능 서비스를 모듈로 삽입/삭제, 리눅스는 일체형 커널으로 원칙적으로 새 하드웨어가 추가되거나 기능을 추가하려면 커널을 컴파일하고 재시동가능)
▷ 파일형태의 주변장치 접근 : 주변장치를 파일로 인식하며, 데이터를 읽고 쓰는 것을 파일로 간주, 디바이스 드라이버는 파일 시스템에서 읽고쓰는 함수를 디바이스에서 읽고 쓰는 작업에 대응, 다양한 하드웨어 지원
임베디드 시스템
특징 :
- 정해진 특정한 기능을 수행하기 위해 하드웨어와 소프트웨어를 결합하여 설계한 시스템
- 한가지 일을 잘 하도록 설계( 세탁기-여러 센서를 이용하여 물의 양, 세탁물 정보등의 정보를 측정, 임베디드 시스템의 마이크로프로세서의 제어를 통해 동작)
- 실시간 시스템에 이용
** 실시간 시스템 : 시스템 상황과 무관하게 정해진 마감시간 내에 주어진 이벤트에 반응해야 함
** 실시간 운영체제(RTOS)는 1/1000초, 1/백만초의 단위로 빠르게 주어지는 마감시간내에 작업처리하는데 중점을 둠 (일반적인 범용과 목적 및 설계가 다르므로 운영체제도 다름)
1)경성 실시간 시스템 : 반드시 마감시간내에 작업완수해야 함 ex) 자동차엔진제어, 심박동기, 항공기의 전자제어시스템
2)연성 실시간 시스템 : 마감시간내에 작업을 완수하지 못해도 목적달성에 실패는 아님, 기준에 따라 어떤 작업을 완수할지 정함 ex) 멀티미디어 재생
임베디드 리눅스 :
임베디드 시스템을 위해 개발된 리눅스 , 임베디드 시스템의 목표가 되는 응용에 적합하게 리눅스 커널을 최적화하고 불필요한 부분을 제거
필요요건
- 소용량 메모리를 감안하여 운영체제에 필요한 크기를 최소화하며 필요한 것만 남기고 다른 부분 제거 (메인메모리와 보조메모리 모두 작은 크기)
- 저성능 CPU를 감안하여 성능 최적화 (마이크로 프로세서도 범용 컴퓨터 CPU와 기능차이가 큼)
- 리눅스는 범용 컴퓨터 운영을 위한 운영체제이므로, 앞서 실시간 시스템의 요구사항에 대응할수 있어야 함 (Round-robin 불가 등
장점
- 무료로 사용, 운영체제 응용에 적합하게 수정가능
- 많은 사용자와 개발자로부터 검증받았으며, 많은 검증된 코드를 바로 사용 (임베디드 시스템 통신에 쓰이는 TCP/IP, HTTP등 네트워크 프로토콜 지원, 임베디드용 시스템, 컨트롤러, 디바이스 지원코드 찾을수 있음)
- 운영체제의 최신동향을 빠르게 반영
- 리눅스에 익숙한 개발자는 빠르게 적용가능
단점
- 경성 실시간 시스템에 적절하지 못하고 요구되는 H/W사양이 높음
구분
|
실시간 시스템 | 최소 ROM크기 | 최소 RAM | 최소 CPU사양 | 디버깅 용이성 | |
RTOS
|
경성 | 10Kb이하 | Kb단위 | 8비트 이상 | 어렵다 | |
임베디드리눅스
|
연성 | 2MB이상 | 4MB이상 | 32비트 이상 | 쉽다 |
Window
GUI를 제공하는 운영체제, 1985년 발표 ( 1990년 Window3.0 이전에는 MS-DOS라는 text기반 운영체제에 GUI기능을 추가하는 응용 프로그램, PC성능문제로 멀티태스킹 혹은 그래픽처리의 부담 )
WIndow NT (서버용)
-POSIX Window 3.0의 API를 지원하는 win32추가
-서버용 운영체제로 보안과 신뢰성 강화
Window95
- Window안에서 MS-DOS가 작동
Window XP
- Window NT에 95/98의 사용자 편의성 결합
윈도우 커널
- 마이크로 커널을 확장한 커널구조
- 커널모드에서 마이크로커널위에 여러 운영체제의 서비스 동작 (I/O관리자, Win32윈도우 관리자 GDI, 보안참조모니터, LPC기능, 가상메모리관리자, 객체관리자, 프로세스 간리자 등)
- 사용자 모드에서 OS/2, POSIX, Win32에 대응되는 하위시스템이 동작
- NT API가 커널 모드와 사용자 모드 연결
1)I/O관리자 : 사용자 모드에서 동작하는 프로그램이 디바이스를 이용, 읽기/쓰기 요청이 주어지면 드라이버에 이를 전달, 디스크 장치성능 향상을 위한 캐시관리수행
2)Window윈도우 관리자와 그래픽 장치 인터페이스(GDI) : 사용자의 입력과 화면출력을 제어, Win32하위 시스템이지만 성능을 위해 커널모드에서 동작 (그래픽장치 인터페이스(GDI)가 화면에 글씨를 쓰고 선과 곡선을 그림)
3)보안참조모니터: 자원의 접근가능여부를 점검, 접근가능여부,권한획득여부를 점검
4)LPC(Local Procedure Call, 같은 기계에서 동작하는 프로세스 사이의 메시지 정보교환): RPC와 비슷한 형태지만 윈도우에 맞게 최적화
5)가상메모리관리자: 실제 물리적인 메모리보다 큰 메모리를 잡고 RAM과 HDD/SSD사이의 페이지교환을 관리, 각 프로세스별로 물리적인 메모리와 분리된 개별적인 주소공간 할당
6)객체관리자 : 윈도우의 자원을 관리, 주변장치와 같은 하드웨어, 파일과 같은 논리자원등 모든 자원은 객체, 모든 객체는 어떤 타입의 인스턴스, 타입은 이 객체에 관련된 정보 및 수행할수 있는 연산을 정의
7)프로세스 관리자: 프로세스와 쓰레드를 생성하고 중단
안드로이드
모바일 운영체제 : 스마트폰, 태블릿, 스마트워치등 모바일 시스템으로 보급, 자동차등 새로운 응용분야에서 사용 (과거 모바일 환경에서 한가지 목적을 달성하는 것이 주된목적인 임베디드 시스템 -> PC가 수행하던 여러가지 기능을 단말이 수행)
모바일 환경에서의 요구조건
- 배터리로 동작하므로 전력소모량 감소
- 대부분 무선네트워크로 인터넷 연결
- 작은 크기의 터치 스크린이 입력 및 출력장치로 사용되어 입출력장치가 PC환경과 다름
- 저수준 운영체제와 고수준 사용자 인터페이스가 결합된 형태로 운영체제가 개발
대표적인 모바일 운영체제
구글의 안드로이드와 애플의 iOS, 유닉스 기반 ( 안드로이드는 소수 공개, iOS 비공개)
안드로이드 개요
- 2008년 구글이 처음 발표한 모바일 운영체제
- 스마트 폰에서 가장 널리 사용됨
- 스마트폰, 셋톱박스, 스마트 TV, 자동차등 범위확장
특징
- 운영체제 소스는 공개 ( 회사에 따라 디바이스 드라이버등이 비공개되는 경우 증가)
- ARM, x86 CPU를 지원 (다른 CPU지원도 소스가 공개되어 이론적으로 가능)
- 리눅스 기반 일체형 커널구조
- 운영체제는 C와 c++로 구현, Java로 개발된 응용프로그램이 돌아가는 형태로 다양한 하드웨어에서 소프트웨어가 구동 ( 구글은 자체적으로 달빅(dalvik)이라는 가상기계로 하드웨어에서 달빅이 동작하면 응용프로그램이 동작하였음 )
- 애플의 iOS에 비해 다양한 하드웨어 지원, 파편화문제 (특정하드웨어에서만 동작하는 소프트웨어 혹은 특정하드웨어에서는 동작않는 소프트웨어가 존재)
- 안드로이드 런타임(ART: Andriod runtime)이라는 새로운 응용프로그램 동작, 하드웨어 - 안드로이드 커널 - ART - Java응용 프로그램의 4단계 구성임
응용프로그램을 처음설치할때 중간코드를 하드웨어에 맞는 실제 기계코드로 번역, 이후 실행시 번역코드 실행해 성능을 높임
- 설치시 코드를 번역하는 과정이 포함되어 시간이 오래걸림
'스터디 > 운영체제' 카테고리의 다른 글
운영체제 - 메모리 관리 (2) | 2023.06.06 |
---|---|
운영체제 - Concurrent Process (0) | 2023.06.04 |
운영체제 - 운영체제 보안 (0) | 2023.05.24 |
운영체제 - 분산운영체제 (1) | 2023.05.21 |
운영체제 - 저장장치 및 파일관리 (0) | 2023.05.20 |