-

[운영체제 Step 2] - 운영체제의 구분과 역사 본문

CS/운영체제

[운영체제 Step 2] - 운영체제의 구분과 역사

흣차 2021. 12. 3. 01:01
728x90
반응형

저번시간 포스팅을 복습해보겠습니다.

운영체제라는것은 컴퓨터 시스템 자원(하드웨어)를 효율적으로 관리해서 사용자와 응용 프로그램에게 서비스를 제공하는 것을 운영체제라고 한다고 했습니다.

그럼 운영체제의 역할이 어떤 것이 있을지 살펴보겠습니다.

과거에는 문자로 입력을 한 것이 대부분 문자로 출력되는 Character User Inteface인 CUI를 사용했습니다.

하지만 요즘은 그래픽을 활용한 그림위주의 인터페이스가 자주 나오고 있고 이를 GUI라고도 부릅니다.

또한 최근엔 특정한 목적만을 가지고 기기를 사용하기도 해서 사용자가 시스템을 편하게 사용하게 하기 위한 용어로서 EUCI라고도 합니다. 예를들면 MP3를 보면, MP3는 음악을 듣기 위해서만 제작되므로 이것도 EUCI라고도 부릅니다.

 

그리고 중요한 것이, 운영체제에서 그토록 강조되는 이 효율성에 대해 살펴볼 것입니다.

이 자원을 관리하는 것을 효율성이 중요한데요.

이 리소스에는 우리가 만질 수 있는 하드웨어 리소스가 있을거고 만질 수 없지만 존재하는 소프트웨어적인 리소스도 존재합니다. 이것들을 관리하는 것이 운영체제의 역할입니다.

세 번째로 프로세스와 스레드를 관리하는 것이 운영체제의 역할이라고 할 수 있는데요.

이 스레드는 가벼운 프로세스라고 생각하고 넘어가시면 되겠습니다.(앞으로 설명할것이므로)

그리고 마지막으로 다른 사용자로부터 시스템을 보호하는 것도 운영체제의 역할 중 하나입니다.

 

 

그럼 이 컴퓨터 시스템이 어떻게 생겼는지 살펴보도록 하겠습니다.

색칠된 부분이 바로 OS, 즉 운영체제라고 합니다.

하드웨어를 관리하면서 사용자에게 서비스를 제공합니다.

그 위를 보면 System Call Interface가 있습니다.

실제로 사용자가 Kernel을 직접 access하면 문제가 발생할 수 있습니다.

그래서 마음대로 조작을 못하게 하고 필요한 기능이 있으면 os에게 요청할 수 있게끔, 필요한 기능을 요구하게끔 통로를 만드는 것을 System Call Interface라고 합니다. 함수 형태로 보통 제공이 되고 다른 의미로는 Kernel이 제공하는 기능 중에서 사용자가 사용할 수 있는 기능을 제공하는 것을 시스템콜 인터페이스라고 부릅니다.(시스템 라이브러리라고도 함)

실제 이 커널이 무슨 일을 하는지, 이 그림을 보시면서 이해해주시길 바랍니다.

 

이 운영체제를 구분하는 방법에 대해 살펴보겠습니다.

크게 3가지로 구분이 됩니다.

첫 번째로 동시 사용자 수로 구분했을 때를 살펴보겠습니다.

Single-User 시스템은 말 그대로 사용자가 한 명일 때를 가정합니다. 그렇기에 한 명의 사용자에 맞추어서 시스템이 구성이 되고 모든 자원은 한 명의 사용자가 독점합니다. 그렇기에 자원관리 및 시스템 보호 방식이 간단합니다.

 보통은 윈도우즈나 안드로이드 등이 단일 사용자 시스템이라고 보시면 좋겠습니다.

하지만 Multi-user 시스템은 동시에 여러 사용자들이 시스템을 사용하므로 자원에 대한 권한 관리가 필요할 수 있으며 멀티태스킹이 필요할 수 있습니다. 주로 유닉스, 리눅스 등이 멀티 유저 시스템에 적합합니다.

여기서 키워드는 "동시에"입니다.

이런 질문이 나올 수 있습니다.

"어 저는 동생도 컴퓨터를 쓰는데요" 이 질문에 대해선 동시에 한 명의 사용자만 사용하므로 단일 사용자 시스템이라고 할 수 있습니다.

 

다음 구분 법은 동시 실행 프로세스 수 입니다.

시스템 내에 하나의 작업만 존재하는 것을 단일작업시스템이라고 합니다.

여러 프로그램을 사용하고 싶으면 하나의 프로그램을 종료한 후에 다른 프로그램을 실행해야 하는 단점이 존재합니다.

대표적으로 MS-DOS가 이런 구조가 따르기도 하고, 운영체제의 구조가 간단한 편에 속합니다.

 

다음으로 다중작업시스템입니다. 우리들에게 너무나도 익숙한 시스템이죠??

동시에 여러 작업을 수행하능하기 때문에 여러 창을 띄워놓고 작업하는 것이 가능한, 현대의 흔한 컴퓨터구조가 따르고 있습니다. 때문에 운영체제의 기능과 구조가 복잡한 편에 속합니다.

 

마지막으로 작업 수행 방식에 따라 구분해보도록 하겠습니다.

이 체제는 운영체제의 역사와도 관련이 있으니, 꼭 읽어보시면 좋겠습니다.

 

일단 운영체제가 4가지로 구분된다는 것 알고 계시면 좋겠습니다. 나중에 이건 또 나오는 내용이에요.

이걸 먼저 살펴보겠습니다.

처음엔 운영체제의 개념이 존재하지 않았습니다.

따라서 운영체제가 없기 때문에 핵심 역할 중 하나인 하드웨어 관리를 사용자가 직접 수행했어야 했습니다.

때문에 하드웨어에 대한 이해가 많이 요구되었습니다.

그리고 이 시대에는 컴퓨터가 보급되어있지 않았기 때문에 컴퓨터를 사용하려면 줄을 섰어야 했습니다.

따라서 각각의 작업을 시행하기 위해 준비 시간도 소요되기도 하였습니다.

그래서 이 시스템을 개별적으로 관리하니 너무 문제가 많아서 중앙에서 관리하기 시작합니다.

예를 들자면 C로 작업해야 하는 것들 모아놓고, JAVA로 작업해야 하는 것들 모아놓고, PYTHON으로 작업해야하는 것들을 모아서 효율적으로 관리하게끔 배치 시스템을 이용하여 일괄처리 시스템을 이용하였습니다.

이 배치 시스템을 좀 더 살펴보면

우리 인류가 처음으로 시스템을 관리하기 위해 사용한 첫 사례라고 살펴볼 수 있습니다.

그로 인해 처리 효율도 향상되었다는 장점도 일컫어집니다.

하지만 단점이 존재했는데, 같은 유형의 작업들이 모이기를 기다려야해서(JAVA 100개를 기다린다던지) 생산성이 저하되었다는 단점이 있습니다. 그리고 출력까지 긴 응답시간도 단점으로 꼽을 수 있습니다.

많이 답답했었을 것입니다.

그래서 Time Sharing Systems가 등장합니다.

예를들어 프로그램 A가 실행하면 1번만큼 실행하고 잠깐 멈추고 프로그램 B를 실행하고 잠깐 멈추고 프로그램C를 실행하고 잠깐 멈추었다가 다시 4,5,6을 실행할 수 있어 여러 사용자가 동시에 자원을 사용할 수 있게 장려했습니다.

그래서 여러 명을 지원해야 했기 때문에 메모리가 많이 필요했다는 단점이 있었습니다.

또한 이 시대에 최초로 파일이라는 용어와 가상 메모리가 등장했다는 부분이 인상적입니다.

장점도 여러가지 있었습니다. 

입력이 주어지면 출력도 나오는 일명 대화형시스템이 구축이 되었기 때문에 사용자 지향적이라고도 불리었습니다. 그리고 이 시대에는 단말기라는 것을 사용했는데, 이 안에 어떤 하드웨어가 있는 것이 아니고 단순히 화면을 보여주고 입력을 전달해주는 단말기라는 개념이 등장했습니다.

 

초록색 부분이 하나의 좋은 컴퓨터였을것이고 OPERATOR가 관리자입니다.

실제 연산은 초록색 화면에서 이루어질테고 빨간색 공간에서 화면을 보여주는 역할을 했습니다.

이처럼 시간을 분할해서 전달했기 때문에 응답시간을 단축시키고 생산성을 향상시켰습니다.

또한 여러 프로세서의 유휴시간도 감소시킬 수 있었습니다.

그러나 단점도 생겨났습니다.

단말기를 통해서 접속해야하는 별도의 절차가 필요했기 때문에 통신 비용도 증가했습니다.

그리고 보안 문제가 새롭게 대두되기 시작했습니다.

또한 너무 많은 사람들이 접속했기 때문에 부하가 커져서 사용자의 체감 속도가 느려지는 것을 개인이 느꼈습니다.

그래서 이런 생각을 했습니다.

"개인이 컴퓨터를 쓰게 하면 어떨까?"

즉 현재 시대 개념인 Personal Computing이 등장하게 됩니다.

이 시대에선 CPU를 쉬지 않고 돌리는 것이 목표였습니다.

그래서 이 시스템의 활용률을 높이는 것이 원래의 주안점이었습니다.

그러나 Personal Computing이 등장하면서 CPU 활용률에 대한 가치가 떨어지기 시작했고 OS를 복잡하게 만들지 않아도 되었으며 다양한 기능을 지원할 수 있게 되었습니다.

하지만 혼자서 사용해야 했기 때문에 응답시간이 빠르다는 장점이 있었지만 적은 비용으로 제작하려 했기 때문에(개인에 고려하여 맞춘 것이므로) 성능이 상대적으로 낮았습니다.

그래서 등장한 것이 다중 CPU 처리 시스템이었습니다.

이를 병렬 처리 시스템이라고도 부릅니다.

단일 시스템에 여러 CPU를 부착함으로써 성능을 향상시키려 하였습니다.

그리고 하나의 CPU가 고장난다고 하더라도 동작할 수 있으므로 신뢰성도 향상되었습니다.

자, 프로세서가 많아진다는 뜻은 여러 CPU의 관계를 잘 정리했어야 했겠죠???

이를 Tightly-coupled system이라고 불렀습니다.

그렇지만 생각을 해봅시다. 이 CPU를 100개나 넣으려고 한다면 실제로 100개를 넣을 수 있나요??

아무래도 공간적인 비용이 초래할 수 있겠죠??

그래서 등장한 것이 Distributed Processing Systems입니다.

우리 컴퓨터를 여러개 붙이자! 해서 등장한 개념입니다.

네트워크를 통해서, 컴퓨터를 여러 개 묶어서 병렬처리 시스템을 사용합니다.

분산처리시스템이라고도 부릅니다.

이 분산 처리 시스템은 물리적인 분산과 통신망을 이용한 상호 연결입니다.

이 시스템에서 각각의 붙어있는 컴퓨터들을 노드라고 부릅니다.

이 노드들은 자기들만의 OS를 가지고 있습니다.

근데 개별적으로 다 다르면 관리하기 힘들기 때문에 묶어서 운영하는 분산운영체제를 이용하여 하나의 자원처럼 사용할 수 있게 구축하였습니다.

분산 처리시스템에는 Cluster System, Client-server System 등이 있습니다.

이 분산처리 시스템의 장점은 자원 공유를 통한 높은 성능을 얻을 수 있습니다.

또한 신뢰성이 높고 확정성도 높다는 장점이 있습니다.

그러나 단점도 존재하는데, 구축이나 관리가 어렵다는 단점이 있습니다.

 

728x90
반응형
Comments