운영체제란 무엇일까
기억이 가물가물한 운영체제 과목을 다시 공부하기로 했습니다. 취준을 하면서 왜 학교에서 열심히 하지 않았을까라는 후회를 많이 하게 됩니다. 기억을 복기하면서 운영체제 다시 공부해 보도록 하겠습니다.
아래의 강의를 통해 학습을 진행할 것입니다.
- 반효경 교수님 운영체제 : 유명한 운영체제 강의입니다.
- 김덕수 교수님 운영체제 : 개인적으로 좋아하는 교수님이신데 마침 유튜브에 운영체제 강의를 올려주셔서 같이 들었습니다.
운영체제란 무엇일까?
Windows, Mac OS, 안드로이드, IOS 등 우리가 컴퓨터나 스마트폰을 사용할 때 접하는 것이 운영체제 입니다. 운영체제를 통해 편하게 어플리케이션을 실행하고 파일을 관리하고 하드웨어를 사용할 수 있습니다.
위 그림처럼 운영체제는 하드웨어 바로위에 설치되어 사용자나 어플리케이션을 하드웨어와 연결해주는 소프트웨어입니다.
운영체제 예시
다양한 운영체제가 있습니다.
windows, unix, Linux, mac os, IOS, andriod, MS-DOS. windows server, PalmOS, Pocket PC(WinCE), Tiny OS 등등...
운영체제의 역할
운영체제가 하는 역할은 크게 4가지가 있습니다.
- 유저 인터페이스를 제공합니다.
- CLI (Character User Interface) : 문자 사용자 인터페이스, 우리가 접하는 cmd, 터미널, bash 처럼 문자와 명령어를 통해 인터페이스를 제공하는 것을 말합니다.
- GUI (Graphic User Interface) : 그래픽 사용자 인터페이스, 그래픽 기반으로 사용자에게 제공하는 인터페이스를 말합니다. 윈도우, 맥, 안드로이드 등에서 우리가 눈으로 보면서 사용하는 이쁜 인터페이스입니다.
- EUI (End-User Comfortable Interface) : 어떤 특정한 기기만의 인터페이스라고 합니다. 어떤게 있나 찾아봤지만 찾지 못했습니다. 그냥 이런게 있구나 하시면 될것 같습니다.
- 자원의 효율적인 관리 : 주어진 자원을 잘 활용하여 최적의 서비스를 제공합니다.
- 하드웨어 자원 : 프로세서, 메모리, I/O 장치 등등..
- 소프트웨어 자원 : 파일, 어플리케이션, 메세지, 시그널 등등...
- 프로세스 및 쓰레드를 관리합니다.
- 프로세스 : 디스크에 저장되어 있던 프로그램이 메모리에 올라가 실행중인 상태를 프로세스라고 합니다.
- 쓰레드 : 일단 지금은 조금 가벼운 프로세스라고 생각하면 됩니다.
- 시스템 보호
- 사용자의 이상한 행동으로부터 시스템을 보호합니다.
운영체제의 분류
운영체제도 여러종류가 있습니다. 아래와 같은 분류 방식에 따라 분류 할 수 있습니다.
1. 사용자의 수
동시에 사용하는 사용자의 수에 따라 Single-User 시스템과 Multi-User 시스템으로 나뉩니다. 여기서 사용자는 사용하는 "사람"을 말합니다.
- Single-User System
- 한명의 사용자만 사용하는 시스템입니다.
- 한명의 사용자가 모든 시스템 자원을 독점합니다.
- 자원관리 및 시스템 보호 방식이 Multi-User 시스템에 비해 간단합니다.
- 주로 우리가 사용하는 개인용 PC에 사용됩니다.
- Windows, android 등등...
- Multi-User System
- 동시에 여러 사람들이 사용하는 시스템입니다.
- 각종 시스템 자원(파일 등)에 대한 소유 권한 관리가 필요합니다. 우리가 리눅스를 사용할 때 chmod 명령을 이용해 권한을 설정하는 등의 작업을 생각하면 됩니다.
- 여러 사람이 사용하기에 기본적으로 멀티태스킹 기능이 필요합니다.
- 주로 서버, 클러스터 장비 등에 사용됩니다.
- unix, Linux, windows server 등등...
2. 동시 작업 여부
프로세스를 동시에 작업할 수 있느냐에 따라 Single-tasking 시스템과 Multi-tasking 시스템으로 분류됩니다.
- Single-tasking System
- 시스템은 한번에 하나의 작업(프로세스)만 수행합니다. 즉, 하나의 프로그램이 실행을 마친 뒤에 다른 프로그램이 실행됩니다.
- 운영체제의 구조가 간단합니다.
- 옛날에 사용하던 MS-DOS가 이런 방식이었다고 합니다.
- Multi-tasking System
- 동시에 여러 작업(프로세스)의 수행이 가능합니다.
- 대신 운영체제는 작업들 사이의 동시 수행, 동기화 등을 관리해야 합니다.(추후 뒤에 배울 기법들이 이와 관련된 기법들입니다.)
- 운영체제의 기능 및 구조가 복잡합니다.
- Unix, Linux, Windows 등 요즘 쓰는건 Multi-tasking 이라고 보면 됩니다.
3. 처리 방식(작업 수행 방식)
작업 수행 방식에 따라서 아래와 같이 분류 됩니다.
- 일괄처리 시스템
- 작업을 모아서 한번에 처리하는 방식의 시스템입니다. 배치 프로세싱이라고도 하며, 작업이 완전 종료될 때까지 기다려야 합니다.
- 장점
- 많은 사용자가 시스템 자원을 공유할 수 있습니다.
- 처리 효율(throughput)이 향상됩니다.
- 단점
- 생산성이 저하됩니다. 같은 유형의 작업들이 모이기를 기다려야합니다.
- 응답시간이 깁니다. 작업을 대기에 올려놓고 작업들이 모이기를 기다리고 일괄 처리가 시작되면 작업들이 완전히 끝날때까지 기다려야 합니다.
- 시분할 시스템
-
- 여러 사용자가 자원을 동시에 사용하는 시스템입니다.
- 사용자 지향적입니다. 대화형 시스템이며 단말기를 사용합니다. 각 사용자는 단말기를 사용하여 중앙 시스템에 접속하고 프로그램을 실행합니다.
- 각 사용자들이 실행한 프로그램들이 번갈아가면서 시스템자원을 사용합니다.
- 장점
- 응답시간이 단축됩니다. 일괄처리 시스템과 달리 모든 작업이 끝날 때까지 기다리는게 아닙니다.
- 생산성이 향상됩니다. 프로그램들이 번갈아가며 계속 수행되기 때문에 프로세서가 쉬는 시간이 감소합니다.
- 단점
- 통신 비용이 증가합니다. 각 사용자가 단말기를 통해 통신하기 때문에 통신선 비용이 발생하고 보안문제도 생깁니다.
- 개인 사용자가 느끼는 체감 속도가 저하됩니다. 동시 사용자 수 증가 → 시스템 부하 증가 → 느려짐
- 개인 PC의 등장
- 현재는 개인이 시스템 전체를 독점하는 pc를 주로 사용합니다.
- cpu활용률이 고려의 대상에서 밀려나고 os가 상대적으로 단순합니다. 하지만 다양한 사용자 지원 기능이 제공 됩니다.(편리함)
- 장점 : 빠른 응답시간
- 단점 : 성능이 낮음
- 실시간 시스템
- 작업 처리에 있어 제한시간이 있고 제한시간 내에 서비스를 제공해야 하는 시스템을 말합니다.
- 제한 시간 내에 서비스를 제공하는 것이 자원의 활용 효율보다 중요한 시스템입니다.
- 실시간 시스템의 작업에도 종류가 있습니다.
- Hard real-time task
- 시간 제약을 지키는 못하는 경우 시스템이나 외부에 치명적 영향을 주는 작업
- 예) 발전소 제어, 무기 제어 등등
- Soft real-time task
- 동영생 재생, 스트리밍 등
- Non real-time task
- Hard real-time task
- 분산처리 시스템
- 네트워크를 기반으로 구축도니 병렬처리 시스템입니다. 물리적인 분산, 통신망을 이용해 서로 연결되어 있습니다. 각각의 시스템은 운영체제를 탑재한 다수의 범용 시스템으로 구성됩니다.
- 사용자는 분산된 운영체제를 통해 하나의 프로그램, 자원처럼 사용이 가능합니다.(은폐성, 투명성)
- 병렬처리 시스템
- 단일 시스템 내에서 둘 이상의 프로세서를 사용하는 시스템을 말합니다. 프로세서가 여러개이기 때문에 동시에 둘 이상의 프로세스가 실행될 수 있습니다.
- 프로세서 간에 메모리 등의 자원을 공유해야 합니다.
- 동시에 프로세스를 수행할 수 있기 때문에 성능이 향상되며, 프로세서가 여러개라 하나가 고장나도 정상 동작이 가능합니다.(신뢰성 향상)
- 프로세서 간 관계 및 역할의 관리가 필요합니다.
마치며
운영체제가 무엇인지 운영체제에 대한 전반적인 걸 살펴보았습니다.
강의를 들으며, 그리고 지금 정리와 글을 작성하면서 관련된 용어들을 정리해야할 필요성을 느꼈습니다.
다음 글에는 컴퓨터 시스템의 구조와, 그 시스템에서 운영체제가 어떻게 동작하는지 정리하도록 하겠습니다.
혹시 내용을 읽으시고 궁금한 점, 잘못된 점이 있다면 말씀해주시면 감사하겠습니다.