스터디/운영체제

운영체제 - 운영체제 사례

elenalee 2023. 5. 25. 00:33

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단계 구성임  

응용프로그램을 처음설치할때 중간코드를 하드웨어에 맞는 실제 기계코드로 번역, 이후 실행시 번역코드 실행해 성능을 높임 

- 설치시 코드를 번역하는 과정이 포함되어 시간이 오래걸림