소프트웨어 개발 방법 및 도구(4), Selecting Right Operating System

2022. 8. 22. 16:31강의 내용 정리/소프트웨어 개발 방법 및 도구

728x90
반응형

Selecting Right Operating System

문제를 정의하고 그 문제에 적합한 언어를 선택하는 것이 중요하다.


 

Background for selecting OS (in SW development)

1. Business

1) Market share

시장 점유율에 맞춰 개발을 하는 것이 중요하다.

ex) 안드로이드 / IOS -> 스마트폰의 시장 점유율을 파악하고 이에 맞춰 개발을 한다.

cf) 최근에는 OS가 아닌 브라우저에서 돌아가는 web based 프로그램을 짜는 경우가 많다.

 

- 스마트폰의 경우 대부분 Android를 쓰는 것을 확인할 수 있다.

- 전세계적으로 봤을 때 안드로이드 기반 스마트폰의 가격이 아이폰보다 싼 경우가 많다. 또한 국내에서는 안드로이드가 많다. 

- 즉, 출시하고자 하는 소프트웨어는 국가별, 연령에 맞춰 시장 점유율을 고려한 뒤 개발을 할 필요가 있다.

 

 

- 슈퍼컴퓨터인 경우 Unix에서 Linux로 시장 점유율이 옮겨졌고, Linux는 100%의 점유율을 갖게 됐다.

- 맥OS는 unix이다. 

- 데스크탑, 노트북을 제외하면 모두 리눅스화되고 있다. 

 


2. Technical requirement

1) Distributed, Multi & Parallel Processing

ex) 구글, 데이터 사이언스, 클라우드 컴퓨팅 등등


cf) Linux

리눅스는

리눅스는 오픈소스 기반으로 분산되어있고 병렬처리가 가능하다. 이에 따라 개발자들은 리눅스를 많이 사용한다. 또한 대부분의 하드웨어는 리눅스 지원이 가능하다. 반면 윈도우는 인텔 계열 CPU를 벗어나지 못한다.

 

특히 리눅스는 서버에서 강력한 영향력을 끼치는 운영체제이다. 서버 컴퓨터는 한대가 죽더라도 다른 컴퓨터는 살아있어야하는 안정성이 매우 중요하다. 예를 들어 두 대의 컴퓨터가 있을 때 하나가 죽더라도 나머지는 죽지 않아야 안정적이다. 하지만 리눅스는 죽는 경우가 많이 없다. 심지어 라즈베리파이도 잘 돌아간다. 따라서 reliable하다. 또한 리눅스는 오픈 소스로 contribution하기에 기능적으로 매우 우수하다. 

 

리눅스는 유닉스의 네트워킹 기능을 가져왔기에 네트워크적으로도 매우 좋은 기능을 가지고 있다. 또한 업그레이드도 매우 쉽고, 멀티코어로 지원이 가능하고 멀티테스킹/멀티 유저도 가능하다. 그래픽적으로도 많이 좋아졌고, 오픈소스이기에 단점을 빠르게 찾고 해결할 수 있다.

 

위의 특징들 덕분에 리눅스는 서버에서 매우 많은 CPU와 소프트웨어를 사용할 때 활용된다.

 


 

리눅스 커널

대부분의 운영체제에서 커널은 존재하다. 커널은 하드웨어 자원을 관리하고 프로세스 스케줄링, 프로세서를 분리하는 역할을 한다. 리눅스의 커널은 하드웨어와 밀결합되어있기에 작고 안정적이며 대부분 할 수 있다. 리눅스의 커널이 작아서 메모리나 CPU를 적게 쓴다는 장점이 잇다.


리눅스 네트워킹

인터넷을 기반으로한 웹서버를 짤 때 리눅스를 기반으로 짠 것이 많다. 현재 인터넷의 기술 원천이 되기도 한다. 이를테면 TCP/IP는 리눅스를 기반으로 설계가 되었다.


리눅스 vs 유닉스

- 리눅스는 무료이고 유닉스는 돈을 주고 사야한다. 유닉스는 은행/금융권에서 많이 사용된다.

- 유닉스는 안정성이 더 높을 때도 있지만 성능면에서는 리눅스보다 조금 떨어진다.

 


 

2) Realtime processing

실시간성이 중요한 사업(무인자동차 등등)에서 중요하다.


ex) 실시간 게임 등등

 

Case Study) VxWorks

- RTOS(real-time operating system)분야에서 제일 많이 사용되는 OS이다.

- 멀티테스킹도 가능하고, 작업 중 우선순위가 더 빠른 업무가 등장했을 때 이를 처리할 수 있다.

- 병렬처리를 하고 매우 강력하게 안정성을 가지고 있다.

- 자동차 내에 있는 전자기기도 잘 지원하고, 의료 기기들이 만든 통신 스펙을 잘 지킨다.

- 프로그램들 간에 정보를 주고받는 것도 잘 만들었다.

- 에러가 발생했을 때 디버그를 하고, 기기들 간에 내용을 주고 받는 Symbolic debugging을 하는 것을 잘 한다.

- 리눅스 중에서 RT 리눅스는 이를 시도하고자 하지만 VxWorks까지는 성능 보장을 하지 못한다.

 


3) Extremely small hardware resource environment

kb 단위의 컴퓨터에 대해 어떤 OS를 선택할 것인가.


ex) iot 센서 등 매우 작은 하드웨어를 개발하는 경우 

 

 

Case Study) Zephyr

- 아두이노는 OS가 없고 쓸 수 있는 메모리가 매우 작다. 아두이노에 맞춰 만든 OS가 Zephyr이다.

- IoT에서는 Zephyr를 알고 있어야한다.

- 매우 모듈화되어있고, 컨피규레이션되어있고, 필요한 기능에 따라 교체가 용이하다. 

- 커널모드만 지원하기에 작고 빠르게 이를 사용할 수 있다.

- 나노커널은 매우 작고, 마이크로커널은 조금 기능이 추가되어있다.

- 유저 space가 없고 커널로 합쳤다. 다이나믹 런타임 모듈을 사용할 수 없다.

- 동적 메모리 관리는 OS 부담이 크기에 동적할당은 하지 않는다.

- Cross architecture로 IA32, ARM* 등에서 사용 가능하다.

 

- 통신도 가능하고, 보안도 가능하다. 웹서비스 또한 가능하다.

- 멀티 쓰레드 등의 기능을 지원한다.

- 2KB의 메모리만 있으면 동작한다.

- passive한 소재들도 지능을 구현하고 동작할수도 있다.

- 조금 더 큰 메모리를 가지고 있으면 더 많은 기능을 구현할 수 있다.

- 리눅스 본체를 넣는 것보다 훨씬 가볍기 때문에 이를 사용하는 것이 유리하다.

 


4) Secure computing

ex) 로봇, 자동차 등 보안 업체

 

Case Study) TrustZone

- 녹스가 지원되는 것은 보안도 가능하다.

- Arm회사가 만들었다.

- 가입 정보, 위치정보 등 스마트폰에서는 많이 들어가는데 이때 TrustZone이 사용된다.

- TrustZone은 Trusted 환경과 Non Trusted의 공간으로 나눠서 Trusted는 암호화되어서 보안이 강조된다.

- 하드웨어나 하드웨어 회로도 보안 쪽에 있게 되고, Normal World에서 Secure World의 정보를 읽을 때는 Secure OS가 데이터를 읽어서 Normal World에 데이터를 보내준다.

- Secure world의 허가를 받아야하기에 보안에서 우수하다.

 

 

출처


https://www.youtube.com/watch?v=1JsDIbbpgz4&list=PLz7S5PHCu4OniCxtW6jOOQEJEXX7PAUlA&index=6 

https://en.wikipedia.org/wiki/Linux

 

Linux - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Family of Unix-like operating systems LinuxTux the penguin, mascot of Linux[1]DeveloperCommunity contributors, Linus TorvaldsWritten inC, assembly languages, and othersOS familyUnix-li

en.wikipedia.org

 

 

728x90
반응형