CS/OS

[OS] 운영체제란?

Jutudy 2021. 5. 15. 01:23

개인적으로 공부하면서 정리하는 글입니다. 내용에 오류가 있는 경우 댓글 달아주시면 수정하도록 하겠습니다.

OS?

OS를 한마디로 표현하면 사용자 인터페이스자원관리를 위한 프로그램의 집합이라고 할 수 있습니다. 사용자 인터페이스는 사용자가 윈도우에서 아이콘이나 메뉴 버튼을 클릭하여 프로그램을 실행시키거나 파일을 여는 등의 일을 할 수 있도록 해주는 것이라고 할 수 있습니다. 자원관리는 컴퓨터의 자원(장치, 파일, 메모리, CPU 등)들을 효율적으로 관리하는 것 입니다. 이런 각각의 역할을 수행하는 프로그램들의 집합을 운영체제(OS)라고 합니다.

운영체제 구성요소

운영체제는 크게 커널(Kernel)과 유틸리티 프로그램(Utility Program)으로 나눌 수 있습니다.

커널은 운영체제에서 가장 중요한 부분으로서 컴퓨터의 자원(CPU, Memory, Device 등)을 직접 제어하고, 응용 프로그램이 하드웨어를 사용할 수 있도록 인터페이스를 제공해주는 운영체제의 기능들 중 매우 빈번하게 사용되는 부분입니다. 그렇기 때문에 커널은 컴퓨터가 처음 부팅될 때 주기억 장치(RAM)에 적재되어서 컴퓨터가 종료될 때 까지 주기억 장치에 상주하게 됩니다. 빈번하게 사용되고 빠르게 실행되어야할 커널을 보조기억장치(HDD, SSD)에 두고 사용하게 되면 디스크-주기억 장치 사이의 입출력이 빈번하게 발생하여 시스템의 성능이 매우 떨어지게 됩니다. 그래서 커널은 컴퓨터가 시작되고 종료될 때 까지 항상 주기억 장치에 상주하게 됩니다.

프로그램은 주기억 장치에 적재되어 있어야 CPU에 할당되어 실행될 수 있습니다. 커널 역시 프로그램이기 때문에 실행되기 위해선 주기억 장치에 적재되어 있어야하고, 커널을 주기억 장치에 상주시킴으로써 빠르게 실행시킬 수 있습니다.


운영체제를 커널과 유틸리티 프로그램으로 구분하는 이유는 주기억 장치(RAM)의 용량 때문입니다. 한정적인 용량을 가진 주기억 장치에 항상 상주해 있어야 하는 커널로 모든 운영체제 프로그램을 구성하게 되면 응용 프로그램이 적재될 공간이 줄어들게 되어 효과적으로 프로그램을 사용할 수 없을 것입니다. 그래서 비교적 자주 사용되지 않는 프로그램은 보조기억장치에 두고 필요할 때 주기억 장치로 적재하여 실행시키게 되고, 이러한 운영체제 프로그램들을 **유틸리티 프로그램**이라고 합니다.

커널모드 / 유저모드

컴퓨터에는 여러 프로그램들이 있습니다. 운영체제에 속하는 프로그램, 응용 프로그램, 게임 프로그램 등... 이런 프로그램들이 실행될 때 두 가지 모드(커널모드, 유저모드)로 구분되어 실행됩니다. 이렇게 두 가지 모드로 구분하여 프로그램이 실행되도록 하는 이유는 아무 프로그램이나 컴퓨터의 자원을 직접 조작하게 된다면 컴퓨터에 치명적인 문제를 일으킬 수 있기 때문에 시스템에서 허가된 프로그램만이 자원에 접근할 수 있도록 하기 위해서입니다. 일반적으로 사용자 프로그램, 응용 프로그램은 유저모드에서 실행되고, 커널 프로그램이 커널모드에서 실행됩니다. 커널모드, 유저모드는 각각 독립적으로 실행되는 것이 아니고, 둘 중 하나의 모드로 시스템이 동작하는 것 입니다. 응용 프로그램을 실행되는 중에는 유저모드인 것이고, 커널 프로그램이 실행되는 중에는 커널모드가 되는 것 입니다. 커널모드 <-> 유저모드 변환은 mode bit 값으로 구분합니다. (커널모드 : 0, 유저모드 : 1)

System Call

응용 프로그램이 실행되는 중에 메모리 접근이 필요하거나, 입출력 장치 접근이 필요하다면 어떻게 해야할까요? 컴퓨터의 자원에 직접적으로 접근할 수 있는 것은 커널 프로그램입니다. 그렇기 때문에 응용 프로그램은 컴퓨터의 자원에 접근할 수 있는 커널 프로그램을 호출하고, 커널 프로그램이 작업을 수행한 후 응답하게 됩니다. 이 때, 응용 프로그램이 커널 프로그램을 호출하는 것을 System Call 이라고 합니다.

시스템 콜

'CS > OS' 카테고리의 다른 글

[OS] CPU 스케줄링  (0) 2021.06.06
[OS] 프로세스와 스레드(Process, Thread)  (0) 2021.05.23
[OS] 프로세스 상태(Process State)  (0) 2021.05.23
[OS] 프로세스(Process)  (1) 2021.05.22
[OS] 인터럽트  (0) 2021.05.15