OS (운영체제) 는 Operating System 의 약어로 컴퓨터를 사용함에 있어서
모든 컴퓨팅 리소스를 어떻게 제어하고 관리하며 운영할지를 결정하는 가장 기본적인 소프트웨어 입니다.
쉽게 말해 여러 프로그램들을 실행시키기 위한 다양한 하드웨어들로 구성된 컴퓨터에서,
프로그램과 하드웨어, 그리고 사용자 사이의 모든 중재 역할을 OS 가 담당하는 것입니다.
그 과정에서 사용자 혹은 주변장치가 컴퓨터를 쉽게 다룰 수 있게끔 'Interface (인터페이스)' 를 제공하고
컴퓨팅 리소스를 추상화하여 쉽게 접근할 수 있도록 조직하는 'File system(파일 시스템)' 과
프로세서(CPU)와 메모리, I/O devic 등의 하드웨어와 프로그램, file, 하드웨어 간의 주고받는 signal 등의 소프트웨어 전체를 관리하는 'Resource management (자원 관리)',
I/O 등의 예외 상황이 발생한 경우 필요한 처리를 우선시키는 'Interupt (인터럽트)',
적절한 권한을 얻은 프로세스만이 resource 를 사용할 수 있도록 하는 'System management(시스템 보호)' 등 아주 다양한 기능을 수행합니다.
이렇듯 OS 는 그 기능과 개념의 범위가 워낙 넓다보니 엄밀한 하나의 정의를 찾아보기는 힘듭니다.
그나마 OS 의 일반적인 정의로 유명한 문장 하나를 인용하자면
" The one program running at all times on the computer "
" 컴퓨터 상에서 항상 실행되고 있는 하나의 프로그램 " 정도가 될 것 같습니다.
컴퓨터의 전원이 켜지자마자 가장 먼저 실행되는 프로그램, 즉 컴퓨터를 사용할 준비를 하기 위해 OS 를 Main memory 에 로딩해주는 프로그램을 Bootstrap program 이라고 합니다.
부츠에 발을 집어 넣기 위한 strap 부분에서 따온 이름으로, 컴퓨터에 OS 를 집어넣어 사용할 준비를 하는 프로그램인 것이죠.
컴퓨터가 켜지고 처음 시작되는 화면을 booting (부팅) 중이라고 하는 것도 여기서 온 말입니다.
OS 의 구성
앞서 언급했듯 OS 는 그 개념 자체가 엄밀하지 못하고 명확한 하나의 정의가 어렵다보니,
여러 OS 들의 구성이 상이하고, 특정 OS 에서는 OS 의 일부로 취급하는 요소가 다른 OS 에서는 그렇지 않은 경우도 있습니다.
이를테면 Winodw 는 UI (사용자 인터페이스) 를 OS 의 일부로 여기는 반면 수많은 버전의 Linux OS 는 그렇지 않습니다.
그렇기 때문에 앞으로 살펴볼 내용은 "이게 OS 다!" 라기 보다는 "OS 를 이해하기 위한 여러 부분들이다" 라고 생각하면서 넘어가 보겠습니다.
일반적으로 OS 의 구성 요소는 크게 Kernal 과 Kernal 을 제외한 그 외 여러 부분인 Utility 로 나눕니다.
사실상 Kernal 이 앞서 언급한 기능 대부분을 수행하는 OS 의 핵심 부분이며, 컴퓨터가 시작되고 끝날때 까지
Memory 의 일정부분을 점유하여 상주하는 프로그램 입니다.
그 외 UI 나 Device driver 등 서비스 프로그램들을 Utility 라고 하며, 이는 필요할 때만 Memory 를 사용하는 비상주 프로그램입니다.
Utility 나 Application 은 User Level 로서 Kernal 에 접근할 수 없기 때문에
하드웨어 사용, 프로세스 생성 등과 같은 Kernal Level 의 기능들을 사용할 수 없습니다.
이러한 접근 권한을 기준으로 User mode (사용자 모드) 와 Kernal mode (커널 모드) 를 나누는 것이죠.
그래서 User mode 는 필요한 기능을 사용하기 위해 Kernal 에 요청을 하는데,
이때 User 와 Kernal 사이의 Interface 를 System call 이라고 합니다.
OS 의 종류
OS 의 종류는 그 기능과 개념의 넓이 만큼이나 다양한 기준으로 분류됩니다.
System 을 동시에 사용할 수 있는 사용자 수에 따라 Single user system / Multi user system 으로 구분하기도 하고,
동시에 실행 가능한 Process 의 수에 따라 Single tasking system / Multi tasking system 으로 구분하기도 합니다.
Multi tasking system 의 경우 OS 의 Process Scheduling 이라는 기능을 통한 시분할이 이루어지는데요.
쉽게 말해 여러 Process 가 동시에 실행되는 것 처럼 보이기 위해 아주 짧은 시간 단위로 여러 Process 를 번갈아 실행하는 것입니다.
해당 개념에 대해서는 후에 더 자세히 알아보도록 하겠습니다.
그 외에도 OS 의 작업 수행 방식에 따라 Batch system, Time sharing system, Parallel processing system, Distributed processing system, real time system 으로 분류하기도 하고,
공급되는 시장에 따라 임베디드 OS, 서버 OS, 모바일 OS, 데스크탑 OS 로 분류하기도 합니다.
작성 전 학습/ 참고한 자료
운영체제: 02. 운영체제의 개념과 구조 (youtube.com)
운영체제 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
(93) [Course] Operating System (CPA310) - 운영체제 강의 - YouTube
리눅스 - 커널(Kernel)과 시스템 콜(System Call), 쉘(Shell)에 대하여 : 네이버 블로그 (naver.com)
[운영체제] 시스템 콜 (System Call) (tistory.com)
'Computer Science' 카테고리의 다른 글
Cloud computing 이해를 위한 간단한 그림 (0) | 2024.03.27 |
---|---|
Cache memory 세부적인 이해를 위한 간단한 그림 (1) | 2024.03.21 |
RAM 세부적인 이해를 위한 간단한 그림 (0) | 2024.03.20 |
Memory unit 이해를 위한 간단한 그림 (0) | 2024.03.18 |
CPU 의 구조와 작동을 이해하기 위한 간단한 그림 (0) | 2024.03.18 |