1.운영체제의 정의 및 목적, 역할
[1] 운영체제의 정의
1) 사용자와 하드웨어 간 상호작용을 위해 사용자 인터페이스를 제공하는 시스템 소프트웨어
2) CPU,메모리 등 하드웨어를 효율적으로 관리
3) 응용 프로그램이 동작할 수 있는 환경, 즉 프로그래밍 인터페이스를 제공
[2] 운영체제의 목적
1) 처리능력 향상 : 일정 시간 동안 처리하는 일의양
2) 반환시간 최소화 : 작업 의뢰 후 시스템에서 결과가 얻어질 때까지의 시간
3) 사용 가능도 향상 : 이용할 수 있는 시스템의 자원이 어느 정도인가
4) 신뢰도 향상 : 주어진 문제를 정확하게 처리하는 정도
[3] 운영체제의 역할
1) 하드웨어 제어, 입력, 출력 등의 관리
2) 한정된 하드웨어 자원을 다수의 이용자가 공유할 수 있게함
3) 한정된 자원의 용량을 효율적으로 사용하기위해 자원 스케줄링 제공
4) 응용 프로그램의 작성과 실행이 편리하도록 시스템 호출을 제공
5) 예상치 못한 오류발생에도 시스템 중단없이 실행하도록 오류복구 기능 제공
5) 수많은 데이터를 조직화 및 저장 할 수 있는 파일 관리 및 데이터베이스 기능을 제공
6) 원격의 컴퓨터와 연결할 수 있는 네트워크 기능 제공
7) 사용자에게 편리한 사용자 인터페이스를 제공
2.운영체제의 구조와 기능
[1] 운영체제의 구조
1) 사용자는 4가지의 방법으로 시스템을 이용할 수 있다.
필요한 응용프로그램을 실행, 셸, GUI, 배치작업 을 통해서 운영체제의 기능을 사용함
2) 응용 프로그램은 시스템 호출을 통해 커널의 서비스를 이용
3) 운영체제는 다양한 하드웨어에 대한 이식성 향상을 위해 하드웨어 추상계층(HAL:Hardware Abstraction Layer) 제공
[2] 운영체제의 기능
1) 리소스 관리
2) 자원 스케줄링
3) 네트워크 제어
4) 데이터관리
5) 자원보호
6) 오류검사 및 복구
7) 가상화 기능
3. 운영체제의 운용 기법
[1] 운영체제 운용 기법의 종류
1) 일괄 처리 시스템
- 초기운영체제의 형태, 여러작업을 한번에 묶어서 처리
- 작업시작하면 결과가 나올때까지 기다려야함-> CPU가 유휴상태(idle)가 됨
- 작업 처리중에는 시스템 이용 못함 -> 자원 사용의 효율성 떨어짐
2) 다중 프로그래밍 시스템(1CPU + 작업단위 스케줄링)
- 일괄처리시스템에서 결과가 나올때까지 기다려야하는 문제점을 해결하기위해 고안
- 하나의 작업이 입출력 중으로 CPU가 쉬고있을때, CPU에 다른작업을 할당하여 CPU사용률과 처리량 향상
- 사용자입장에서는 하나의 CPU이지만 동시에 여러프로그램이 실행되는것 처럼 보임
3) 시분할 시스템(1CPU + 시간단위 스케줄링)
- 다중프로그래밍 시스템은 작업 단위로 CPU스케줄링을 수행했기때문에 입출력(CPU의 쉬는시간)이 늦게 나오는 작업이 있다면 그때까지 다른작업을 수행할수 없기때문에 이를 해결하고자, 타임슬라이스 또는 타임 퀀텀이라 부르는 일정 작업 시간 동안 작업을 실행하고 이 시간이 모두 만료되면 대기 큐에서 다음 작업을 실행하는 운용 기법이다
- 다중 프로그래밍 시스템보다 CPU 사용률과 처리량을 더욱 향상
- 사용자 입장에서는 다중 프로그래밍 시스템보다 더욱 동시에 여러 작업이 실행되는 것으로 보인다
4) 다중 처리 시스템(여러CPU + 병렬처리)
- 여러개의 CPU를 통해 동시에 여러개의 작업처리, 병렬 처리 시스템이라고도 한다
- 비대칭적 다중처리와 대칭적 다중처리로 나뉨
- 비대칭적 다중처리는 프로세스간 주종관계가 있으며 주프로세스의 명령에 따라 종 프로세스가 작업을 처리
- 대칭적 다중 처리는 다시 SMP(Symmetric Multi-Processing)와 MPP(Massively Parallel Processing)로 나뉨
5) 실시간 처리 시스템
- 작업요청에서 결과나올때까지의 요구한 시간안에 수행해야하는 시간적 제약이 있는 운용방식
- 시간적 제약의 엄격한 정도에따라 경성 실시간 처리시스템과 연성 실시간 처리시스템으로나뉨
- 경성 실시간 처리 시스템은 제한시간안에 반드시 작업 처리 완료해야하며 무기제어, 산업 로봇 등에서 사용
- 연성 실시간 처리 시스템은 제한시간안에 완료 못하더라도 시스템에 큰 영향 안미치는 시스템으로 동영상 재생 시스템 등이 이에 해당
6) 다중 모드 시스템
- 일괄 처리, 다중 프로그래밍, 시분할, 다중 처리, 실시간 처리 시스템을 모두 혼용하여 사용할 수 있는 운용 시스템
7) 분산 처리 시스템
- 개별프로세서, 하드웨어 자원과 이를 구동하는 운영체제를 갖는 독립적인 시스템들 간에 통신망을 연결하고 시스템이 수행해야할 작업을 분산하고 각시스템의 자원을 공유하여 처리량과 응답시간, 가용량을 극대화 하기 위한 시스템
- 하나의 운영체제 하에서 여러개의 프로세서가 하나의 메모리를 공유하는 방식인 강결합(Tightly-Coupled)이 아닌 둘 이상의 독립된 시스템이 통신으로 연결되고 상호작용하는 약결합(Loosely-Coupled) 방식이다
- 물리적인 시스템 간 연결을 넘어 유휴 자원의 효율적 활용을 위해 가상화 기술을 기본적으로 내장하거나 커널단에서 지원함으로써 가상화 시스템 간 또는 가상화 시스템과 물리적 시스템 간의 분산 처리 형태로 진화하고있다
4.운영체제의 사례
[1] 데스크톱 및 서버 운영체제
1) 윈도우
- 빌게이츠와 폴 앨런이 설립한 마이크로소프트에서 제작한 그래픽 사용자 인터페이스 기반 개인용 컴퓨터 운영체제
2) macOS
- 스티브 잡스와 스티브 워즈니악이 설립한 애플에서 개발한 유닉스/다윈 기반 Mac 기기 전용 운영체제
- 스티브 잡스가 설립했던 NeXT에서 만든 NeXTSTEP 후속 운영체제
3) 리눅스(Linux)
- 핀란드의 헬싱키 대학 학생이었던 리누스 토발즈는 자신의 386 컴퓨터에서 유닉스에 호환되는 운영체제를 개발하였고 1991년 9월 17일에 리눅스 0.01 버전을 개발 하였다. 하지만 일반인에게 공개하지는 않았다
- 1991년 10월 5일에 리눅스 커널의 첫 정식 버전 0.02이 뉴스그룹(comp.os.minix)에 발표되면서 리눅스의 역사가 시작되었다
- 리눅스 커널은 전세계의 수많은 개발자들이 공동으로 개발하는 공개 프로젝트 형식으로 진행되었다
- 리차드 스톨만이 진행하고 있던 GNU 프로젝트는 리눅스 커널에서 동작할 수 있는 다양한 애플리케이션을 개발하고 제공하였으며 이를 패키기로 묶은 리눅스 배포판이 릴리즈되기 시작했다. 그 가운데에는 데스크톱용 리눅스도 있었다
- 데스크톱용 리눅스에는 우분투, CentOS 등이 있다
4) 유닉스(UNIX)
- 유닉스는 1969년 미국의 AT&T 사의 벨 연구소의 켄 톰슨 및 데니스 리치에 의해 개발된 교육 및 연구개발용 범용 다중 사용자 방식 시분할 운영체제이다
- 상당수 C언어로 개발되어 있어 새로운 플랫폼에 이식하기가 용이하였고 명령행 인터프리터, 계층적 파일 시스템, 장치와 프로세스 간 통신을 파일을 매개체로 수행하는 특징이 있었으며, 리눅스에 영향을 주었다.
- 유닉스는 AT&T에서 처음에 무료로 여러 연구소 및 대학교에 소스코드를 보급하면서 다양한 버전의 유닉스가 등장한 계기가 되었고 대표적인 것으로 System V 계열과 BSD 계열이 있다
[2] 모바일 및 임베디드 운영체제
1) 안드로이드
- 2005년 안드로이드사를 구글에서 인수한 후 2007년 11월 안드로이드 플랫폼을 휴대용 장치 운영체제로서 무료 공개한다고 발표한 이래로 다양한 벤더 사를 통하여 스마트폰 및 모바일 기기를 위한 운영체제로 개발되고있다
- 리눅스 커널과 네이티브 환경에서 구동하는 C/C++라이브러리와 안드로이드 런타임을 기반으로 동작하는 애플리케이션 프레임워크와 이를 사용하는 애플리케이션으로 구성
- 스마트폰 및 모바일 기기를 위한 미들웨어, 사용자 인터페이스, 웹 브라우저, 이메일 클라이언트, 메시지 등의 표준 응용 프로그램을 포함하고 있는 일종의 소프트웨어 스택이기도 하다
- 기존의 가상머신이었던 달빅을 더이상 채용하지 않고 안드로이드 런타임 이라는 새로운 가상 머신을 제공하며, 이를 기반으로 자바와 코틀린으로 개발된 애플리케이션을 별도의 포르세스에서 실행하는 구조로 되어있다
2) ios, watchOs,iPadOs,tvOs
- 애플이 만든 모바일 운영체제들이다
3) 타이젠(Tizen)
- 인텔과 삼성의 주도로 리눅스 재단, MeeGo 개발자가 합류하여 개발한 리눅스 기반 오픈소스 모바일, 웨어러블, IVI 기기용 운영체제
- 구글의 안드로이드를 견제하기 위한 목적으로 개발... 하지만 수차례 시도 끝 2018년 삼전 타이젠폰 개발 사실상 중단
- 이후 삼성전자는 모바일 분야가 아닌 스마트 TV 및 스마트 워치에 타이젠을 탑재하여 플랫폼 확산에 공을 기울이고있다
4) 임베디드 리눅스
- 라즈비안은 영국의 라즈베리파이 재단에서 만든 초소형/초저가 오픈소스 하드웨어로서, 라즈베리파이용 데비안 리눅스 기반 운영체제
- webOS는 Palm에서 시작하여 LG전자에서 개발 중인 모바일 및 스마트 TV, IoT용 운영체제이다. 2016년 LG전자가 webOS에 대한 모든 권한을 HP로부터 인수받아 개발 중이며, 모바일 분야보다는 스마트 TV, 디지털 사이니지(digital signage), 스마트 냉장고 등 틈새 영역의 디바이스에 탑재하여 확산을 노리고 있다
- IVI(In-Vehicle Infotainment)에 MS의 Windows Embedded Automotive, QNX, GENIVI, Android Auto, Apple Carplay와 같은 다양한 IVI용 OS들이 존재한다
[3] IoT(Internet of Things) 운영체제
1) Linux
- Android Things : 2016년 12월 31일에 공개된 안드로이드 기반 사물 인터넷 플랫폼이다. 저전력, 한정된 자원, 센서 중심 디바이스에 맞춰 디자인됨
- Ubuntu Core : IoT를 위해 보안성을 강화하고 가볍고 안정적으로 동작하도록 우분투를 최적화한 운영체제
2) Windows IoT
- 기존의 윈도우 임베디드 운영체제를 IoT에 맞게 최적화한 MS개발 윈도우 계열 운영체제
3) RTOS
- FreeRTOS : 소형 저출력 엣지 디바이스를 쉽게 프로그래밍, 배포, 보안, 연결 및 관리할 수 있는 마이크로컨트롤러용 오픈소스 운영체제이다
- VxWorks : 미국의 윈드리버 시스템 사가 만들어 판매하는 실시간 운영체제(RTOS)이다
- QNX : 임베디드 시장에서 주로 사용하고 있으며 유닉스 기반 실시간 상업용 운영체제이다. 블랙베리에 QNX가 탑재되었고 자동차 산업에서 주로 사용하고 있다
4) 경량 OS
- Contiki : 한정된 메모리, 저전력, 무선통신, IoT 디바이스에 초점을 둔 BSD(Berkeley Software Distribution) 라이선스를 갖는 오픈소스 네트워크 운영체제이다. Contiki는 스마트 도시의 여러 시설에 적용되고있다. 예를 들면 거리조명제어, 사운드 모니터링, 방사선 모니터링, 각종 알람 시스템에 사용되고 있다
- TinyOS : 세계에서 가장 큰 센서 네트워크 커뮤니티를 갖는 UC버클리에서 개발한 센서 네트워크형 무료 운영체제이다.소스를 완전 공개하여 지속적으로 플랫폼이 발전하고 있다
- RIOT : IoT를 겨냥한 실시간 운영체제이다. 리눅스가 접근하기에는 어려운 8.16,32bit 플랫폼을 타겟으로 한다. 특히 32bit 플랫폼의 경우 RAM이 20kb 이하의 매우 작은 하드웨어이다.
'서버&백엔드 > 🐧 Linux' 카테고리의 다른 글
[Kali Linux] SSH를 통해 원격으로 리눅스서버 접속 (0) | 2023.07.15 |
---|---|
[리눅스마스터 1급] X 윈도우 (1) | 2023.07.09 |
[리눅스마스터 1급] 리눅스의 구조 (0) | 2023.07.09 |
[리눅스마스터 1급] 리눅스와 하드웨어 (0) | 2023.06.29 |
[리눅스마스터 1급] 리눅스의 기초 (0) | 2023.06.28 |