Devendency

person
OS 개요

OS 개요

일반 사람들은 운영체제라고 하면 Windows나 macOS 정도만 떠올리거나 Windows 가 없던 시대를 살으셨던 분들은 Unix,DOS,Linux 정도 알고 있다는 경우가 많다. 하지만 이런 운영체제가 존재한다는 사실은 알아도, “운영체제가 무엇인가?”라는 질문에 정확히 답할 수 있는 사람의 비율은 크지 않다.

운영체제는 사용자컴퓨터 하드웨어 사이에서 중개 역할을 하며, CPU, 메모리, 저장장치 같은 자원관리하는 시스템 소프트웨어이다. 우리가 메모장 같은 프로그램을 쉽게 실행하고 사용하는 것도 운영체제 덕분이다. 만약 운영체제가 없다면 프로그램 실행, 입력 처리, 화면 출력 등을 모두 직접 처리해야 하므로 사용이 매우 복잡해진다.

중개

여기서 “중개 역할”이란, 사람이 컴퓨터를 쉽게 사용할 수 있도록 중간에서 대신 일을 처리해주는 것을 의미한다

그렇다면 이러한 운영체제를 왜 공부해야 할까?

나는 IT 분야를 공부하는 사람이라면 운영체제 학습은 필수라고 생각한다. 하나의 개념을 깊게 이해할수록 운영체제에 대한 이해 여부에 따라 문제를 바라보는 관점과 해결 방식 자체가 달라지기 때문이다. 예를 들어 파일시스템을 공부할 때, inode 구조나 블록 할당 방식 같은 OS 개념을 이해하는 개발자는 단순히 "파일을 읽고 쓴다"는 동작에 머물지 않고, 대용량 파일 처리 시 왜 I/O 병목이 발생하는지, 어떻게 하면 이를 구조적으로 해결할 수 있는지까지 고민할 수 있다.

물론 기본적인 기능 구현은 운영체제에 대한 깊은 이해 없이도 가능하다. 하지만 프로그램의 실행 과정, 메모리 사용, 성능 저하나 오류의 원인을 분석하는 단계에서는 운영체제 지식이 중요한 역할을 할 것이다

결국 운영체제는 더 나은 IT 엔지니어 or 개발자로 성장하기 위해서라면 꼭 공부해야 하는 개념이라고 생각한다.

일반인들은 컴퓨터를 구매 시 도움이 많이 될것이다. 그리고 컴퓨터에 오류가 생겼을때 굳이 수리점에 안가도 될수도 있다.


image

컴퓨터 시스템 구성요소에 대한 개략적 구성도

먼저 전체 컴퓨터 시스템에서 운영체제가 수행하는 역할에 대해 알아보겠다. 컴퓨터 시스템은 역할 기준으로 나눈 하드웨어, 운영체제, 응용 프로그램 및 사용자 로 구분하거나,

하드웨어 : 중앙 처리 장치, 메모리 및 입출력 장치로 구성되어, 기본 계산용 자원을 제공한다

응용 프로그램 : 프로세서, 컴파일러, 웹 브라우저 등 사용자의 요청을 해결하기 위해 자원이 어떻게 사용될지 정의한다

운영체제 : 다양한 사용자를 위해 다양한 응용 프로그램 간의 하드웨어 사용을 제어하고 조정한다

구성 요소로 나눈 하드웨어, 소프트웨어 및 데이터로도 구분할 수 있다.

운영체제는 컴퓨터 시스템이 동작할 때 위 자원을 적절하게 사용할 수 있도록 관리하고 제어하는 역할을 한다. 이제 운영체제의 역할을 보다 깊이 이해하기 위해 사용자 관점시스템 관점에서의 OS로 나누어 살펴보겠다.

사용자 관점(User View)

사용자 관점에서 운영체제는 컴퓨터를 편리하게 사용하도록 돕는 환경이다. 자원이 어떻게 사용되는지를 보는게 아니라 편하게 쓸수 있는지가 중요하다.

시스템 관점(System View)

시스템 관점에서 운영체제를 두 가지로 볼 수 있다.

첫째로 자원 할당자로서 CPU, 메모리 등 시스템 자원을 각 프로그램에 적절히 분배하고, 둘째로 제어 프로그램으로서 프로그램의 실행을 감시하고 오류를 방지한다.

운영체제의 정의

사실 "운영체제가 무엇인가?"에 대한 보편적으로 인정된 정의는 없다. 운영체제가 수행하는 역할이 매우 다양하고, 시스템에 따라 어디까지를 운영체제에 포함할지도 다르게 보기 때문이다. 그럼에도 일반적으로 운영체제는 사용자와 하드웨어 사이에서 중개 역할을 하며, 컴퓨터 시스템을 더 편리하고 효율적으로 사용할 수 있게 해주는 소프트웨어로 이해할 수 있다.

어디까지가 운영체제인가?

이 질문에 대해 합의된 답은 없지만, 일반적으로 세 범주로 나눌 수 있다:

  • 커널(Kernel) : 컴퓨터에서 항상 실행되는 하나의 프로그램. 이것만큼은 누구나 OS의 일부라고 인정한다. 커널 이외의 모든 것은 시스템 프로그램 또는 응용 프로그램이다
  • 시스템 프로그램 : OS와 함께 제공되지만 커널의 일부는 아닌 프로그램 (셸, 유틸리티 등)
  • 응용 프로그램 : 시스템 운영과 무관한 사용자 프로그램

현대 모바일 OS(iOS, Android)는 커널 + 미들웨어 + 핵심 앱까지 OS 패키지에 포함시키는 추세다. 전통적 관점에서는 이것들을 응용 프로그램이라고 보지만, Apple과 Google은 이것들을 OS의 일부로 포함시킨다.

미들웨어(Middleware) : OS 위에서 동작하며, 응용 프로그램 개발자에게 추가적인 서비스를 제공하는 소프트웨어 프레임워크. 데이터베이스 접근, 멀티미디어, 그래픽, 웹 서비스 등을 포함


컴퓨터 시스템의 구성

컴퓨터는 보통 CPU, 메모리, 입출력 장치로 이루어진다.

이 장치들은 버스로 연결되고, 각 장치는 장치 컨트롤러를 통해 동작한다.

운영체제는 각 장치에 맞는 장치 드라이버를 통해 하드웨어를 다룬다.

CPU는 장치나 프로그램에서 발생한 사건을 인터럽트로 전달받고 필요한 작업을 처리한다.

왜 중요한가

  • 뒤에서 배우는 프로세스, 메모리 관리, 입출력, 파일 시스템은 결국 이 자원들을 OS가 어떻게 관리하느냐의 문제다.

인터럽트

image

  • 인터럽트는 CPU에게 즉시 처리해야 할 일이 생겼음을 알리는 신호이다. .
  • CPU 는 인터럽트가 들어오면 현재 작업을 멈추고 먼저 인터럽트 요청된 작업을 먼저 처리 후 다시 원래 작업으로 돌아간다.(-이때 사용되는게 Context Switching이다)
  • 운영체제가 하드웨어와 상호작용하는 기본 방식 중 하나다.

댓글 0