OS(Operating System)란?

Ilhwanee·2022년 9월 17일
0

CS

목록 보기
16/27
post-custom-banner

운영체제(OS)

컴퓨터는 CPU, GPU, 메모리, SSD(HDD) 등 하드웨어들로 구성되어 있다.
그렇다면 이 하드웨어 자원들을 관리할 수 있는 소프트웨어가 필요하고, 그 것이 OS이다.

또한 OS는 하드웨어 자원, 소프트웨어 자원을 모두 효율적으로 운용하고 관리한다.

그렇다면 OS가 가장 하드웨어에 가까운 소프트웨어일까? - 아니다.
하드웨어 장치에 포함된 소프트웨어인 펌웨어가 가장 가깝다.
모든 기능을 제어하는 회로를 하드웨어로만 만들게 되면 구조가 복잡해진다.
따라서 내부에서 제어할 수 있는 소프트웨어인 펌웨어를 대신하여 사용한다.

또한 대부분의 OS는 사용자에게 컴퓨터를 쉽게 사용할 수 있도록 GUI 환경을 제공한다.

즉, OS는 사용자가 컴퓨터를 원활하게 사용할 수 있도록 하드웨어, 소프트웨어 자원들을 효율적으로 관리하고 손 쉽게 컴퓨터를 다룰 수 있는 인터페이스를 제공하는 것이다.

대표적인 OS는 다음과 같다.

  • Windows
  • Mac OS
  • Linux
  • Unix


Kernel, System Call

소프트웨어가 실행되기 위해서는 메모리에 올라와야 한다.
하지만 메모리는 용량이 비교적 작기 때문에 OS의 모든 부분이 메모리에 올라갈 수 없다.
따라서 항상 필요한 부분은 메모리에 상주시키고, 그렇지 않은 부분은 필요할 때 메모리에 올리게 되는데, 여기서 항상 필요한 부분을 커널이라고 하고 좁은 의미의 OS라 한다.

컴퓨터를 사용할 때 가장 핵심적인 부분은 하드웨어, 소프트웨어 자원들을 관리하는 것이며 이 것이 커널의 역할이다.

커널의 수행하는 역할은 다음과 같다.

  • Task(Process) Management : CPU를 추상적 자원인 Task로 제공
  • Memory Managemnet : 메모리를 추상적 자원인 Page or Segment로 제공
  • File System : Disk를 추상적 자원인 File로 제공
  • Network Managemnet : 네트워크 장치를 추상적 자원인 Socket으로 제공
  • Device Driver Managemnet : 각종 외부장치 접근 관리
  • Interrupt Handling : 인터럽트 관리
  • I/O Communication : 입출력 통신 관리

만약 사용자가 컴퓨터 자원에 직접 접근할 수 있다면 어떻게 될까?
이는 무척이나 위험한 행위일 것이다.
따라서 사용자는 커널에게 커널이 관리하고 있는 자원에 대한 접근을 요청하게 되고, 이 것을 시스템 콜이라고 부른다.
시스템 콜이 일어나면 커널은 사용자의 요청에 맞는 하드웨어에 명령을 전달한다.

커널에는 모놀리틱 커널과 마이크로 커널이 존재한다.

  • 모놀리틱 커널
    • 하나의 커널이 모든 것을 수행하는 것이다.
    • 커널의 크기가 커져 관리가 힘들고, 오류가 발생하면 전체 시스템에 영향을 끼친다.
    • 모든 서비스를 커널이 직접 수행하고, 내부 서비스들이 서로 자원을 공유하여 효율적이다.
  • 마이크로 커널
    • 기존의 모놀리틱 커널에서 핵심 서비스만 남겨놓고 나머지 서비스들은 개별적인 서버 형태로 만드는 것이다.
    • 만약 나머지 서비스들이 필요하면 통신이 필요하기 때문에 비용이 발생한다.
    • 통신이 일어나면 컨텍스트 스위칭이 발생하기 때문에 오버헤드가 증가한다.
    • 하나의 서비스가 다운되어도 다른 서비스에 영향을 끼치지 않는다.


profile
블로그 이전 -> https://pppp0722.github.io
post-custom-banner

0개의 댓글