1. 일상생활 속의 운영체제
우리는 컴퓨터나 스마트폰을 켰을 때 가장 먼저 운영체제라는 소프트웨어를 접하게 된다.
그리고 컴퓨터에서 작동되는 모든 프로그램은 운영체제 기반으로 작동된다고 볼 수 있다.
압력밥솥도 운영체제가 있나?
우리가 흔히 알고 있는 운영체제인 Window.Linux, Mac, Android 등을 제외하고도 일상생활속에서 운영체제를 활용하고 있는 경우는 많다.
가정에 있는 밥솥부터 전자도어락까지 운영체제가 기반이 된다.
PC와 같이 다양한 기능을 수행하는 범용성을 지니지는 않는 운영체제를 인베디드 시스템이라고 한다.
2. 운영체제의 목적
운영체제의 주된 목적은 컴퓨터의 하드웨어 자원 관리와 사용자에게 편의를 제공하는 것이다.
컴퓨터에 연결되어 있는 수 많은 하드웨어를 자원을 효율적으로 분배할수록 운영체제의 성능은 좋아진다.
운영체제는 효율적인 하드웨어 자원 관리를 기반으로 사용자에게 적합한 인터페이스를 제공한다.
우리는인터페이스를 통해 사용자는 직접 하드웨어에 접근하지 않고 컴퓨터 자원을 사용할수 있게 된다.
쉽게 빗대어 말하자면,
우리가 식당에서 밥을 먹을 때, 주방에 직접 들어가서 요리를 하거나 주방장에게 오더를 하지 않고 서빙 종업원에게 음식을 주문하는 것과 비슷한 원리라고 할 수 있다.
요약
운영체제의 목적
1. 하드웨어 자원 관리
2. 인터페이스 제공
운영체제의 필요성
운영체제의 역할을 좀 더 세분화하면 아래와 같이 총 4개로 구분지어 볼 수 있다.
1. 자원관리 : 컴퓨터에서 작동되는 여러 프로그램(웹서칭, 문서 작성, 음악 감상 등)을 효율적으로 이용하기 위해서는 자원 분배가 필수적이다. 운영체제는 적당한 순서로 자원을 분배하고 적절하 시점에 자원을 회수하여 응용 프로그램을 작동시킨다.
2. 자원 보호 : 작성하던 문서가 날라간 경험이 있을 것이다. 운영체제 이런 비정상적인 작업으로부터 컴퓨터 자원을 지켜준다.
3. 하드웨어 인터페이스 제공 : 우리는 컴퓨터에 메모리에 저장되어 있는 문서를 인쇄한다고 가정했을 때, 우리는 프린터를 조작해서 해당 문서를 인쇄하지 않고 운영체제에 명령을 내려서 프린터를 작동하게 한다. 이렇게 운영체제는 복잡한 과정 없이 다양한 장치를 사용할 수 있게 해주는 인터페이스를 제공한다.
4. 사용자 인터페이스 제공 : 사용자 인터페이스란 사용자가 운영체제를 편리하게 사용하도록 지원하기 위한 것이다. 과거에는 MS-DOS같은 운영체제를 이용할 할 때는 마우스 이용이 제한되었지만 현재 대부분의 운영체제는 사용자 인터페이스를 제공하기 때문에 마우스로 여러 작업을 진행할 수 있다.
요약
1. 자원관리 → 효율성
2. 자원보호 → 안정성
3. 하드웨어 인터페이스 제공 → 확장성
4. 사용자 인터페이스 제공 → 편리성
01운영체제의 역사
1940년, 펜실비니아대학의 존 모클리와 존 에커트가 최초의 컴퓨터인 '애니악'을 개발했다. 에니악은 사림이 주판으로 7시간 동안 계산했던 것을 단 3초만에 끝냈다.
02 컴퓨터 시스템의 종류
1. 일괄 작업 시스템(1950년대)
초창기의 컴퓨터 시스템에 사용되었던 시스템으로 일정량 또는 일정 기간 동안 데이터를 모아서 한꺼번에 처리하는 방식이다.
대표적인 일괄작업 시스템으로 '천공카드 시스템'을 예로 들 수 있다.
천공카드 시스템은 프로그램을 구성한 후에 카드에 구멍을 뚫어 컴퓨터 입력하는 실행되는 구조로서 프로그램의 실행 결과가 라인 프린터를 통해 출력되었다.
(현재 많이 사용되는 OMR 카드 방식의 모태가 되었다)
2. 대화형 시스템 (1960년 초반)
대화형 시스템은 일괄처리 시스템보다 변환 시간이 빠르며 이용자에게 적극적인 피드백을 제공한다. 사용자에게 작업 중간에 결과 값을 보여줄 수 있고 중간 결과값을 출력하여 프로그램에 이상이 있는지 확인할 수 있게 되었다.
다만 일괄작업 시스템은 입출력이 거의 없어 작업 시간을 예측할 수 있지만 대화형 시스템의 경우 사용자가 얼마 만에 반응할지 알 수 없었기 때문에 작업 시간을 예측하기 힘들어졌다.
3.1 시분할 시스템 (1960년 후반)
1960년 부터 컴퓨터의 크기가 작아지고 성능이 향상 되었다. 다중 프로그래밍 기술의 등장으로 하나의 CPU가 여러 작업을 동싱에 실행할 수 있게 되었다.
여러 작업이 하나의 CPU를 거치게 되면 작업이 끊겨 보일 수 있지만 운영체제를 기반으로 CPU에 각 작업을 할당하기 때문에 동시에 실행되는 것처럼 보이게 된다.
이것이 시간 분할을 하는 '시분할 시스템'이다.
여러 작업을 조금씩 처리하여 작업이 동시에 이루어지것처럼 보이게 하는 시분할 시스템에서 운영체제는시간을 분할하고 여러 작업을 쪼개는 역할을 담당한다.
OS의 기술력이 좋을수록 시간 할당과 분배한 시간이 줄어들어 컴퓨터의 성능이 향상된다.
다만 여러 작업을 동시에 처리하기 위한 추가 작업이 필수적이다. (시분할이라는 개념을 모든 곳에 적용 될 수 없음)
장점
- 일괄 처리 시스템과는 달리 사용자 지향적인 시스템
- 응답 시간이 단축되고 생산성이 향상됨
단점.
- 통신선을 사용자마다 설치하여야 하므로 통신성 비용이 증가하게 됨.
3.2 다중 사용자 시스템
다중 사용자는 여려명의 컴퓨터 사용자에 의한 동시 접근을 허용하는 운영체제나 응용소프트웨어를 정의하는 용어다. 값비싼 컴퓨터를 한 사람 또는 하나의 작업이 독점하는 것이 아니라 여러 사람이 동시에 사용할 수 있는 환경이 만들어 졌다. 최근에는 멀티 태스킹이라는 용어가 이러한 환경에서 더 흔히 쓰인다.
4. 클라이언트/ 서버 시스템(1990년대 ~현재)
서버 클라이언트 시스템이란 위 사진과 같이 여러명의 사용자가 네트워크 통신을 활용해 서버를 접속하고 그 서버와 붙어 있는 데이터베이스를 활용할 수 있는 시스템을 말한다.
분산시스템이 발전한 이유?
네트워크의 발달로 분산시스템이 발전했다고 할 수 있다.
다양한 으용 서비스가 가능해지자 인터넷을 사용하는 일반인이 급속도록 늘어나게 되었는데 웹 시스템은 전형적인 클라이언트/ 서버 구조를 이루고 있다.
하지만 이런 구조는 서버 과부하가 되면 서버가 공급이 중단될 수 있다는 단점이 있다.
5. P2P 시스템 (2000년대 초반~현재)
기존 클라이언/ 서버 시스템의 부하를 줄일 수 있는 새로운 시스템으로 P2P 시스템이 만들어졌다. (업그레이드 개념)
P2P 시스템에서는 서버가 파일 검색만 만타고 사용자와 사용자가 직접 연결되어 있기 때문에 서버 과부하가 적다.
음원스트리밍 사이트와 블록체인 기술의 비트코인이 P2P시스템의 대표적인 예이다.
실시간으로 사용자들끼리 데이터를 전송 받을 수 있고 대용량 파일 공유를 가능하게된 기술은 여러 프로그램이 나타나는 배경되었다.
6. 클라우드 컴퓨팅
클라우드 컴퓨팅은 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스, 네트워킹,등의 컴퓨팅 서비스를 통해 언제 어디서나 응용 프로그램과 데이터를 자유롭게 사용할 수 있는 컴퓨팅 환경을 뜻한다. 컴퓨터 그룹으로 이루어져 있는 클라우드인터페이스에 자원이 존재하고 이 자원들이 네트워크를 기반으로 사용자에게 전달된다.
스마트폰이나 태블릿 PC에서도 코딩이 가능하다?
클라우드 컴퓨팅 기술의 발전으로 기기 간의 데이터 이동이 자유로운 환경이 되었다. 이에 따라 컴퓨터에서만 컴파일이 가능했던 코딩이 스마트 기기 (스마트폰, 태블릿PC)에서 작동하는 환경이 구축 되었다.
JS로 웹 개발을 하는 개발자라면 아래 Codesandbox 기능을 이용하는것을 추천한다.
하지만 코드샌드박스를 이용해보면 알겠지만 클라우드 컴퓨팅은 기반 기술은 데이터 지연 현상이 나타난다는 문제점이 있다.
이를 보완하고자 엣지 컴퓨터 기술이 나타났다.
엣지 컴퓨팅이란 말단 기기에서 컴퓨팅을 수행하여 데이터 처리 속도 및 용량 보안등의 문제를 해결하기 위한 기술이다.
클라우드 컴퓨팅을 사용했을 때, 처리해야 할 데이터 양이 많을수록 시스템에 부하가 생기는 반면 엣지 컴퓨팅은 해당 기기에서 발생되는 데이터만 처리하기 때문에 부하를 줄일 수 있다.
7. 사물 인터넷
최근에 너무 많이 들었을 기술이다. 인터넷으로 연결된 사물들이 데이터를 주고 받고 스스로 학습한 정보를 사용자에게 전달하거나 새로운 서비스를 창출한다.
가천대학교 출신 사업가 송성근 대표가 운영하는 쏠라사이언스는
LED조명, 태양광조명 시스템, 친환경 제품 등의 개발부터 제작, 시공까지 통합시스템을 제공하고 있다.
LED개발 및 ICT융합 스마트조명기술도 사물 인터넷 기술에 기반한다고 볼 수 있다.
기술창업에 관심이 있다면
송성근 대표 관련 영상을 참고해도 좋을듯 하다.
연습문제
1. 운영체제
2. 임베디드 운영체제
3. 응용 프로그램
4. 확장가능성이 없다. 단순 시스템만 작동한다.
5. 인터페이스
6. 일괄 작업 시스템
7. 대화형 시스템
8. 시분할 시스템
9. 일괄 작업 시스템
10. 시분할 시스템, 다중 사용자 시스템
11. 실시간 시스템
12. 분산 시스템
13. P2P 시스템
14. 시스템 호출
15. 장치 드라이버
16. 단일형 구조 커널
17. 마이크로 구조 커널
18. 가상머신
애니악의 원리를 이용해서 게임속에서 하나의 프로그램을 만든 유튜버?
위 사진은 '별고래'라는 게임 유튜버가 '러스트'라는 유명 게임 속 특정 아이템을 통해 논리 게이트마다 전선을 연결하여 6자리 경우의 수를 뽑는 프로그램을 만드는 장면 중 하나다. (약 일주일이 걸렸다고 한다)
위 사진처럼 각 변수에 전기 값을 주는 것이 최초의 컴퓨터인 애니악이 진공관을 전선으로 연결했던 원리와 흡사하다고 생각했다.
필자는 러스트라는 게임을 전혀 모르기 때문에 자세한 작동원리는 아래 링크에 들어가서 확인하는게 좋을 듯 하다.
링크 : https://www.youtube.com/watch?v=KtuHedR2hQ4&t=270s
참고 웹사이트
"임베디드 시스템 이해하기." 카피 블로그. 2020년 7월 13일 접속,http://blog.naver.com/brickbot/220437431956
"시분할시스템 특징." codedraogon. 2020년 7월 13일 접속,https://codedragon.tistory.com/9392
"다중 아용자 -위키백과." 위키백과. 2020년 7월 13일 접속,https://ko.wikipedia.org/wiki/%EB%8B%A4%EC%A4%91_%EC%82%AC%EC%9A%A9%EC%9E%90
"엣지 컴퓨팅이란?." 불곰개인 블로그. 2020년 7월 13일 접속,https://brownbears.tistory.com/431
참고문헌
조성호.쉽게배우는 운영체제.2019발행.한빛아카데미