세 가지 주요 개념.
가상화(virtualization), 병행성(concurrency), 영속성(presistence)
프로그램은 매우 단순한 일을 한다 :
명령어르 실행한다. 프로세서는 명령어를 초당 수백만 번 (요즘은 수십억 번)
반입(fetch)하고, 해석(decode)하고 (즉, 무슨 명령어인지 파악하고), 실행(execute) 한다.
시스템을 사용하기 편리하면서 정확하고 올바르게 동작시킬 책임이 있기 때문에 소프트웨어를
운영체제(operating system, OS) 라고 부른다
앞서 언급한 일을 위해 가상화(virtualization)라고 불리는 기법을 사용한다.
운영체제는 프로세서, 메모리, 또는 디스크와 같은 물리적인 자원을 이용하여
일반적이고, 강력하고, 사용이 편리한 가상 형태의 자원을 생성한다.
그래서 때로는 가상머신(virtual machine)이라고 부른다.
프로그램 실행, 메모리 할당, 파일 접근과 같은 가상 머신과 관련된 기능들을 운영체제에게 요청할 수 있도록,
운영체제는 사용자에게 API를 제공한다.
운영체제는 응용 프로그램이 사용 가능한 수백 개의 시스템 콜을 제공한다.
가상화는 많은 프로그램들이 CPU를 공유하여, 동시에 실행될 수 있게 한다.
이러한 이유로 운영체제는 자원 관리자(resource manager)라고도 불린다.
CPU, 메모리, 및 디스크는 시스템의 자원이다.
CPU 가상화
# 자원을 어떻게 가상화시키는가?
가상화 효과를 얻기 위하여 운영체제가 구현하는 기법과 정책은 무엇인가?
운영체제는 이들을 어떻게 효율적으로 구현하는가?
어떤 하드웨어 지원이 필요한가?
하나의 CPU 또는 소규모 CPU 집합을 무한개의 CPU가 존재하는 것처럼 변환하여
동시에 많은 수의 프로그램을 실행시키는 것을 CPU 가상화(virtualizing the CPU) 라 한다.
실행하고, 멈추고, 어떤 프로그램을 실행시킬 것인가를 운영체제에게 알려주기 위해서는
원하는 바를 운영체제에 전달할 수 있는 인터페이스 (API)가 필요하다.
API는 운영체제와 사용자가 상호작용할 수 있는 주된 방법이다.
메모리 가상화
메모리에 대해 생각해 보자. 물리 메모리(physical memory) 모델은 매우 단순하다. 바이트의 배열이다.
메모리를 읽기 위해서는 데이터에 주소를 명시해야 한다. 메모리를 쓰기 위해서는 주소와 데이터를 명시.
프로세스는 자신만의 가상 주소 공간(virtual address space)를 갖는다.
운영체제는 이 가상 주소 공간을 컴퓨터의 물리 메모리로 매핑(mapping) 한다.
병행성(concurrency)
프로그램이 한 번에 많은 일을 하려 할 때(동시성) 발생하는 그리고 반드시 해결해야
하는 문제들을 가리킬 때 이 용어를 사용한다. 심각하고 흥미로운 문제 발생.
멀티 쓰레드 프로그램도 동일한 문제.
# 올바르게 동작하는 병행 프로그램은 어떻게 작성해야 하는가?
영속성(persistence)
DRAM과 같은 장치는 데이터를 휘발성(volatile) 방식으로 저장하기 때문에 메모리의 데이터는 쉽게 손실됨.
하드웨어는 입력/출력(input/output) 혹은 I/O 장치 형태로 제공됨.
디스크를 관리하는 운영체제 소프트웨어를 파일 시스템(file system) 이라고 부른다.
# 데이터를 영속적으로 저장하는 방법은 무엇인가?
파일 시스템은 많은 작업을 해야함.
데이터가 디스크 어디에 저장될지 결정.
다양한 자료 구조를 통하여 데이터의 상태를 추적.
저장장치로부터, 기존 자료 구조를 읽거나 갱신.
성능향상을 위해 대부분의 파일 시스템은 쓰기요청을 지연시켜 취합된 욫들을 한 번에 처리함.
갑작스런 고장을 대비해서 저널링(journaling)이나 쓰기-시-복사(Copy-On-Write)와 같은 복잡한 쓰기 기법 씀.
운영체제는 CPU, 메모리, 디스크와 같은 물리 자원을 가상화한다.
병행성과 관련된 복잡한 문제를 처리한다.
파일을 영속적으로 저장하여 오랜 시간 안전한 상태에 있게 한다.
운영체제의 설계와 구현에 중요한 목표는 성능이다.
즉 오버헤드를 최소화(minimize the overhead)하는 것이다.
응용 프로그램 간의 보호, 운영체제와 응용 프로그램 간의 보호
보호는 운영체제의 원칙 중 하난인 고립(isolation) 원칙의 핵심이다.
운영체제는 계속 실행해야함. 운영체제 실패하면 응용 프로그램도 실패
이러한 종속성 때매 운영체제는 높은 수준의 신뢰성(reliability)을 제공해야 한다.
시스템 콜과 프로시저 호출의 결정적 차이는
시스템 콜은 제어를 운영체제 넘길 때 하드웨어 특권 수준(hardware privilege level)을 상향 조정한다는 것.
사용자 응용 프로그램은 사용자 모드(user mode) 라고 불리는 상태에서 실행
'OS > 운영체제: 아주 쉬운 세 가지 이야기' 카테고리의 다른 글
가상화 (0) | 2024.09.25 |
---|