[OS]운영체제 사례
📚Linux
📄리눅스의 개요
리누스 토발즈는 MINIX를 접하고 이를 바탕으로 실제로 사용할 수 있는 운영체제를 만들 수 있겠다는 생각을 하게 된다. 토발즈가 리눅스를 인터넷에 공개했을 때는 커널을 포함한 매우 작은 부분이 완성되어 있었지만 소스를 공개하면서 전 세계 개발자들이 참여해 현대의 리눅스는 대규모 프로젝트가 되었다. 또한 자유 소프트웨어 재단의 소프트웨어가 추가되면서 일반인과 기업용으로 사용될 수 있는 운영체제가 되었다.
📄리눅스의 장단점
- 장점
- 무료로 사용할 수 있다.
- 유닉스와 완벽하게 호환 가능하다.
- 안정성이 높다.
- 낮은 성능의 하드웨어에서도 동작 가능하다.
- 개인용 컴퓨터를 서버 형태로 동작 가능하다.
- 단점
- 교육, 유지보수 문제가 발생한다.
- 보안 문제가 상대적으로 심각할 수 있다.
- 보급률이 떨어진다.
- 특정한 하드웨어는 잘 지원되지 않을 수 있다.
📄리눅스 커널
MINIX는 마이크로커널을 이용한 구조였지만 토발즈가 리눅스 커널을 일체형 커널로 바꾸어 설계했다. 리눅스 커널은 일체형 커널이지만 소스가 공개되어 있어서 임베디드 시스템의 경우 필요 없는 부분은 제거 가능해 일체형 커널의 단점을 피할 수 있다.
- 멀티태스킹, 멀티유저 시스템
- 멀티코어, 멀티프로세서 지원
- 여러 가지 하드웨어 지원
- POSIX 표준 지원
- 프로세스 간 통신 지원
- 다양한 파일 시스템 지원
- 모듈
- 파일 형태의 주변장치 접근
https://en.wikipedia.org/wiki/Linux
📄임베디드 시스템과 실시간 시스템
임베디드 시스템은 미리 정해진 특정한 기능을 수행하기 위해 하드웨어와 소프트웨어를 결합하여 설계된 컴퓨터 시스템이다. 범용 시스템과 달리 한 가지 일을 잘하도록 설계된 시스템이다.
임베디드 시스템은 보통 마감시간 등의 주어진 시간제약에 따라 동작하는 실시간 시스템에 이용된다. 시간제약은 주어진이벤트에 대한 반응이 시스템의 상황과 무관하게 정해진 마감시간 내에 이루어져야하는 것을 의미한다.
실시간 운영체제(Real Time OS)는 빠르게 주어지는 마감시간 내에 주어진 작업을 처리하는 것에 중점을 둔다. 실시간 시스템은 정해진 마감시간 내에 작업을 완수하지 못했을 때 어떻게 되는가에 따라 다음 두 가지로 나뉜다.
-
경성 실시간 시스템: 반드시 마간시간 내 작업을 완수해야 한다.(자동차 엔진 제어, 심박동기, 항공기 전자제어 시스템)
-
연성 실시간 시스템: 마감시간 내 작업을 완수하면 좋지만, 그렇지 않다고 해서 시스템이 목적달성에 실패한 것은 아니다. 시스템은 기준에 따라 어떤 작업을 완수할 것인가를 정할 수 있다.(멀티미디어 재생)
📄임베디드 리눅스
임베디드 리눅스에 필요한 요건은 다음과 같다.
-
임베디드 시스템의 메인 메모리와 보조 메모리 모두 작은 크기이기 때문에 운영체제의 크기를 최소화하며 기능은 필요한 것만 남기고 다른 부분은 모두 제거하는 방향으로 구성되어야 한다.
-
마이크로프로세서도 보통 범용 컴퓨터 시스템에서 사용되는 CPU와 기능 차이가 크기 때문에 성능이 최적화되어야 한다.
-
리눅스는 원래 범용 컴퓨터 시스템을 위한 운영체제이기 때문에 실시간 시스템의 요구사항에 대응할 수 있어야 한다.
리눅스를 임베디드 시스템에서 사용할 때 얻을 수 있는 장점이다.
-
무료로 사용 가능하고, 운영체제를 응용해 적합하게 수정하여 사용할 수 있다.
-
많은 사용자와 개발자로부터 검증받았으며 흔히 쓰이는 플랫폼에서는 많은 검증된 코드를 바로 사용할 수 있다.
-
임베디드 시스템 간 통신에 쓰이는 TCP/IP, HTTP 등 네크워크 프로토콜을 지원한다.
-
운영체제 최신 동향에 대해 빠르게 반영되고 있다.
-
리눅스에 익숙한 사용자는 사용하고 있는 도구인 툴체인의 설정을 약간만 바꾸어 임베디드 시스템 개발에 이용할 수 있다.
📚Windows
📄윈도우의 역사
대부분 우리가 다루는 운영체제는 마이크로소프트에서 개발한 윈도우이다. PC에서 사용되는 운영체제인 윈도우는 GUI를 제공하는 운영체제로 1985년에 처음 발표되었다. 1985년에 Windows 1.0이 발표되었으나 1990년에 Windows 3.0이 발표되기 전까지 윈도우는 MS-DOS라는 텍스트 기반 운영체제에 GUI를 추가하는 응용 프로그램으로 생각되었다.
1998년부터 마이크로소프트는 IBM과 서버 역할을 담당할 수 있는 운영체제를 개발하게 된다. POSIX Windows 3.0의 API를 지원하는 Win32가 추가된 Windows NT를 발표한다.
1995년 Windows 95가 발표되면서 윈도우의 영향력은 커지게 된다. 이전의 윈도우가 MS-DOS 위에서 윈도우가 동작했다면, Windows 95 부터는 윈도우 안에 MS-DOS가 포함되는 식으로 동작하게 되었다. 이후에 출시한 Windows 98은 여전히 MS-DOS에 기반한 운영체제였기 때문에 발전하는 하드웨어 성능에 부응하지 못했다.
2001년 마이크로소프트는 이 문제를 해결하기 위해 Windows NT 구조에 Windwos 95/98의 편의성을 결합시킨 Windows XP를 발표한다.
2006년에 Windows Vista, 2009년에 Windows 7, 2012년에 Windows 8, 2014년에 Windows 10이 차례로 발표된다. 또한 Windows 8의 발표와 함께 ARM 마이크로프로세서에서 실행할 수 있는 Windows RT가 발표된다. 마지막으로 최신 버전인 Windows 11은 2021년에 발표되었다.
📄윈도우 커널
현재 우리가 사용하고 있는 Windows XP 이후의 윈도우는 Windows NT에 기반하고 있다. Windows NT는 순수한 마이크로커널은 아니고 마이크로커널을 확장한 형태의 커널 구조를 가지고 있다.
- I/O 관리자
- Wind32 윈도우 관리자와 그래픽 장치 인터페이스
- 보안 참조 모니터
- LPC 기능
- 가상 메모리 관리자
- 객체 관리자
- 프로세스 관리자
https://learn.microsoft.com/ko-kr/windows-hardware/drivers/kernel/overview-of-windows-components
📚Android
📄모바일 운영체제
과거 모바일 환경은 한 가지 목적을 달성하는 것이 주된 목적인 임베디드 시스템이 주였다면 현대에는 이전 PC가 수행하던 여러 가지 기능을 모바일 단말기가 수행할 수 있도록 개발되고 있다.
모바일 환경은 일반적인 PC 환경과 다른 요구조건이 발생한다.
-
모바일 장치는 배터리를 통해 동작하기 때문에 전력 소모량을 줄이는 것이 중요하다.
-
대부분 유선이 아닌 무선 네트워크를 통해 인터넷에 연결된다.
-
작은 크기의 터치 스크린이 입력 및 출력 장치로 사용되는 등 입출력장치가 PC 환경과 다르다.
-
저수준 운영체제와 고수준 사용자 인터페이스가 결합된 형태로 운영체제가 개발된다.
현재 구글의 안드로이드와 애플의 iOS가 가장 널리 사용되고 있는 모바일 운영체제이다. 두 운영체제는 유닉스에 기반들 두었다는 공통점이 있지만 안드로이드는 소스가 공개되어 있는 반면 iOS는 소스가 공개되지 않았다는 것을 포함해 많은 차이점이 있다.
📄안드로이드의 개요
안드로이드는 구글이 처음 발표한 모바일 운영체제이다.
안드로이드의 특징은 다음과 같다.
-
운영체제의 소스가 공개되어 있지만 회사에 따라 디바이스 드라이버 등이 비공개되는 경우가 늘고 있다.
-
ARM, x86 CPU를 지원한다. 다른 CPU를 지원하는 것도 소스 코드가 공개되어 있기 때문에 이론적으로 가능하다.
-
리눅스에 기반한 일체형 커널 구조이다.
-
운영체제는 C와 C++로 구현되어 있고 이 위에 Java로 개발된 응용 프로그램이 돌아가는 형태이다. 다양한 하드웨어에서 소프트웨어가 동작하게 하기 위해 Java를 사용하였으며 구글은 자체적으로 달빅이라는 가상기계를 만들어 하드웨어에서 달빅이 동작하기만하면 응용 프로그램이 동작하도록 만들었다.
하지만 이런 동작 방식은 성능에 좋지 않은 영향을 미쳐서 2014년 구글은 안드로이드 5에서 안드로이드 런타임이라는 새로운 방식으로 응용 프로그램을 동작시키고 있다. -
애플의 iOS에 비해 다양한 회사의 다양한 하드웨어를 지원하기 때문에 파편화 문제가 존재한다. 특정 하드웨어에서만 동작하는 소프트웨어가 존재하거나 특정 하드웨어에서는 동작하지 않는 소프트웨어가 존재할 수 있다.
Leave a comment