응용프로그램이 실행되는 과정에서, 하드웨어에게 명령을 내리거나 이를 관리하고 감독하는 주체를 말합니다.
우리가 컴퓨터를 실행할 때 일어나는 일들은 아래와 같습니다.
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)에게 제공하는 기능들을 의미합니다. 해당 기능들은 아래와 같습니다.
Memory에는 크게 다음과 같이 구분됩니다.
앞서 언급했듯이 컴퓨터를 시작하게 되면 보조기억장치에 있는 OS파일이 주기억장치로 올라갑니다. 또한, 프로그램을 실행하거나 데이터를 읽는 경우에도 마찬가지로 작동합니다.
운영체제의 기능 중에 항상 Main Memory에 상주하고 있는 요소를 의미합니다.
(e.g. I/O Device Manager, Process Scheduling)
위 말을 다른 관점에서 해석해보면, '운영체제의 모든 요소가 항상 Main Memory에 들어있는 것만은 아니다'라는 의미를 담고있음을 알 수 있습니다.
실제로, 운영체제 회사마다 OS에 넣어놓는 보조적인 기능들이 있는데 그 기능들이 이에 해당합니다.
이러한 요소들은 다루지 않을 것이므로 앞으로 언급할 kernel은 운영체제와 같은 의미로 간주하면 될 것 같습니다.