[컴퓨터과학] 운영체제(OS) - 개요(kernel과 OS 역할)

Kyung Jae, Cheong·2024년 11월 2일
post-thumbnail

운영체제(OS) - 개요

1. 운영체제(OS)란?

운영체제(OS, Operating System)는 컴퓨터 시스템의 핵심 소프트웨어로, 주요 운영체제로는 Windows, UNIX 계열의 Linux, 그리고 MacOS 등이 있습니다.

  • 운영체제는 사용자와 응용 프로그램 간의 인터페이스를 제공하며, 컴퓨터 하드웨어를 효율적으로 관리합니다.
    • 운영체제는 하드웨어 자원 관리, 사용자 인터페이스 제공, 응용 프로그램 실행 및 제어, 파일 시스템 관리 등의 기능을 수행합니다.
  • 운영체제는 일반적으로 커널(kernel)추가 기능들로 구성되며, 커널은 OS의 핵심 역할을 담당합니다.

운영체제는 다양한 장치에서 사용되며, 데스크톱에서는 Windows, Linux, MacOS 등이 있으며, 모바일 장치에서는 iOSAndroid가 널리 사용됩니다.

2. 운영체제와 사용자, 응용 프로그램, 하드웨어의 관계

운영체제사용자응용 프로그램하드웨어를 사용할 수 있도록 중간 역할을 합니다.

  • 더 정확히 말하자면, 운영체제의 핵심 부분인 커널(Kernel)하드웨어에 직접 접근하는 역할을 수행하며, 커널여러 추가 기능이 결합된 상태가 OS입니다.

운영체제는 크게 커널(kernel), 시스템 라이브러리, 하드웨어 추상화 계층으로 구성됩니다.

  • 커널하드웨어와 직접 상호작용하며, 시스템 라이브러리프로그램OS 기능을 쉽게 호출할 수 있도록 도와줍니다.

2.1 사용자 인터페이스: 쉘(Shell)

운영체제사용자가 운영체제의 기능과 서비스를 조작할 수 있도록 쉘(Shell)이라는 프로그램을 통해 인터페이스를 제공합니다.

  • 쉘은 텍스트 기반의 터미널 환경(CLI)그래픽 기반의 GUI 환경으로 나뉩니다.
    • CLI에서는 키보드로 명령어를 입력해 조작하고, GUI에서는 마우스를 사용하여 그래픽 요소를 통해 조작합니다.
  • 대표적인 예로, 리눅스bash 쉘CLI 쉘의 한 예입니다.
    • bash 외에도 WindowsPowerShell, macOSzsh 등이 있으며, 다양한 운영체제에서 CLI 쉘을 제공합니다.

CLI명령어를 통해 정확한 제어가 가능해 개발자나 고급 사용자에게 유용하며, GUI직관적인 조작이 가능해 일반 사용자에게 적합합니다.

2.2 응용 프로그램 인터페이스: 시스템 콜(System Call)

운영체제응용 프로그램이 시스템의 기능을 사용할 수 있도록 시스템 콜(System Call)이라는 인터페이스를 제공합니다.

  • 이를 통해 응용 프로그램하드웨어 리소스에 접근하거나 운영체제 기능을 활용할 수 있습니다.
    • 시스템 콜을 통해 응용 프로그램커널 모드로 전환하여 하드웨어에 접근하거나, 자원 할당 등의 작업을 수행할 수 있습니다.

2.3 API(Application Programming Interface)

프로그래밍 언어별로 제공되는 API응용 프로그램운영체제의 기능을 쉽게 사용할 수 있게 합니다.

  • API응용 프로그램운영체제의 기능을 간편하게 사용할 수 있도록 제공되는 인터페이스로, 내부적으로 시스템 콜을 호출하여 커널과 상호작용하게 됩니다.
  • API는 실제로 운영체제시스템 콜을 호출하여 필요한 기능을 수행하는데, API는 주로 함수라이브러리 형태로 제공됩니다.

대표적인 API 라이브러리로는 C언어POSIX, 윈도우즈WinAPI 등이 있습니다.

3. 운영체제의 역할

역할 1: 시스템 자원 관리자

운영체제는 컴퓨터 하드웨어 자원인 CPU, 메모리, 입출력 장치, 저장 매체 등을 관리합니다.

  • 운영체제는 각 프로그램이 CPU를 어느 정도 사용할지, 메모리를 어디에 할당할지를 결정하며, 하드웨어 자원을 효율적으로 분배하고 제어합니다.
    • CPU 스케줄링 기법으로는 선점형 스케줄링(예: Round Robin)비선점형 스케줄링(예: FCFS, SJF) 등이 있으며, 운영체제는 이를 통해 각 프로그램에 공정하게 CPU 시간을 할당합니다.
    • 메모리 관리페이징, 세그멘테이션 등의 방법을 통해 이루어지며, 이로써 메모리 공간을 효율적으로 분배하고 보호할 수 있습니다.

역할 2: 사용자와 컴퓨터 간의 커뮤니케이션 지원

운영체제사용자와 컴퓨터 간의 원활한 소통을 위해 인터페이스를 제공하며, 사용자가 컴퓨터 시스템을 효율적으로 사용할 수 있도록 돕습니다.

역할 3: 응용 프로그램 제어

운영체제응용 프로그램을 관리하고 실행하며, 프로그램 간 권한을 조정하여 프로그램이 시스템을 효율적으로 사용할 수 있도록 합니다.

  • 프로그램이 시스템 리소스를 과도하게 사용하는 경우, 운영체제는 이를 조정하여 시스템 전체의 안정성을 유지합니다.
    • 예를 들어, 프로그램이 CPU를 과도하게 사용할 경우, 운영체제우선 순위를 조정하거나 작업을 일시 중단해 다른 프로그램이 리소스를 활용할 수 있도록 합니다.

운영체제는 프로그램을 프로세스로 관리하며, 여러 작업을 동시에 실행할 수 있게 도와줍니다. 또한, 프로세스 내에서 여러 스레드를 생성하여 다중 작업을 처리할 수 있습니다.

4. 사용자 모드와 커널 모드

컴퓨터 시스템에서는 커널 모드사용자 모드라는 두 가지 실행 모드가 존재합니다.

  • 사용자 모드응용 프로그램이 사용하는 모드로, 시스템에 대한 접근이 제한됩니다.
  • 반면 커널 모드운영체제가 시스템 리소스에 접근할 수 있는 모드로, 시스템 콜을 통해 커널 모드로 전환하여 필요한 작업을 수행합니다.

응용 프로그램이 하드웨어 접근이 필요할 때, 운영체제시스템 콜을 통해 사용자 모드에서 커널 모드로 전환하여 해당 작업을 수행합니다. 작업이 완료되면 다시 사용자 모드로 복귀하여 보안을 유지합니다.

CPU 보호 링 (Protection Ring) 구조

운영체제CPU 보호 링 구조를 통해 시스템의 안전성을 보장합니다.

  • 사용자 모드커널 모드를 분리하여 응용 프로그램이 임의로 시스템을 손상시키지 못하도록 합니다.

CPU 보호 링0부터 3까지의 레벨이 있으며, 링 0에서 운영체제가 작동하고 링 3에서는 응용 프로그램이 작동하여 권한에 따라 접근 수준을 나눕니다.

5. 운영체제와 응용 프로그램의 관계

운영체제응용 프로그램관리하고 실행하며, 응용 프로그램 간의 권한을 조정합니다.

  • 예를 들어, 프로그램이 비정상적으로 종료되거나 무한 루프에 빠지면, 운영체제는 이를 감지하고 해당 프로세스를 종료하여 시스템 자원을 해제합니다.

또한, 응용 프로그램과도하게 CPU를 점유하려고 할 경우 이를 조정하여 시스템의 안정성을 유지합니다.

  • 운영체제는 멀티태스킹(여러 프로그램의 동시 실행)멀티프로세싱(여러 CPU 코어를 활용한 병렬 처리)을 지원하여 시스템의 효율을 극대화합니다.

마무리

요약

  • 운영체제는 컴퓨터의 하드웨어와 사용자 간의 중간 역할을 하며, 자원 관리, 사용자 인터페이스 제공, 프로그램 제어 등을 통해 시스템을 효율적으로 운영합니다.
  • 커널시스템 콜, API를 통해 응용 프로그램이 하드웨어를 사용할 수 있도록 돕고, 사용자 모드커널 모드의 보호 구조를 통해 시스템의 안정성과 보안을 유지합니다.
  • 운영체제의 이러한 역할 덕분에 우리는 다양한 프로그램을 안전하고 효율적으로 사용할 수 있습니다.

다음 포스팅에서는 운영체제가 프로그램을 관리하는 방식인 ProcessScheduling에 대해서 자세히 다루어보도록 하겠습니다.

profile
일 때문에 포스팅은 잠시 쉬어요 ㅠ 바쁘다 바빠 모두들 화이팅! // Machine Learning (AI) Engineer & BackEnd Engineer (Entry)

0개의 댓글