출처 서울대학교 홍성수 교수님, [K-MOOC] 운영체제의 기초, 1주차 Introduction to OS, 1-2. Functions of OS
01-02. 운영체제의 기능 Functions of OS
운영체제의 사례
<예시> 컴퓨터-Windows, 안드로이드 모바일 폰-리눅스, 컴퓨터-OSEK, 엘레베이터나 밥솥 등의 운영체제
운영체제의 특징
1. 매우 방대하다.
수천 만 라인의 코드로 이루어져 있다.
2. 매우 복잡하다.
- 하드웨어가 발전해서 하드웨어의 기능이 복잡해지고 다양해졌는데 운영체제는 이러한 하드웨어의 동작 특성들을 파악해서 제어하고 관리하고 사용 가능하게 만들어줘야 한다.
- 멀티태스킹, 멀티프로그래밍을 지원하는 것이 복잡하다. 제한된 하드웨어 자원을 여러 개의 프로그램이 서로 경합을 해야 한다. 어떤 job이 수행되려면 CPU와 메모리, I/O 디바이스를 차지해야 한다. 운영체제는 job들의 서로 모순되는 그런 요구사항을 잘 만족시켜주고 전체적인 평균적인 퍼포먼스를 최적화해주는 일을 해야 한다.
- 컴퓨터 시스템 안에는 많은 이벤트들이 들어오게 된다. 키보드에 자판 두드리기, 이더넷 인터페이스 카드를 통해 패킷이 도착하는 것. 이렇게 서로 관련이 없는 이벤트들은 서로 asynchronous한 특성을 가지고 있다. 어떤 이벤트의 동작이 다른 이벤트의 동작과 무관하게 존재하다 보니 그것을 처리하는 것이 복잡해진다.
3. 운영체제 내부를 이해하기 어렵다.
여러 기능이 한꺼번에 존재하고 서로 asynchronous하게 동작하다보니, 그 기능들이 만나 어떤 행동을 보일지 예측하기 어렵다. 버그가 많이 내재되어 있다. OS는 과학적인 결과물이 아니라 경험적으로 튜닝해야 하는 대상으로 여겨진다.
자동차의 자율주행을 위해서는 리눅스 급의 방대한 운영체제가 사용된다. 운영체제의 신뢰성이 매우 중요해진다. 복잡함에도 신뢰성 있는 운영체제를 개발해야 한다는 상호모순적인 미션이 주어진다.
운영체제가 제공하는 기능
1. Coordinator
컴퓨터 시스템에 존재하는 하드웨어 컴포넌트(리소스)들을 종류별로 잘 관리해서 많은 멀티태스킹하는 job들이 효율적으로 공평하게 사용할 수 있도록 조정해주는 것.
2. Illusion Generator
굉장히 복잡하고 프로그래밍하기 어려운 하드웨어를 감추고 사용자들이 사용하기 편리한 virtual machine을 제공하는 것.
3. Standard Library
빈번히 사용되는 산술, 불리언(논리) 연산 등을 시스템 내부에 가지고 있으면서 사용자들이 사용할 수 있게 하는 API를 제공하는 것.
Coordinator로서 운영체제
컴퓨터 시스템이 가지고 있는 핵심적인 것들은 CPU(Central Process Unit), 메모리, 입출력 장치가 있다. 컴퓨터 시스템이 이렇게 구성되어 있는 것은 우리가 현재 사용하는 컴퓨터가 폰 노이만 머신이기 때문이다. 운영체제는 Coordinator로서 CPU, 메모리, 입출력 장치를 관리해준다.
- CPU management subsystem
: 멀티태스킹이 중요함. 멀티태스킹의 목적은 concurrency를 제공하는 것. - I/O management subsystem
- Memory management subsystem
: 논리적 주소를 물리적 주소로 변환하는 것. - File management subsystem
- Network management subsystem
*파일, 네트워크는 일종의 입출력 장치이지만 이들은 시스템 성능에 큰 영향을 주는 장치이기 때문에 따로 다룬다. 파일이나 네트워크나 굉장히 큰 볼륨 데이터를 처리하기 때문에 그렇다. 디스크로 데이터를 보내거나 디스크로부터 데이터를 읽을 때, block이라고 하는 볼륨 데이터로 operation하게 된다. 이때 operation을 잘못하면 성능 저하가 나타난다. 네트워크의 경우에도 라인을 통해 데이터 패킷을 보내게 되는데 여기서 많은 스케줄링 이슈, 자원 할당 이슈가 발생하게 된다. 일반적으로 입출력 장치는 주로 바이트 단위로 데이터를 처리하는 입출력 장치이고 파일과 네트워크는 더 큰 데이터를 다루는 분야이다.
*파일이란 볼륨 디바이스인 하드 디스크 드라이브에 저장되어 있는 데이터의 덩어리들이다.
*네트워크 관리란 이더넷 인터페이스 카드 등을 관리해주는 것이다.
운영체제의 정의
1. 운영체제는 Resouce coordinator다.
운영체제는 컴퓨터의 자원들을 잘 관리해서 멀티태스킹이 원활하게 되게 만드는 시스템 소프트웨어다.
1990년대 중반까지의 정의로 교과서적 정의의지만, old-fashioned 정의이다.
2. 운영체제는 User program을 수행시킬 수 있는 수행 환경이다.
인터넷 시대가 시작된 이후로 운영체제의 정의는 조금 달라졌다. 제3자가 작성한 앱을 다운받아서 그 앱이 수행될 수 있게 만들어 주는 환경(run-time)이다.
스마트 디바이스란 운영체제의 관점에서 보면 소비자가 app market에서 앱을 다운받아 수행시킬 수 있어 그 디바이스의 기능이 무한히 늘어나게 된 디바이스라고 볼 수 있다.
'Computer System > 운영체제' 카테고리의 다른 글
[운영체제] 03. Stack and Dynamic Memory Allocation of Local Variables (0) | 2024.01.22 |
---|---|
[운영체제] 02-3. Hardware Protection Mechanisms (0) | 2024.01.22 |
[운영체제] 02-2. Interrupt Mechanism (0) | 2024.01.22 |
[운영체제] 02-1. Computer Systems Architecture (0) | 2024.01.02 |
[운영체제] 01-1. 운영체제의 진화 과정 (0) | 2023.12.31 |