운영체제 - 0. 운영체제 개요

ensalada.de.pollo·2024년 4월 27일
0

OS

목록 보기
1/4

운영체제란?

응용프로그램이 실행되는 과정에서, 하드웨어에게 명령을 내리거나 이를 관리하고 감독하는 주체를 말합니다.

우리가 컴퓨터를 실행할 때

우리가 컴퓨터를 실행할 때 일어나는 일들은 아래와 같습니다.

  1. Booting: 컴퓨터를 실행할 때, 사용자가 컴퓨터를 사용할 수 있게끔 준비해두는 과정입니다. 이 과정에서 OS를 비롯한 여러 software를 보조기억장치에서 주기억장치로 올려줍니다.
  2. 프로그램 실행: 운영체제의 내부 기능인 Process Management를 이용해서 여러가지 프로그램을 실행합니다.
  3. Input 처리: 마우스나 키보드같은 입력 장치를 통한 사용자의 입력을 I/O Device Management라는 운영체제 내부 기능이 처리해줍니다.
  4. Output 처리: Input과 마찬가지로 I/O Device Management를 이용해서 모니터, 프린터 같은 출력 장치에 출력이 되도록 도와줍니다.
  5. 여러 프로그램 실행: 운영체제의 Process Scheduling이 이를 도와줍니다.
  6. 종료: 하던 일들을 저장하고, 안전하게 종료하는 일을 운영체제가 수행합니다.

Q. Booing 과정에서 OS를 Main Memory로 올려주는 주체는?
A. 나중에 다시 한 번 다룰 일이 있겠지만, BIOS가 소프트웨어 코드로 저장된 OS의 위치를 메모리에 읽어옵니다. 여기서 이야기하는 '소프트웨어 코드'라는 것은 운영체제 자체를 의미하는 것은 아닙니다. Boot Media에 존재하는 운영체제 위치를 기록하는 것이죠.

Boot Media란, OS가 저장된 Media를 의미합니다. 보통 Hard Disk가 여기에 해당할 것입니다.

기술적인 관점에서 바라본 운영체제의 정의

프로그램의 실행을 제어하는 기능들이 구현된 함수들의 집합입니다.

컴퓨터 구조 과목에서 배울 수 있듯이, Application Programs, Utilities Programs를 통틀어 Application Program, 즉, 응용프로그램이라고 부릅니다.
보통 프로그램을 만들기 위해서 코드를 짤 때, 입력과 출력을 받아야 하는 경우가 있습니다. 여기서 입력과 출력을 담당하는 I/O Device는 Hardware에 해당합니다.
그 말은, 입력과 출력을 하기 위해서는 하드웨어에 접근해야 한다는 의미인데, 응용프로그램은 하드웨어에 직접 접근을 할 수가 없습니다. 이 때 둘을 연결해주는 역할을 Operating System(OS)가 수행해줍니다.

운영체제는 프로그램이 아니다

프로그램이라는 것은, 보통 main함수(entry point)로써 독립적으로 실행이 가능한 것을 의미합니다. 하지만 운영체제는 독립적으로 실행할 수 없으므로 프로그램보다는 소프트웨어, 라이브러리에 가깝습니다.

운영체제의 서비스

서비스라는 것은, 상위계층(End User, Programmer, Application)에게 제공하는 기능들을 의미합니다. 해당 기능들은 아래와 같습니다.

  • 프로그램 실행
  • 컴퓨터 자원(하드웨어, 데이터)에 접근해 이를 사용할 수 있게 함
  • 컴퓨터를 사용하면서 발생할 수 있는 Error, Exception들을 상위계층에 보고함
  • 자원의 이용현황을 통계화해서 사용자에게 제공해줌 (e.g. windows의 작업관리자)
  • etc

컴퓨터 구조 (Von Neumann Architecture)

Memory에는 크게 다음과 같이 구분됩니다.

  • 주기억장치: RAM의 경우 휘발성, ROM의 경우 비휘발성(BIOS에 여기에 존재)
  • 보조기억장치(HDD, SSD): 비휘발성

앞서 언급했듯이 컴퓨터를 시작하게 되면 보조기억장치에 있는 OS파일이 주기억장치로 올라갑니다. 또한, 프로그램을 실행하거나 데이터를 읽는 경우에도 마찬가지로 작동합니다.

Kernel

운영체제의 기능 중에 항상 Main Memory에 상주하고 있는 요소를 의미합니다.
(e.g. I/O Device Manager, Process Scheduling)

위 말을 다른 관점에서 해석해보면, '운영체제의 모든 요소가 항상 Main Memory에 들어있는 것만은 아니다'라는 의미를 담고있음을 알 수 있습니다.
실제로, 운영체제 회사마다 OS에 넣어놓는 보조적인 기능들이 있는데 그 기능들이 이에 해당합니다.
이러한 요소들은 다루지 않을 것이므로 앞으로 언급할 kernel은 운영체제와 같은 의미로 간주하면 될 것 같습니다.

0개의 댓글