작성일
20231108 (2022년 요점정리 노션 내용 옮기기)
20231109 (부팅부터 메모리 관련 내용까지 보충)
컴퓨터 부품은 크게 하드웨어와 소프트웨어로 나뉜다. 하드웨어
는 메인보드, 중앙처리장치(CPU), 저장장치, 입출력 장치와 같은 물리적인 구성요소를 통칭하고, 소프트웨어
는 프로그램, 데이터를 가리킨다. 한 마디로 컴퓨터를 구동시키기 위해 필요한 것 들 중 실제로 만질 수 있는 제품으로 존재하면 하드웨어라고 부르고 이 외의 것을 소프트웨어라고 부른다.
하드웨어는 다른 글에서 살펴보기로 하고 이번 시간에는 소프트웨어에만 집중해 파보려고 한다.
사전지식 : 컴퓨터에서 자원이란?
프로그램 하나를 동작하기 위해서는 여러가지 것들이 필요하다. 예를 들어 CPU, 메모리, 보조기억장치, 입출력 장치와 같은 컴퓨터 부품들이 필요하곤 하는데, 이러한 프로그램 실행에 필요한 것들을 통틀어 시스템 자원 또는 자원이라고 부른다.
시스템 위에서 실행되는 모든 프로그램
을 통틀어 응용 소프트웨어
라고 부른다. 이미 언급했지만 우리가 흔하게 프로그램이라고 부르는 명령어의 집합
이 응용 소프트웨어에 해당한다.
(EX. 인터넷 브라우저, 메모장, 워드 프로세서, etc.)
컴퓨터를 구성하는 하드웨어에는 각각의 역할과 쓰임이 있지만 전기를 공급하기만 해서는 우리가 원하는 대로 작동하지 않는다. 컴퓨터의 기계적 장치들을 실질적으로 동작시키고, 수많은 파일(데이터) 등을 관리하고 프로그램이 잘 실행되기 위해 필요한 자원을 할당하는 시스템 소프트웨어를 필요로 한다.
즉, 시스템 소프트웨어
는 시스템을 운영하기 위해 설계된 소프트웨어
로, 응용 소프트웨어 실행을 위한 플랫폼을 제공한다고도 표현하며 실질적으로 컴퓨터 하드웨어에 접근하여 동작하게 하는 소프트웨어이다.
(EX. 운영체제
, 장치 드라이버, 로더, 링커, 프로그래밍 도구, 컴파일러, 어셈블러, 유틸리티, etc.)
참고로 특정 하드웨어 장치에서 포함된 시스템 소프트웨어를 펌웨어(firmwre)
라고 부르며, 운영체제 없이 한정된 자원(리소스)로 보통 단순한 로직으로 구성되어 있다.
시스템 소프트웨어의 일종으로 ‘자동차를 운전한다‘, ‘회사를 운영한다’, ‘정부를 운영한다’라는 개념처럼 ‘컴퓨터를 운영한다’라고 한다. 컴퓨터에서는 운영체제(OS, Operating System)
가 이 역할을 수행한다. 구체적으로 무엇을 하는지 살펴보자.
첫째, 자원 할당 및 인터페이스 제공
하드웨어(CPU, 메모리, 입출력 장치 등) 및 시스템 리소스 제어, 그리고 하드웨어와 응용 프로그램의 중간다리 역할을 한다. 즉, 운영체제를 통해 응용 프로그램가 시스템 자원(메모리, CPU, 입출력 장치, 데이터, etc.)을 사용할 수 있게 하는 것
이다.
둘째, 저장장치 관리
통상적으로 메모리라고 부르는 RAM를 관리한다. 운영체제가 응용 프로그램에 메모리를 할당할 때 실제 메모리 주소가 아닌 가상 메모리를 할당
하여 RAM 용량적 한계를 보완해준다.
사전지식 : RAM과 ROM
주기억장치(메인 메모리)의 종류는 RAM(Randdom Accecss Memory, 휘발성)과 ROM(Read Only Memory, 비휘발성)으로 나뉘는데, 메인 메모리 대부분의 용량을 RAM이 차지한다.
참고로 운영체제는 가상 메모리를 페이지 테이블(page table)을 이용하여 관리하며, 페이지 테이블의 valid bit을 통해 페이지가 어느 메모리에 있는지 확인할 수 있어 보다 효율적으로 관리 가능하다. 이에 대한 더 자세한 얘기는 추후 운영체제와 메모리를 주제로 다룰 때 (참고자료: https://preamtree.tistory.com/21) 하겠다.
셋째, 파일시스템 제공
시스템에서 사용되는 것들을 추상화하여 찾고자 하는 파일을 보다 빠르고 편하게 접근하도록 도와주는 파일 시스템
과 같은 보관 및 조직 체제 서비스를 제공해준다.
넷째, 프로세스 관리
운영체제에도 윈도우, 유닉스, 리눅스, 맥 OS 등등 종류가 있는데 멀티태스킹이 지원되는 운영체제를 사용할 경우, 여러 개의 응용 프로그램이 실행될 때 프로세스들을 스케줄링
하여 충돌이 일어나지 않도록 제어하는 역할도 해준다.
다섯째, 보안 기능
접근 제어, 방화벽 등의 보안 기능을 제공한다.
Q. 운영체제는 무엇이고 어떤 역할을 수행하나요?
운영체제하면 회사를 운영한다라는 문장이 떠오릅니다. 그래서 저는 운영체제를 컴퓨터를 운영하는 컴퓨터 세계 즉, 시스템의 운영진이라고 표현하고 싶습니다. 이런 관리자 역할을 수행하는 소프트웨어를 우리는 시스템 소프트웨어라고 부르는데, 운영체제는 이러한시스템 소프트웨어
중에서도 핵심이라고 말할 수 있습니다.
제가 컴퓨터 시스템의 핵심이라고 한 이유는 운영체제가 사용자나 응용 프로그램이 시스템 자원을 사용할 수 있게끔시스템 호출 인터페이스
를 제공해주기 때문입니다. 즉, 운영체제가 있어서 우리가 프로그램을 사용할 수 있고, 그리고 프로그램이 컴퓨터 자원을 이용할 수 있는 것입니다.
뿐만 아니라 보안을 위해 접근 제어, 방화벽 등의 기능을 제공하기도 하고, 프로세스와 자원을 관리하고, 저장장치와 파일 시스템 그리고 입출력 장치 즉, 드라이버 관리도 운영체제가 합니다. 여기서 저장장치 관리라 함은 메모리를 할당하고 회수하는 역할도 수행하는 것을 말합니다.
한마디로 운영체제는 컴퓨터 시스템 전반에 걸쳐서 중추적인 역할을 수행한다고 할 수 있습니다.
Q. 만약 운영체제가 없다면 어떨까요?
간단한 작업도 그 작업을 수행하기 위해 운영체제에 의해 작동되고 있는 하드웨어 모두를 조작하는 코드까지 작성해야 하는 번거로움이 생긴다.
[BOOK]
강민철, 「혼자 공부하는 컴퓨터 구조+운영체제」, 한빛미디어, 2022