[리눅스마스터1급] 운영체제의 개요

이기적 영진닷컴
21 팔로워
2024. 10. 30.
이 동영상은 [이기적 리눅스마스터 1급 기본서] 도서 내용을 바탕으로 제작되었습니다.
🔹 도서 자세히 보기 : http://www.yes24.com/Product/Goods/107516029
🔹 이 동영상이 포함된 재생목록 : https://www.youtube.com/playlist?list=PL6i7rGeEmTvpVQ0Vk6ql9fdkJ8ubXhvMw
🔹 모르는 문제? [이기적 스터디 카페] 질문하기 : https://cafe.naver.com/yjbooks
🔹 이기적 홈페이지 : https://license.youngjin.com
🔹 인스타그램 : https://www.instagram.com/license.youngjin_official/
안녕하세요. 이기적리눅스 마스터의 저자 최정현입니다.
이 시간에는 운영체제의 개요에 대해서 설명드리도록 하겠습니다.
먼저 운영체제의 정의에 대해 설명드리겠습니다.
운영체제라는 용어는 아마 낯선 용어는 아닐 거라고 생각이 됩니다.
여러분들의 스마트폰에도 이미 운영체제가 들어가 있죠?
아이폰의 경우에는 iOS 운영체제가 들어가 있고
갤럭시폰과 같은 폰에는 안드로이드OS라는 모바일 전용 운영체제가 들어가 있습니다.
또한 PC는 윈도우즈라는 운영체제가 들어가 있고
맥북에는 애플의 맥 기기들에는 맥OS라는 운영체제가 들어가 있죠.
그리고 이 서적을 구매하고 공부하고 계신
여러분 덕지들께서는 리눅스에 대해서 관심이 많으실 텐데
리눅스 또한 운영체제의 일종이라고 보실 수 있습니다.
그러면 이러한 운영체제는 어떻게 정의해야 될까요?
이 오른쪽에 이 그림을 먼저 살펴보겠습니다.
가장 안쪽에 보시면 하드웨어가 있습니다.
이 하드웨어는 컴퓨터 시스템이라고 보시면 됩니다.
그 바깥에는 커널이 있고 그 바깥에는 쉘 또는 운용 프로그램이 있습니다.
그 바깥에는 사용자가 있습니다.
이 사용자가 이 하드웨어를 접근하기 위해서는
이 사용자가 바로 하드웨어에 접근할 수 있는 게 아니라
쉘이나 커널, 쉘을 경유해서 커널을 경유해서
그리고 하드웨어에 접근할 수 있음을 의미합니다.
이 사용자가 하드웨어에 바로 접근을 할 수는 없었다는 것을 의미합니다.
사용자가 이 하드웨어가 어떻게 동작하는지 자세히 알지 못하기 때문에
바로 접근하기는 어렵고
이 쉘이 제공하는 훈련의 사용자 인터페이스를 통해서
커널을 경유해서 하드웨어를 접근해서 사용할 수 있게 되는 것입니다.
그래서 운용체제는 이 쉘과 커널을
이 응용 프로그램 이 세 가지를 포함해서 운용체제라고 부르고 있습니다.
이 그림을 조금 더 자세히 설명드리겠습니다.
이 하드웨어의 부분을 보시면 컴퓨터 시스템이라고 생각하시면 된다고 했는데
컴퓨터 시스템은 어떤 걸로 이루어졌을까요?
보통 입력장치, 처리장치, 출력장치
여기에 한 가지 더 이야기하자면
저작장치까지 해서 이들로 이루어진 시스템을 컴퓨터 시스템이라고 부릅니다.
입력장치에는 키보드, 마우스, 스마트폰 같은 경우에는
터치스크린 같은 것들이 입력장치가 될 거고요.
처리장치에는 주황처리장치인 CPU나
그래픽 처리에 최적화되어 있는 GPU같은 것들이 처리장치가 됩니다.
출력장치에는 어떤 화면으로 뭔가 보여주기 위한 디스플레이 장치나
인쇄물로 보여주는 프린터장치, 가상현실을 경험하게 하는
헤드마운트 디스플레이 같은 것들도 출력장치에 해당할 수 있습니다.
이런 하드웨어들을 동작시키는 방법을
사용자가 전문가가 아니기 때문에
그 내용을 상세히 알 수 없기 때문에
이를 커널이라고 하는 일종의 프로그램이
이 하드웨어를 관리하는 역할을 합니다.
이 하드웨어의 여러 구성요소들을
적정한 곳에 분배하고 스케줄링을 하거나
성능을 최대한으로 끌어올려서
효율을 가져다주는 그런 관리 기능을 수행합니다.
또한 이런 커널만 있다고 해서
이 하드웨어를 사용자가 쓸 수 있는 건 아니겠죠?
그래서 이 커널 바깥쪽에는
셸이나 이러한 응용 프로그램이 있습니다.
셸은 사용자에게 특히 어떤 사용자 인터페이스를 제공합니다.
이 사용자가 하드웨어를 사용할 수 있는
사용자 인터페이스를 제공하는데
쉽게 생각해서 여러분들이 쉽게 보신 메뉴나 버튼
버튼을 눌러서 클릭을 해서 어떤 기능을 수행하시죠?
이런 것들이 사용자 인터페이스라고 보실 수 있습니다.
특히 방금 설명드렸던 어떤 그래픽 요소를 이용해서
인터페이스를 하는 방식을 GUI, 그래픽 유저 인터페이스라고 하고요.
그래픽한 요소가 아니고 캐릭터, 문자를 입력을 해서
하드웨어를 동작시키게 하는 방식이 CUI, 캐릭터 유저 인터페이스라고 합니다.
혹은 캐릭터가 아닌 어떤 명령어를 입력해서
하드웨어를 구동하는 방식을 커맨드 라인 인터페이스, CLI라고 합니다.
그리고 오른쪽에 보시면 응용 프로그램이 있습니다.
이 응용 프로그램도 마찬가지로 이 하드웨어를 직접적으로 액세스해서
하드웨어를 구동하기에는 이 하드웨어에 대해서 자세히 알아야 할 필요가 있는데
그건 또 쉽지가 않은 일입니다.
그래서 이 커널이 이 어플리케이션을 구현할 수 있는
일련의 프로그래밍 인터페이스를 제공합니다.
그래서 응용 프로그램은 프로그래밍 인터페이스를 통해서
손쉽게 하드웨어에 맞는 어떤 기능을 수행하는 프로그램을 만들 수 있는 거죠.
그리고 이런 프로그램을 통해서 사용자에게 어떤 특정한 서비스를 제공할 수 있게 됩니다.
예를 들면 문서 작성 서비스라든지 메일이라든지
웹 브라우징이라든지 어떤 회계 관리 프로그램이라든지
여러 다양한 서비스들을 응용 프로그램에게 제공할 수 있습니다.
또한 커널이 어플리케이션에게 프로그래밍 인터페이스를 제공함으로 해서
하드웨어에 대해 자세히 알 필요가 없다고 말씀드렸는데요.
이렇게 함으로써 다른 하드웨어를 교체되더라도
응용 프로그래밍은 크게 신경쓸 필요가 없습니다.
그런 부분은 커널이 다 관리를 해주기 때문입니다.
그래서 운영체제를 정의를 내려야 할텐데
운영체제는 여기 보시면 커널, 쉘, 응용 프로그래밍
이 세가지를 합쳐가지고 운영체제라고 보시면 이해가 쉽습니다.
최초의 리눅스라고 리눅스 토발제에 의해서 리눅스가 개발됐을 때는
그 당시에는 이 커널 이 부분만을 리눅스라고 불렀었습니다.
하지만 그 이후에 자유소프트웨어전용에서
사용자에게 유용한 응용 프로그램이나 쉘 등을 묶어서
패키징을 제공했는데 그렇게 됨으로써 리눅스의 의미가
이 커널만이 아니고 쉘과 응용 프로그램을 포함한 의미까지 확장되어
리눅스라는 용어의 의미가 확장되게 되었습니다.
그러면 운영체제의 정의를 한번 살펴보겠습니다.
사용자와 하드웨어 간의 상호작용을 위해
사용자 인터페이스를 제공하는 시스템 소프트웨어입니다.
사용자 인터페이스의 의미는 설명을 드린 것 같고요.
시스템 소프트웨어라는 의미는 응용 소프트웨어와 대비해서 이해하시면 편리합니다.
응용 소프트웨어는 사용자에게 어떤 서비스를 제공하는 프로그램입니다.
반면 시스템 소프트웨어는 그러한 응용 소프트웨어의 서비스를 제공하는 소프트웨어를
특별히 시스템 소프트웨어라고 합니다.
운영체제도 시스템 소프트웨어 일종이고요.
어떤 프로그램을 개발하기 위한 컴파일러도
응용 시스템 소프트웨어라고 볼 수 있습니다.
혹은 개발 도구들, 비주얼 스튜디오라든지 GCC같은 것들도 시스템 소프트웨어라고 볼 수 있습니다.
그 다음 이 하드웨어 운영체제에는 셸, 커널 응용품으로 이루어져 있고
커널은 하드웨어로 관리한다고 했었죠.
그렇기 때문에 이 하드웨어에는 주형 처리 장치, 메모리 주변 장치 등이 있다고 말씀드렸습니다.
이런 것들을 효율적으로 관리하고요.
응용프로그램에 동작할 수 있는 환경 프로그래밍 인터페이스를 제공한다고 했습니다.
특히 이 그림에서는 이 커널이 응용프로그램이나 셸에게 프로그래밍 인터페이스를 제공합니다.
이 셸도 응용프로그램과 동일한 응용프로그램을 보시면 됩니다.
하지만 사용자에게 어떤 사용자 인터페이스를 이용하는 중요한 기능을 생각하고 있기 때문에
특별히 셸이라는 이름이 추가적으로 붙였다고 보시면 되겠습니다.
운영체제의 목적에 대해 설명드리겠습니다.
운영체제는 사용자의 입력을 받아서 그 입력을 잘 처리를 해서 사용자에게 결과를 보여주는 게
운영체제의 주요 기능이라고 볼 수 있는데요.
운영체제의 목적은 이 기능에 빗띄어서 조금 보시면 이해하기 쉬울 것 같습니다.
운영체제는 일정 시간 동안에 처리하는 일의 양인 처리능력, 스루프의 향상을 목적으로 합니다.
그래서 사용자의 입력, 처리, 출력, 그 가운데 처리를 할 때
그 처리를 단위 시간당 얼마나 많은 양의 일을 할 수 있냐를 의미하는 처리능력의 향상을 목적으로 하고요.
그 다음 작업 의뢰, 그러니까 사용자가 입력장치를 위해서 컴퓨터에 작업 의뢰를 한 후에
시스템에서 결과가 나올 때까지 그러니까 출력이 될 때까지 의미하는 시간, 응답 시간
턴 어라운드 타임의 최소화를 목적으로 합니다.
그러니까 최소화하는 게 목적이다.
여기서 턴 어라운드 타임은 반환 시간이라고 보시는 게 조금 더 정확한 의미일 것 같습니다.
이 응답 시간은 리스폰시브 타임으로도 해석될 수 있기 때문에
반환 시간으로 조금 고쳐서 보시는 게 좋을 것 같습니다.
즉, 다시 설명드리면 시스템에게 어떤 작업 의뢰를 하고 나서
그 결과가 나올 때까지 시간, 그 시간을 턴 어라운드 타임이라고 하고
혹은 반환 시간이라고 하고 그 시간을 최소화하는 것을 목적으로 합니다.
그 다음 주어진 문제를 정확하게 처리하는 정도로 됐다는 신뢰도의 향상을 의미합니다.
사용자가 컴퓨터 시스템에게 어떤 입력을 하고 그 처리 결과가 부정확하다면 의미가 없겠죠.
그래서 그 신뢰들의 향상, 정확한 처리가 될 수 있음을 의미하는 신뢰들의 향상을 목적으로 합니다.
이용할 수 있는 시스템의 자원이 어느 정도인가를 의미하는 사용 가능도의 향상
그러니까 여러분들이 컴퓨터의 하드디스크 용량을 보시면 100MB짜리와 1GB짜리 용량이 다르죠.
100MB짜리는 100MB만큼의 데이터를 저장할 수 있는 반면에
1GB짜리는 100MB보다 10배의 높은 저장 공간을 가지고 있게 되는 것이죠.
이런 사용 가능도의 향상을 목적으로 합니다.
이런 사용 가능도가 높다면 담을 수 있는 데이터가 맞기 때문에
위에서 보시면 이 처리 능력의 향상으로 가져올 수 있는 가능성이 높겠죠.
다음, 운영체제의 역할입니다.
운영체제는 사용자의 하드웨어 접근이 용이하도록
운영체제가 하드웨어의 제어, 입력, 출력 등의 관리를 수행합니다.
이 제어는 처리라고 이해하셔도 크게 무방합니다.
한정된 하드웨어 저항을 다수의 이용자가 공유할 수 있는 기능을 수행합니다.
한정된 하드웨어 저항을 효율적으로 사용할 수 있게 제공해야 되는데
한 명의 사용자보다는 두 명의 사용자가, 두 명의 사용자보다는
세 명의 사용자가 이용할 수 있다면 이 하드웨어를
더욱더 효율적으로 사용할 수 있게 되는 것이겠죠.
그래서 그러한 기능을 제공하고요.
그런 역할을 수행하고요.
프로세스 메모리, CPU 등의 한정된 자원의 용량을 효율적으로 사용하기 위해
자원 스케줄링을 제공합니다.
그 다음, 응용 프로그램의 작성과 실행이 필요하도록 시스템 호출을 제공합니다.
앞쪽에 설명드렸던 프로그램 인터페이스를 다른 말로 시스템 호출이라고도 합니다.
예상치 못한 오류가 발생하더라도 시스템을 중단하지 않고
실행할 수 있는 오류 복구 기능을 제공합니다.
컴퓨터 시스템이 여러분들이 생각해 보시면
요즘에는 커피를 주문할 때도
사람이 주문을 받는 게 아니고
무인 주문기, 포스기를 이용해서 주문을 받죠.
이러한 시스템이 만약 오류가 발생하여서
주문을 받을 수 없다면 문제가 될 테니까
이런 경우에도 복구할 수 있도록
자동으로 복구할 수 있는 그런 기능을 운영시켜서
그런 역할을 제공합니다.
또한 사용자가 다양하고 촌만한 데이터를 접촉하고 저장할 수 있는
파일 관리, 데이터베이스 기능 같은 것들을 제공하고요.
로컬에 있는 컴퓨터가 아닌 원격에 있는 컴퓨터도
연결할 수 있는 네트워크 기능도 제공합니다.
또한 사용자에게 편리한 사용자 인터페이스를 제공합니다.
가령 스마트폰 같은 경우에 터치 인터페이스
그러니까 제스처 같은 걸 이용해서
오른쪽 스와이프, 왼쪽 스와이프, 더블 터치를 두 번 한다든지
이런 것들을 사용해서 스마트폰에 참 편리한
사용자가 사용하기 쉬운
사용자가 사용하기 쉬운 인터페이스를 제공함으로써
스마트폰이 대중적으로 퍼지게 되는 요인이 되기도 했죠.
그리고 이런 사용자 인터페이스 사용자에게 또
사용자가 편리하게 제공할 수 있도록
유저 인스터베리스, UX의 중요도가 높아지기도 했었습니다.
다음, 운영체제의 구조와 기능에 대해 설명드리겠습니다.
먼저 운영체제 구조를 살펴보시겠습니다.
앞에서 보셨던 그림 기억나시나요?
맨 안쪽이 하드웨어, 그 다음 커널, 그 바깥쪽이 쉘,
그 바깥쪽이 사용자라는 그림이 있었죠?
그 그림을 조금 더 자세하게 풀어 보았습니다.
하드웨어가 있고, 이쪽이 커널이라고 보시면 됩니다.
이쪽이 응용 프로그램이나 쉘이라고 보시면 되고요.
하드웨어는 컴퓨터 시스템이라고 말씀드렸고,
입력장치, 처리장치, 출력장치가 있다고 말씀드렸고,
커널은 하드웨어를 관리한다고 했습니다.
하드웨어는 여러가지 요소들이 있기 때문에
각 요소들에 대해서 대응하는 이런 모줄들이,
컴포넌트들이 커널에는 있고요.
가령 하드디스크에 존재하는 파일들이나
파일들을 효율적으로 관리하기 위한 파일 시스템,
혹은 하드웨어 디스크에 저장되어 있는 프로그램을 실행시켜서
사용자에게 서비스를 제공하는 부분을 잘 관리하기 위한
프로세스 관리 부분,
하드웨어에 있는 메모리 부분들,
메모리 장치를 관리하는 메모리 관리,
다양한 리소스를 관리하기 위한 리소스 관리,
외부 사용자가 기기 내에 있는 정보들을 유출하지 않도록
막아주는 보안장치,
에러가 발생했을 때 이를 복구하거나
감지하고 사용자에게 알려주는 에러처리 부분,
하드웨어 제어 부분,
그리고 이 하드웨어는 여러 명의 사용자가 사용할 수 있다면
이런 것들을 관리해주는 사용자 관리,
그리고 이 하드웨어에 지속적으로 액세스하는 것이 아니라
중간에 하드웨어 추상계층이라는 것을 두어서
하드웨어가 변경되더라도 변경 부분은
이 추상계층에서 담당을 해주기 때문에
이 윗부분들은 하드웨어 변경에 신경 쓰지 않도록
해주는 역할을 수행해주는 하드웨어 추상계층,
이런 것들이 커널에서 담당하는 기능이라고 보실 수 있습니다.
이 커널은 바깥쪽으로 응용 프로그램에게
프로그램의 인터페이스를 제공한다고 했었고
디눅스에서는 유닉스 계열에서는 시스템 콜이라고 부르고 있습니다.
서쉘, 응용 프로그램,
GNN 유저 인터페이스 일종이었죠.
배치 프로그램 같은 것들을 제공합니다.
배치는 어떤 것이냐면
사용자가 어떤 수행할 작업들을
하나하나 한 개씩 처리하는 것이 아니라
10개를 모아서 한 번에 처리하는 것
이런 것들을 배치 작업이라고 합니다.
그 다음 운영체제 기능에 대해 설명드리겠습니다.
아마 계속 반복된다는 의미를 받으실 수 있을 것 같습니다.
운영체제 부분은
디눅스 마스터 자격증에서
아주 상세하게 물어보진 않습니다.
다만 운영체제가 어떤 기능을 수행하는지
어떤 것은 운영체의 기능이 아닌지
어떤 것은 운영체의 역할이 아닌지
그런 것을 구분할 수 있는 여러분들께서
감을 가지고 가시면
운영체제 부분에서는 충분한 학습이 됐다고
그 정도를 이해하시는 것을 목표로
학습하시는 것을 권장드리도록 하겠습니다.
운영체제 같은 경우에는
대학 같은 경우에 한 학기 분량으로
책 한 권을 배우는 분량이기 때문에
자격증 서적에서 상세하게 다루기는 어렵습니다.
그래서 여러분들께서 적절한 목표를 세우시고
수준을 세우시고 공부하시는 것이 중요한데
제가 보기에는
운영체제는 운영체제의 기능이
인 것과 아닌 것을 잘 구분하는 정도
그리고 운영체제가 무엇인지 감을 잡으시는 정도
이런 것들을 정도로 파악하시는 게
좋지 않을까 싶습니다.
운영체제의 기능에는
프로세스 메모리 장치, 장치 IO 파일 시스템 등의
조수 관리 기능을 제공하고요.
자원 스케줄 기능을 제공합니다.
그 다음
하디어 관리 기능을 수행하고요.
네트워크에 관련된 여러 다양한 제어 기능을 제공합니다.
파일 시스템이나 데이터베이스를 통해서
데이터를 생성 저장 조회하는 데이터 관리 기능
파일 및 네트워크 같은 자원 공유 기능을 제공합니다.
파일과 네트워크가 자원 공유 기능이라는 의미는
이 파일을 나만 쓸 수 있는 게 아니라
다른 사용자들도 같이 쓸 수 있다는
같이 쓸 수 있는 기능을 의미하죠.
다음
사용자와 프로세서와 같은 주체가
파일이나 네트워크 같은 자원에
문별하게 접근하는 것을 방지하는
자원보호 기능을 제공합니다.
일조능의 보안 기능을 제공한다고 보시면 될 것 같습니다.
보호 기능이라고 하면
읽기만 가능하게 한다든지
읽기 쓰기를 모두 가능하게 한다든지
사용자에 따라서 쓰기만 가능하게 한다든지
이런 것들을 보호 기능이라고
감을 잡아가시면 될 것 같습니다.
오류 검사나 오류 복구 기능을 제공한다고 했었는데
조금 더 자세하게 써있습니다.
디스크 및 파일 시스템 같은 시스템 손상
점검을 하는 오류 검사 기능
혹은 오류 복구 기능이라고 설명하고 있습니다.
자원의 유휴시간, 유휴시간이라고 한다면
대기 시간, 쉬고 있는 시간입니다.
그 자원이 뭔가
작업을 수행하고 있는 게 아니고
대기하고 있는 상태
그런 시간을 최소화하기 위해서
일련의 가상 컴퓨터를 구동을 해서
구동하는 가상화 기능을 제공합니다.
여러분들이 컴퓨터를 쓰시면
컴퓨터를 항상 24시간 쓰고 계신 게 아니죠.
그중에 하루에 퇴근하고 나서
혹은 학교에 갔다 오고 나서
한두 시간 쓰실 겁니다.
그 외에는 이 자원이 쉬고 있을 거예요.
유휴시간이 발생한 거죠.
그 시간에 다른 사용자가
이 컴퓨터를 쓸 수 있다면 어떨까요?
그런 식으로 유휴시간을 최소화하기 위해서
가상의 컴퓨터라는 걸 만들어서
외부의 사용자가 이 컴퓨터를 또 쓸 수 있게 하는 거죠.
그런 것들을 가상화 기능이라고 합니다.
다음 운영체제 운영기법에 대해 설명드리겠습니다.
운영체제가 사용자의 입력을 처리를 해서
그 결과를 사용자에게 출력창출을 통해서
돌려주는 그 기능
그런 한 기능을 수행한다고 말씀을 드렸었는데요.
운영체제 운영기법은 이러한
컴퓨터 시스템의 기본적인 처리를
어떻게 하면 효율적으로 할 수 있는가
를 고민을 하면서 발전하게 되었습니다.
그림 한번 보시죠.
사용자가 어떤 잡을 만들어서 입력을 합니다.
그리고 처리를 하고 그 결과를
컴퓨터가 CPU가 처리를 하고요.
그거를 어떤 하드웨어 IO를 일으킨 다음에
사용자에게 그 결과를 보여줍니다.
예를 들면 내가 문서를 출력해줘 라고 입력을 한다면
이 안에서는 문서를 출력할 수 있도록 뭔가
작업을 하겠죠.
이미지 그림을 출력하기에 적합한
이미지를 만들어낸다든지
혹은 그 안에 텍스트나 이런 것들을
이미지화 한다든지 이런것들을 처리를 하고
그래픽한 처리를 하고
그 다음에 출력장치 프린터 같은 걸로
IO를 하겠죠.
그러면 그 결과 사용자에게 보여지게 되는 겁니다.
그래서 일괄처리 시스템은
이런 어떤 일련의 처리를
원 바이 원, 하나씩 하나씩 처리하는게 아니라
10개면 10개, 20개면 20개
이 인풋을 한꺼번에 묶어서
인풋을 한꺼번에 주는 겁니다.
처리를 한꺼번에, 20개면 20개를 한꺼번에
처리해서 IO를 하는거죠.
그런 식으로 하는게 일괄처리 시스템입니다.
초기에 이런 형식으로 많이 했었어요.
그래서 제가 작업을 처리하기 시작하면
결과가 나올 때까지 기다려야 되고요.
작업들이 처리중일 때는 시스템에 이용할 수가 없어요.
그러니까 작업들이 의리를 하고 나서
프로세싱하거나 IO를 하고 있을 때
또 다른 IO로 입력을 넣을 수가 없어요.
아웃풋이 나올 때까지 기다려야 됩니다.
그래서 효율성이 조금 떨어진다는 단점이 있죠.
다중 프로그래밍 시스템은
그래서 나온게 다중 프로그래밍 시스템입니다.
사용자가 입력을 해서 프로세싱을 하고
IO를 하고 있을 때
이 프로세싱은 놀고 있겠죠.
다중 프로그래밍 시스템은
이 IO를 하고 있을 때 또 다른 입력을 가져와서
프로세싱을 하는 겁니다.
그것을 다중 프로그래밍 시스템이라고 합니다.
이 시간에 일괄처리 시스템은
작업체를 위해 출력중일 때
CPU는 유유상태가 된다는게 그 의미고요.
이 시간에 다른 작업을 할 수 있다면 효율적이지 않을까
라고 시작된 개념이 다중 프로그래밍 시스템입니다.
읽어보시면 이해가 되실 것 같고요.
그래서 사용자 입장에서는 CPU는 처리장치는 하나지만
프로그램이 동시에 실행하는 것처럼 보일 수 있습니다.
그래서 일괄처리 시스템과 다중 프로그래밍 시스템은
처리능력, 앞에 수루풋이라고 말씀드렸죠.
한정된 처리능력을 어떻게 하면 극대화할 수 있을까
최대화할 수 있을까를 고민한 방식이라고 생각하시면 됩니다.
여기서 아까 설명을 부족하게 해드린 부분이
이 CPU의 처리와 디바이스의 IO
이 중에서 어떤게 오래 걸릴까요?
네 맞습니다. 이 디바이스의 IO 부분이 오래 걸립니다.
제가 예시로 드렸던 프린터만 해도
뭔가 프린터에 인쇄를 하려면
우리가 인쇄가 나오는 걸 눈을 보고 있죠.
1초, 2초, 3초, 시간이 걸립니다.
프로세싱은 우리가 느끼기 어려운 정도로 빠르게
연산이 일어납니다.
그래서 이 IO를 하고 있을 때
이 프로세스가 놀고 있다면 굉장히 부효율적이죠.
그래서 이런 것들을 고민해서
이 시간이 너무 아까워서
어떻게 하면 이 시간을 허비할 수 없을까
나온게 대중 다중 프로그래밍 시스템이라고 말씀드렸습니다.
그래서 이 두 시스템은 처리능력의 최대화를 고려한
운영기법이라고 보시면 됩니다.
그렇다면 시분할 시스템은 무엇일까요?
이 위에는 어떤 CPU의 처리능력
최대화를 고민했다면
시분할 시스템은 어떤 응답시간이나
반응시간을 단축하는 것을
단축하기 위한 운영기법입니다.
이 그림을 다시 보시면
A라는 사용자가 입력을 주고 처리하고
처리하고 있을 때
처리하고 어떤 IO를 하고 있을 때
또 다른 사용자가 입력을 준다면
앞선 있던 작업이 끝날 때까지
기다릴 수밖에 없습니다.
그래서 멀티우즈라고 했는데
다중 사용자, 한 명의 사용자가 아니고 여러 명의 사용자가
어떤 시스템을 이용할 때는 조금 비적합하지 않은 방식이었죠.
마치 이 시스템을 나 혼자 쓰는 것처럼 느끼게 해줘야 되는데
이 방법은 그런 것들을 고려한 운영기법은 아니었습니다.
그래서 시분할 시스템이라는 것이 나왔어요.
시분할 시스템이라는 것은
시분할 시스템은 어떤 작업을 처리를 할 때
작업을 일단 여러 사용자가 있으니까
여러 사용자가 이 CPU의 시간을 나눠서 쓸 수 있게 하는 게
시분할 시스템이라고 하시면 좋을 것 같아요.
그러니까 여러 사용자들이 동시에 작업을 했을 때
그 작업들을 조금씩 조금씩 잘라서 실행을 해주는 거예요.
그래서 전체적인 처리 시간은 비슷할 수 있지만
어떤 한 사용자가 느끼기에 조금 조금씩 처리를 해주기 때문에
그 처리된 결과를 즉시 즉시 받을 수 있는 장점이 있죠.
그래서 응답 시간, 반응 시간,
사용자가 느끼는 반응 시간을 단축의 목적을 두고 있고요.
다중 사용자 지원을 위한 운영기법이라고 보시면 될 것 같습니다.
리스폰스 타임에 대해서 조금 더 설명을 드리면
앞쪽에 반응 시간 같은 경우에는 내가 사용자가 어떤 작업을 요청하고
그 결과 나올 때까지의 시간이라면
이 반응 시간은 사용자가 작업을 의뢰했을 때
CPU가 해당 작업을 처리를 가져가는 시간
그 처리 장치가 작업을 의뢰된 작업에 대해서 반응하는 시간
그 시간을 리스폰스 타임이라고 합니다.
그래서 앞쪽에 있는 일관 처리 시스템과 다중 프로그래밍 시스템은
이 인풋에서 어떤 작업을 가져올 때까지의 시간이
앞쪽에 있는 작업이 끝날 때까지는 기다려야 되기 때문에
반영 시간이 늦었던 반면에
시무룡형 시스템은 앞쪽에 작업을 모두 다 처리하는 게 아니고
일정 시간만큼 타임 슬라임스나 타임 컴퓨터나 불러놓았던
짧은 시간만큼 처리하고
그다음 작업을 또 가져와야 실행하기 때문에
반응 시간을 단축하게 되죠.
그래서 멀티 유저나 다중 사용자에 적합한 방식이라고 볼 수 있습니다.
그다음 다중 처리 시스템입니다.
지금까지는 처리 장치가 한계인 경우에 대해서 문의를 했었어요.
한계를 가지고 어떻게 하면 효율적으로 처리를 하고
다중 사용자를 지원할 수 있을까 고민했다면
다중 처리 시스템은 이러한 CPU를 여러 개 둔다면
처리를 더 빨리 할 수 있지 않을까라고 생각하는 방식입니다.
다른 말로 병렬 처리 시스템이라고도 합니다.
다중 처리 시스템은 크게 비대칭 다중 처리와
대칭적 다중 처리의 유형을 나눌 수 있습니다.
옆에 그림을 보시면은
비대칭적 다중 처리는 여러 프로 처리 장치가 있을 때
똑같은 관계가 아니고 하나는 마스터 나머지 처리 장치는 슬레이브
그래서 여러 처리 장치들이 독립적으로 이루어지는 게 아니고
하나의 마스터 처리 장치가 다른 슬레이브 처리 장치들에게
제어하는 관계를 갖고 있습니다.
이런 경우를 비대칭 다중 처리라고 하고요.
대칭적 다중 처리는 마스터가 없고
마스터가 없는 경우 모두가 다 독립적인 관계예요.
이런 경우를 대칭적 다중 처리라고 합니다.
그래서 비대칭적 다중 처리는 주종 관계가 있다 말씀드렸고요.
대칭적 다중 처리는 다시 SMP와 MMP로 나눌 수가 있습니다.
그 다음 실시간 처리 시스템입니다.
실시간 처리 시스템은
어떤 사용자가 입력 요청을 했을 때 작업을 의뢰를 했을 때
수행 결과가 나올 때까지 어떤 시간
그 시간을 굉장히 중요하게 보는 시스템을 실시간 처리 시스템이라고 합니다.
예를 들면 공장에서 컨베어 벨트 위에 부품들이 놓여 있고
그 부품들이 컨베어 벨트를 따라 움직이면서
기계가 특정 타이밍에 부품을 가져와서
다른 컨베어 벨트를 옮기는 기계가 있다고 생각해 봅시다.
만약에 그 기계가 컨베어 벨트 위에 흐르고 있는 부품을
제때 집지 못한다면 제대로 된 어떤 공정 자동화 시스템이 이루어질 수가 없겠죠.
이런 경우에 실시간 처리 시스템이 필요하게 됩니다.
실시간 처리 시스템은 다시 경성 실시간 처리 시스템과
연성 실시간 처리 시스템은 아니고요.
경성 실시간 처리 시스템은
방금 말씀드렸던 시간형 제약이 굉장히 중요한 경우를 의미합니다.
그래서 무기 제어나 산업로봇 등에서 사용이 되고요.
연성 실시간 처리 시스템은 그렇지 않은 경우에요.
그래서 동영상 재생 시스템 등이 이런 경우에 해당합니다.
동영상 재생 시스템이 동영상이 쭉 재생이 되면서
매끄럽게 화면이 재생되면 좋지만
중간중간 화면이 깨지더라도
크게 큰일이 발생하지는 않죠.
사람이 위험해진다거나
다만 내가 조금 짜증난다 정도
이런 경우면 연성 실시간 처리 시스템이 적합할 수 있습니다.
다음은 다중 모드 시스템입니다.
다중 모드 시스템은 앞에서 말씀드렸던
다양한 일괄 처리, 다중 프로그램의
10분할, 다중 처리, 실시간 처리를 혼용해서
운영할 시스템을 의미하고요.
분산 처리 시스템은
기별 프로세서 하드웨어 제원과
이를 구동화 운영 시스템을 갖는 독립적인 시스템들간의
통신망을 연결하고
통신망이 중요할 것 같습니다.
시스템이 수행하는 작업을 분산
그리고 시스템의 작업을 공유하여 처리하여
응답 시간 가격을 극대화하기 위한 시스템입니다.
앞에서 말씀드렸던 여러 시스템이
하나의 독립적인 시스템으로만 동작을 하는 게 아니고
이런 시스템이 여러 개 있는 거에요.
여러 개 있어서
어떤 특정한 작업이 주어졌을 때
하나의 시스템이 동작하는 게 아니고
그 여러 시스템이 유기적으로
어떤 통신망에 연결되어서
유기적으로 처리를 하는
하나의 작업을 처리하는 거죠.
그래서 보통은 어떤 작업이
소규명의 작업이 아니고
굉장히 대용량의 작업을 처리할 때
분산 처리 시스템이 적합하게 됩니다.
요즘에 보시면 클라우드라고 불리는
어떤 그러한 시스템들이
분산 처리 시스템이 이루어져 있죠.
여러분들이 좋아하시는 넷플릭스 같은 경우에
동영상을 보실 때 넷플릭스 서버가 저 외국에 있어요.
그게 우리나라까지 재생되려면
중간중간 여러 시스템들이
경유하게 되거든요.
미국에 있는 동영상 재생
넷플릭스 동영상이 들어있는
시스템에서 한국에 있는
한국에 있는 사용자에게 재생되려면
대륙을 통해서 와야 되는데
속도가 너무 느리겠죠.
그래서 중간에 캐시 서버를 둔다든지
미리 동영상을 가져와서 저장해놓고
그 동영상을 저장해주는 캐시 서버를 둔다든지
혹은 장애가 발생했을 때
장애가 발생했을 때
이를 백업해주는 서버를 둔다든지
이런 것들이 모두 분산 처리 시스템이라고
보시면 되겠습니다.
분산 처리 시스템은 강결합과 약결합으로
두 가지 나눌 수가 있어요.
강결합은 여러 개의 프로세서가
하나의 메모리를 공유하는 방식을 의미하고
약결합은 독립된 시스템이
통신으로 연결되는 경우를
약결합이라고 볼 수 있어요.
약간 설명을 잘못 들었는데
분산 처리 시스템은 그래서 약결합에 해당하게 되는 겁니다.
강결합은 여러 개의 프로세서가
하나의 메모리를 공유하는 방식이기 때문에
시스템이 지휘적으로 떨어져 있는 게
의미하는 것은 아니거든요.
그래서 약결합 방식입니다.
그 다음
분산 처리 시스템은 물리적으로
시스템이 여러 개일 수도 있고
가상화 시스템이 여러 개일 수도 있어요.
아까 말씀드렸듯이
전세계 사용자들이
만약에 이 클라우드에 접속을 해서
클라우드를 잡고 말씀드린 것은
분산 처리 시스템을 이해할 때
클라우드를 생각하시면 조금 더
이해하기 쉬우실 것 같아서
예를 들어 설명을 드리는 겁니다.
클라우드에 올라온 어떤 서비스를
사용자가 이용할 때
사용자가 100명이면 100개의 시스템이 필요하다.
쉽게 생각해서
1000명이면 1000개의 시스템이 필요하다.
우리나라 천만 인터넷 인구다.
그러면 1000개의 시스템이 필요할 텐데
그러면 너무나 물리적으로
천만 개의 시스템을 마련하기 힘들겠죠.
그리고 천만 개의 시스템이 항상
모두가 풀가동되는 건 아닐 거예요.
그래서
100개의 시스템에
각각
100개의 가상 시스템을
넣을 수 있다면 결과적으로
1000개의 시스템이 되겠죠.
이런 식으로 가상화 시스템을 활용하기도 합니다.
그래서 운영체제의
운영기법은
일괄처리 시스템을 시작을 해가지고
다중 프로그래밍, 다중처리 시스템
시 분할 시스템, 다중 모드 시스템
분산처리 시스템 형태로
발전을 하고 있고요.
특히 분산처리 시스템은 가상화 기술도
적극적으로 활동되고 있다는 점
기억해 두시면 좋을 것 같습니다.
운영체제의 사례를
살펴보실 텐데요.
이 부분은
데스크톱의
서브 운영체제에는 어떤 운영체제가
있는지
지금 제가 이 책에
사는 운영체제의 사례를
유형별로 나눈 다음에
유형별로 어떤 운영체제가 있는지
설명을 했어요.
유형별로 어떤 운영체제가 있는지
이 종류를 조금 이해하시면 될 것 같고요.
카악 운영체제에 대해서는
너무 자세하게 아실 필요는
없으실 것 같아요.
제가 보기에는
리눅스 우리가 공부를 하고 있으니까
리눅스에 대해서는 조금 더 자세히 아시면 좋을 것 같고
그 다음에
이 안드로이드 OS도
운영체제의
리눅스 커널을 기반으로 만들어진 운영체제거든요.
그래서 이 안드로이드에 대해서
자세히 아시면 좋을 것 같고
그 다음에 타이젠도
타이젠은 국내 삼성전자에서
주도를 했었던 프로젝트이기 때문에
조금 더
중요도를 갖고 다뤄지는 것 같아요.
리눅스 마스터 서적에서도
타이젠에 대해서는 아시면 좋을 것 같아요.
나머지는
각 유형별로
어떤 운영체제가 있는지 정도로
가볍게 살펴보시면 좋을 것 같아요.
그리고 기출문제를 보시면서
이런 운영체제의
사례부분에서 이런 문제가 나오는구나
라고 조금
감을 잡으신 후에 다시 돌아가셔서
보시면 좋을 것 같습니다.
그리고 예전에
기출문제를 보시면
저희 책에서 설명드리지 않은
몇가지
운영체제들이 나오기도 하거든요.
그런 부분들은 제가 봤을 때
앞으로는 출제 가능성이 적다
생각해서 이 책에서는 좀 뺐었는데
혹시 조금
아쉽다 하시는 분들은
뒤쪽에 저희 기출문제에서는
내용들을 조금씩 다루고 있으니까
그쪽에서 조금 채워가시면 좋을 것 같습니다.
윈도우는
이 책에서는 제가 운영체제의
사례부분은
간단하게 중요한 부분만 짚으면서
넘어가도록 하겠습니다.
데스크톱이 서버 운영체제는
윈도우, 맥OS,
리눅스들이 사용이 되구요.
그리고 유닉스가 사용이 됩니다.
특히 데스크톱에서는
윈도우가 가장
많이 사용이 되죠.
그 다음에 맥기기들
애플에서 만든 맥북이나
맥에서는 맥OS가
주로 사용이 되구요.
데스크톱 분야에서 리눅스는
그렇게 많이
사용된다고 보기는 어려울 것 같아요.
대신에
최근에 공공기관에서는
리눅스를 적극적으로
사용하려고 하는 최근
움직임이 있어요.
공공기관의 어떤
공무원들이 사용하시는
기기
컴퓨터에는
리눅스가 조금 더 탁재를
하려고 하는 것 같습니다.
그 다음에 서버 시장에서는
윈도우 서버도 많이 사용이 되죠.
맥쪽에는 서버가 별로 없는 것 같고
리눅스 많이 사용되죠.
그 다음에 유닉스도
많이 사용됩니다. 최근에 예전에는
금융시장
에서는
유닉스를 많이 사용했었는데 최근에는
리눅스 많이
차세대
사업을 하면서 리눅스로
서버들을 많이 변경한 걸로 알고 있습니다.
각각은
각 OS에 대한 설명은 이 책을
읽어보시면 좋으실 것 같구요.
모바일 미
인베디드 운영체제는 안드로이드
애플에서 만든
기계들에서는 iOS
iOS는 특히 아이폰
워치OS는 애플워치
아이패드OS는 아이패드
tvOS는
아이티비 애플TV
같은
기기에 탑재된 운영체제를 의미하구요.
안드로이드는 조금 자세하게
보시면 좋을 것 같아요.
세부 내용들을 가지고 문제들이 나오는 경우가
종종 있거든요.
일단은 2005년도에
구글에서 안드로이드사를 인수를 해서
2007년 11월에
안드로이드 플랫폼을
휴대용 장경치 운영체제
에 맞게 개발을 해서 공개를 했습니다.
안드로이드는
리눅스 커널을 이용하고 있구요.
리눅스 커널 기반의
어떤
리눅스 자체가
C++로 작성이 됐어요.
리눅스 커널 기반의 C++ 라이브러리를
제공을 하고
그 다음 안드로이드 런타임을
이건 가상 머신이나 보시면 됩니다.
안드로이드 런타임 기반하에
어떤 어플리케이션 프레임워크를 올려서
그 위에 어플리케이션을
개발할 수 있는
그러한 구성으로 이루어져 있습니다.
앞쪽에 제가 설명드렸던
운영체제의 어떤
구성 어플리케이션
정의에 대해서 설명드렸을 때
맨 안쪽에
하드유가 있고 그 바깥에 커널
그 바깥에 응용 프로그램이나
쉘이 있다 말씀드렸어요.
그래서 커널은
안드로이드 같은 경우에는 커널은 리눅스 커널을
이용하고 있다. 그 밖의 쉘이나
응용 프로그램은 여기 보시면
안드로이드 런타임을
기반으로 해서
이거는 리눅스 커널이 제공하는 거겠죠.
그 기반으로 해서
그 상위에
어플리케이션 프레임워크를
이용하는 어플리케이션이
포진하게 되는 겁니다.
그래서 안드로이드는
스마트폰인
모바일 기기에
적합하게 만들어졌기 때문에
그
기기에 맞는 미들웨어
사용자 인터페이스, 웹브라우저, 이메일 클라이언트
뭐 sms, mms
같은 응용 프로그램들을 탑재를 하고
있습니다.
다음 안드로이드는
안드로이드 런타임이라고 하는 가상 환경을
제공을 하는데
그 전에는 달빅이라는 용어를 사용했었어요.
그래서 기술 문제도 보면 안드로이드 런타임이
아닌 달빅이라는 용어를 쓰고 있으니까
둘 다 알아가시면 좋을 것 같아요.
이제는
안드로이드 런타임이라는 용어가 나올 수도 있을 것 같아요.
그래서
달빅이 아닌
안드로이드 런타임이라고 나온다고 해도
그
헷갈리지 마시고
달빅과 동일한
부분이라고 이해하시면 될 것 같습니다.
그래서
안드로이드의
안드로이드용 프레임은 자바나 포틀린
라고 하는 프레임의 언어를 통해서
개발이 됩니다.
다음 타이제는
삼성전자에서
인텔과 삼성전자가 주도를 해서
만들었었던 운영체제인데요.
처음에는
스마트폰에 탑재를 하려고 했었는데
이게 잘 안됐었죠.
그 이후에는 현재
TV나 스마트워치와
인베디드 디바이스에 탑재를 해서
이쪽 관련 플랫폼을
확산하는데 공을 기울이고
있는 것으로 알고 있습니다.
인베디드 리눅스
부분에서는
여러분들 요즘에 많이 아실 거예요.
하드웨어 인베디드 공부하실 때
라즈베리파이 같은
오픈소스 하드웨어를 이용해서
많이 개발
공부하실 텐데요.
아두이노도
오픈소스 하드웨어 일종이죠.
그리고
라트케의 라즈베리파이 같은 경우에는
라즈비안이라고 하는 OS가 올라가는데
이게 바로 리눅스로 지금 만들어져 있습니다.
웹 OS라는 게 있어요.
LG전자에서 주도를 하고 있는데
특별히
모바일 쪽보다는 스마트 TV나 디지털
사이니지 혹은 스마트 냉장고
같은 기기에
탑재가 많이 되고 있습니다.
그 다음
자동차 쪽에서는
IVI라고 해서
사용자에게
정보를 제공하는 어떤 기기
자동차에 들어가
있죠. 그런
기기들에는 MSI
윈도우즈 인베디드 오토모티브나
QNX, 제니비
안드로이드 오토
애플 카플레이어 같은
OS들이
존재를 합니다.
아마 요즘 자동차 타시면
안드로이드 오토나 애플 카플레이는
대중적으로 이제는 많이 사용되니까
실제 많이 보셨을 거예요.
그 다음에 IoT 운영체제
IoT라고 하면 인터넷 오브
띵스라고 해서 띵스는
사물이잖아요. 예전에는
사물
그러니까 기기 우리의 주변에
있는 모든 기기들
인터넷이 직접적으로
연결되어 있지는 않았었는데
IoT는 이런 것들
우리 주변의 일상생활 모든 기기들이
인터넷에 연결이 돼서
사용자에게 어떤 서비스
새로운 가치를
제공하는 것을 목표로
서비스 개발이
많이 되고 있는데 특히
IoT라고 많이 얘기하죠.
요즘에는 집안에 있는
무선 청소기라든지
전등
또 뭐가 있을까요?
전등, 무선 청소기, 냉장고
뭐 이런 것들이 모두
인터넷에 연결이 돼서
현재 날씨에 맞춰서
날씨가 밝으면
등을 어둡게 켜주고
날씨가 안 좋으면
등을 밝게 펴준다든지
이런 것들이 모두
그런 기기들이 인터넷에 연결이 돼서
상황에 대한 정보를
수집을 해서 어떤 기기들을
동작시켜주죠.
이런 기기들에도
그럼 어떤
업무 체계가 들어가야 되는데
그때 사용되는 업무 체계가 뭐가 있는지
살펴보죠. 대표적으로 또
리눅스가 탑재가 됩니다.
리눅스는 소스 코드들이
다 공개가 돼 있기 때문에
이거를 수정을 해서 컴팩트하게 다시
이 IoT 기기에 맞게
개발하기 쉽고 용이하거든요.
그래서
특히 살펴보시면 안드로이드 띵스라고 해서
안드로이드에 제공하는
IoT 전용 운영체제에요.
오픈투 코어는
기존의 데스크톤용 오픈투를
IoT에 맞게 최적화한
최적화한 운영체제에요.
그래서
IoT
약간 설명, IoT용 기기들의 특징을 조금 더 설명을
드리면은 IoT 운영체제가
어떤 특징을 갖고 있는지 조금 이해하시기
쉬울 수도 있을 것 같아요.
IoT용 기기들은 보시면은
냉장고 같은 것도
설명드렸는데, 그럼 덩치가 굉장히 크죠.
이런 경우는 크게
걱정할 필요가 없어요. 일반적인 윈도우가
들어가도 크게 문제되지는 않을 것 같아요. 왜냐하면
그 안에
저장장치도
크게 큰 대용량을
탑재하는데 큰 문제가 없고
전원도 빵빵하게
전원 공급이 되기 때문에
PC에 사용하는
처리장치를 넣어도 크게 상관이 없기 때문에
어떤 운영체제를 넣어도 상관이 없을 텐데
대신에 이제
값이 비싸질 수 있겠죠.
냉장고 하나만 해도
100만원, 200만원 혹과하는데 거기에
IoT 기능을 넣는다고 해서
PC의 어떤
가격만큼 더해진다면은
너무 비싸질 거 아니에요. 그래서
IoT 기기들은 대부분
저전력, 전기는 적게
쓰고, 그 다음에
메모리는 작고, 메모리 작아야
가격이 싸지겠죠. CPU는
좀 느리고
CPU가 빨라지면 마찬가지로
가격이 비싸질 테니까요. 그런
기기들 탑재되는 게
대부분입니다. 혹은
전국에 있는
미세먼지를 측정을 해서
통계를 내는
서비스를 한다면 미세먼지 장치들
전국에 퍼져있는
미세먼지 센서들도 인터넷에 연결이 되는데
이런 경우에는 고가의
CPU를 탑재할 수는 없겠죠.
그래서 낮은
출력의
처리장치
그리고 작은 메모리
그리고 저전력
이런 것들이 IoT의 주요 특징이
될 거예요. 그래서 IoT 운영체제들도
이런 어떤 특징들을
잘 처리할 수 있도록
반영할 수 있도록 운영체제들이 구현되어 있고
안드로이드 OS를
IoT 최적화한 게 그래서 안드로이드
띵스, 문투를
IoT 최적화한 게 문투코 이렇게 보시면 됩니다.
윈도우즈에서도
윈도우즈 IoT라는 걸 제공하고 있고요.
그 다음에 RTOS
리얼타임 OS
라고 해서
리얼타임 OS에 대해서
설명드렸었죠. 실시간 운영
시스템이라고 말씀드렸어요.
시간적 제한이 중요한
어떤 그런
분야에서는
RTOS를 쓰는 게 적합할 수가 있습니다.
프리 RTOS, VX, Vox
QNX 같은 것들이 해당하고요.
그 다음 경량 OS가
있어요. 경량 OS는
아까 말씀드렸던 IoT 주요 특징이었던
한정된 메모리, 저전력, 무선통신
무선통신 부분도 말씀 안 드렸네요.
이런 IoT는
유선보다는 무선으로 통신하는 경우가 많아요.
그래서 이런 경우에는
일을 위한
전용 OS가 필요한데
그것들 중에 하나가
Contiki, TinyOS,
RIoT 등이 있다 보시면 됩니다.
그래서
여기 표를 조금 제가 정리를 했는데
표를 이해만 좀 하시면 될 것 같아요.
외우실 분은 없으실 것 같고
각 운영체들이 보시면
최소 램이 굉장히 작죠.
킬로바이트 수준.
ROM도 킬로바이트 수준이고요.
시언어를 지원하느냐 안하느냐
Linux와 RIoT는 지원하고 있고
Contiki와 TinyOS는
지원하지 않는 경우도 있고 일부 지원하지 않는 경우도 있고
이런 게 시언어를
지원하게 되면 아무래도
시언어를
구동하기에 어떤 라이브로이터를
필요하기 때문에 또 그런 리수스를
더 필요하게 되겠죠.
경력 OS는 적합하지 않기 때문에
아예 미지원하는 경우도 있습니다.
C++도 마찬가지라고 보시면 되고요.
멀티스레드를 지원하느냐 안하느냐
이런 기기들은 단순한
작업을 처리하는 경우가 많기 때문에
멀티스레드가 굳이 필요 없는
경우도 있어요.
Contiki나 TinyOS는 지원을 일부만 지원하고
Linux나 RIoT는 지원하는 경우죠.
모듈은
모듈이라고 하면
어떤
시스템의 기능을 승리할 때
특정 기능을
필요한 시점에
로드하고 필요하지 않은 시점에 다시 내리고
이런 기능을
모듈 기능이라고 하거든요.
Contiki나 Linux는
일부만 지원하고 TinyOS는
아예 지원하지도 않습니다.
실시간 기능을 지원하냐
실시간 처리를 지원하냐
이 경우에도 Contiki는 일부 지원하고
Linux는 일부 지원한다고 되어있네요.
그래서 내가
뭔가
어떤 특정 분야에서
OS가 필요할 때
경량 OS를
필요할 때 어떤 경량 OS를 선택할까
그럴 때
이 표를 보시고 한번 생각해보시면서
필요한 기능들 생각해보시면서
그 적합한 OS를 선택하는 것도
좋은 방법이 될 거라고 생각합니다.
지금까지 Linux 운영체제
계유에 대해서 설명을 드렸어요.
운영체제는
운영체제
정의에 대해서
정확하게 이해하시면 좋을 것 같고요.
그 다음에
목적, 역할
기능
구조 이런 것들은
개념적으로
간단히 이해를 하시면 좋을 것 같아요.
개념적으로 이해한다는 뜻은
무엇이 올바른가
무엇이 올바르지 않은가 문제에서
운영체제 구조에 해당하는
올바른 것은, 올바르지 않은 것은
이렇게 구분할 수 있는 능력으로
능력을 좀 가지시면 좋을 것 같고요.
그 다음에 운영체제
이제 운영기법은 좀 자세하게
나올 수도 있습니다. 문제가
그래서 이것들은 자세하게 좀 이해하시면
좋을 것 같고요. 특히
일괄처리와 다중프로그램은 처리능력의
최대화를 위한 거고
심란시스템은
응답받는 시간의 단축, 최소화를 위한 것이다.
이 둘의 극명한 차이를
좀 이해하시면 좋을 것 같습니다.
다중처리시스템
실시간처리시스템
실시간처리시스템은 시간적 제약이 중요하다는
것을 다시 보시면 좋을 것 같고요.
분산처리시스템은 좀 눈여겨보시면
좋을 것 같아요.
그리고 운영기법의 발전
이 순서도 경우에 따라
시험에
이 순서를 물어보는 문제도 나오니까
좀 기억해주시면 좋을 것 같습니다.
운영체제의 사례는
유형별 어떤 OS가 있는지
살펴보시면 좋겠다 말씀드렸고
특히 리눅스 관련 운영체제들은
그 내용을 조금 더 자세히 보시면 좋습니다.
특히 안드로이드 같은 경우에는
단골 문제예요.
달비기라든지
안드로이드의 어떤 기능들
어떤 기능들이 갖고 있는지
이런 것들 단골 문제이니까
잘 이해를 하시고요.
그리고 안드로이드에 구동하는
응용 프로그램을 위해서
특정한 프레임워크를 제공한다
라는 부분도 이해를 해주시면 좋을 것 같아요.
굳이 설명하자면 앞쪽에 말씀드렸던
프로그램인 인터페이스 1종
이 어플을 기념 프레임워크라고 보시면 됩니다.
운영체에서는
시스템 코릴로 불린다고 말씀드렸었죠.
지금까지
운영체제의 개요에 대해서
설명을 드렸습니다.
