1. 운영체제의 정의와 필요성
운영체제의 역할은 무엇일까? 운영체제는 Abstraction과 Policy를 제공하는 역할을 한다.
Abstraction은 하드웨어를 손쉽게, 효율적으로 사용할 수 있는 '추상화'이다. 가령 복잡한 전기적 신호를 이용하는 CPU를 C와 같은 High-level language로 구현된 Process를 이용해 손쉽게 사용한다던지, 복잡한 Memory를 Address Space로 쉽게 관리하는 것이 이 Abstraction의 예시이다. 이 예시를 한번 자세히 살펴보자. 프로그램은 바이너리 형태로 작성된 명령어의 모음이다. 이 명령어의 모음이 HW에서 실행되어야 하는데, HW가 각 프로그램을 구분하고, 인식 및 실행하여 자원을 독립적으로 공유해주어야 한다. 이를 위해 Process라는 실행되고 있는 프로그램의 추상화가 존재하는 것이다. 또한 각 프로세스가 차지하는 메모리는 서로로 부터 실행 context와 Privacy가 보호되어야 한다. 이러한 Protected Domain을 위해 Memory의 추상화인 Address space가 필요한 것이다. Abstraction의 예시는 이 밖에도, 파일 저장 시 디스크에 직접 쓰면 발생하는 위험(겹침, 정상실행 보장 불가)으로 부터 보호를 위한 File abstraction, 네트워크 통신 시 Privacy와 대상 구분의 문제로 부터 보호를 위한 Port 등이 존재한다.
Policy는 자원 공유 및 분배를 위한 '정책'으로, OS가 돌아가는 목적에 따라 정책이 달라지는데, 이를 제공해주는 역할을 한다. 예를 들어 PC와 같이 성능이 중요한 시스템이 존재할 수도, 스마트 폰과 같이 성능을 일부 포기하더라도 에너지 효율을 함께 중시하는 시스템도 존재할 것이다. 이처럼 자원 공유 및 분배에는 시스템이 돌아갈 환경에 맞추어 정책이 책정되어야 하는데, 이러한 정책을 제공하는 것이 OS의 역할이다
2. OS의 구조
OS와 Kernel은 두가지 관점이 존재한다. 하나는 OS를 Kernel로 보는 관점과, 다른 하나는 OS를 Kernel과 GUI와 Library를 포함한 것으로 보는 관점이다. 여기서 Kernel이란 자원 할당, 하드웨어 인터페이스, 보안 등을 담당하는 운영체제의 핵심 부분이다. 다음은 하드웨어와 OS와 Application의 연관관계를 도식화 한 그림이다
모든 Application이 OS가 제공하는 추상화를 통해 하드웨어에 접근함을 알 수 있다
'학교 공부 > OS' 카테고리의 다른 글
운영 체제 (Operating System) - Kernel System Call 이해와 구현 (0) | 2021.11.28 |
---|---|
운영 체제 (Operating System) - Computer Architecture (0) | 2021.11.28 |
운영 체제 (Operating System) - Process (0) | 2021.11.28 |
운영 체제 (Operating System) - 운영체제 구조 (2) (0) | 2021.11.28 |
운영 체제 (Operating System) - 운영체제 구조 (0) | 2021.11.27 |