-

[운영체제 Step 3] - 운영체제의 구조와 기능 본문

CS/운영체제

[운영체제 Step 3] - 운영체제의 구조와 기능

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

이전 시간의 포스팅에선 운영체제의 분류와 역사에 대해 알아보았습니다.

이번엔 작업 수행 방식에 따라 조금 다른 관점에서 살펴보겠습니다.

작업 처리에 제한 시간을 가지는 시스템을 우리는 실시간 시스템이라고도 부릅니다.

어떤 응답을 요청했을 때 제한 시간 내에 원하는 응답을 제공하게끔 유도하는 것으로서 자원 활용 효율보다 응답의 시간을 중요하게 여기는 시스템입니다.

이를 우리는 Real-time Systems라고 부릅니다.

이를 우리는 Hard real-time task와 Soft real-time task로 구분할 수 있습니다.

자 우리가 원자력 시스템을 관리하는 시스템을 개발한다고 가정하겠습니다.

그럼 온도를 1도마다 올라갈 때마다 알림이 뜬다고 했을 때 만약 이게 잘못되면 발전소가 사고가 날 수도 있습니다.

그럼 이것은 시간 제약을 제대로 지키지 못하는 경우이므로 시스템에 치명적인 영향을 끼치게 됩니다.

이를 우리는 Hard real-time task라고 합니다.

반면에 드라마나 유튜브같은 동영상을 볼 때 1초에 30장의 프레임을 출력해야 한다고 가정해봅시다.

근데 동영상을 보다가 흐릿하게 나올 때도 있습니다.

그럼 이것을 보고 우리는 좀 화가날수도 있겠지만 이게 개인마다 다르지만 사회에 큰 영향을 끼치는건 아닙니다.

물론 실시간으로 출력이 되면 좋겠지만 그것이 안될 경우에도 큰 문제가 없는경우. 이런 것을 Soft real-time task라고 부릅니다.

 

  • 운영체제의 구조

 이제 운영체제가 운영체제가 어떻게 생겼는지 한 번 살펴보겠습니다.

커널

용어의 뜻은 알맹이를 뜻합니다. OS의 핵심 부분이라고 하면 가장 많이, 빈번하게 사용되는 기능을 담당합니다.

예를들어 프로세서를 관리한다거나, 메모리를 관리하는 등의 기능을 모아놓은 것을 커널이라고 합니다.

때문에 메모리에 항상 올라가 있어야 하기 때문에 메모리 상주를 합니다.

동의어로서는 핵, 관리자 등으로도 불립니다.

그리고 커널을 제외한 나머지 프로그램을 유틸리티(Utility)라고 부릅니다.

자주 사용하는 것이 아니라 가끔 사용하기 때문에 필요한 순간 메모리에 올려서 사용하므로 비상주 프로그램이라고도 불립니다.

 

운영체제 내부엔 이렇게 구성되어 있습니다. 커널부터 시작해서 유틸리티까지가 OS라고 불립니다.

 

이 운영체제는 다양한 형태로 해석이 가능한데요.

회색 박스 내부를 보시면 커널이 다음과 같이 구성되어 있는 것을 알 수 있는데요.

조금 비유를 해보자면 자바 언어를 예로 들자면 main안에 모든 걸 다 짜놓은 구조라고 해봅시다.

따라서 저 커널 내부의 기능들 사이에 기능을 주고 받을 때 직접 모듈간 직접 통신이 가능하다는 장점이 있습니다.

그렇기 때문에 효율적으로 자원을 관리할 수 있습니다.

그러나 커널 내부에 대부분의 기능을 넣다보니 커널이 거대해져서 오류나 버그가 일어날 수도 있다는 단점이 있습니다.

또한 하나의 기능에 악성코드가 있다고 가정했을 때 전체 시스템에 영향을 끼칠 수 있다는 단점이 존재합니다.

그래서 이 기능들을 계층적으로 분류해서 사용하자는 개념이 등장합니다.

이렇게 기능을 나누어서 사용할 때 모듈화할 수 있다는 장점이 존재합니다.

그리고 어느 기능에 문제가 생기면 해당 기능만 추가하거나 수정하면 되기 때문에 검증이 용이해집니다.

하지만 계층이 있다는 것은 어느 작업을 수행할 때 거쳐가야하는 번거로움이 생기기 때문에 단일구조에 대비해서 성능이 저하될 수 있습니다.

 

다음으로 마이크로 커널 구조를 살펴보겠습니다.

  • 커널의 크기 최소화

커널의 내부를 필수 기능만 포함을 시키고 나머지 기능은 사용자 영역에서 처리하자는 개념입니다.

이를 마이크로 커널 구조라고 합니다.

 

마지막으로 운영체제의 기능을 소개하겠습니다.

운영체제의 기능은 바로 관리입니다.

그럼 무엇을 관리하느냐? 

리소스를 관리하게 됩니다. 이 중에는 하드웨어 리소스도 있을 것이고 소프트웨어 리소스도 있을 것입니다.

 

제일 먼저 프로세스 관리를 살펴보겠습니다.

프로세스는 사용자의 요청과 프로그램을 수행하는 주체가 되기도 합니다.

그리고 커널에 등록된 최소한의 실행 단위이기도 합니다.

OS에서는 프로세스를 생성,삭제 및 상태 관리와 자원 할당의 작업을 수행합니다.

그리고 프로세스는 하나만 수행되지 않습니다.

여러 개 프로세스가 하나의 자원을 동시에 쓰려고 할 때 이것을 '교착상태' 라고 하는데 이것을 중재하는 역할을 주로 수행합니다.

 

운영체제(OS)는 프로세스 뿐만이 아닌 프로세서도 관리합니다.

(프로세서는 조금 헷갈리지만 CPU라고 이해하시면 큰 문제 없이 이해할 수 있습니다)

운영체제는 프로세스의 처리 순서를 결정합니다. 이를 프로세스 스케줄링(Scheduling)이라고 부릅니다.

그리고 이 프로세스를 누구한테 줄지에 대한 할당 관리도 수행합니다.

(앞으로 계속 나옵니다)

 

그리고 또 중요한 자원 중 하나인 메모리 관리역할도 수행합니다.

여러 명이, 여러 개의 프로세스가 메모리를 동시에 써야하므로 이를 어떻게 할당할지 그리고 회수할지. 그리고 접근하면 안될 때 이를 막는 역할 등을 운영체제는 수행합니다.

또한 메모리에 어떻게 적절하게 할당하는지에 대한 방법(Scheme)에 대해서도 운영체제가 관리하는데 이것은 전체 적재와 일부 적재를 나중에 또 배울 예정입니다.

마지막으로 운영체제는 파일 관리도 수행합니다.

 

운영체제는 입출력 관리도 수행합니다.

그 외에도 운영체제가 관리하는 것들입니다.

특히 요즘 중요한 보안에도 운영체제가 관련 작업을 수행하고 있다는 것을 알고 계시면 좋겠습니다.

감사하니다.

728x90
반응형
Comments