Operating System: 00. 운영체제 개요
운영체제 개요
- 운영체제는 자원을 어떻게 가상화하는가?
- 가상화 효과를 얻기 위하여 운영체제가
구현하는 기법과 정책은 무엇인가?
- 운영체제는 이들을 어떻게 효율적으로 구현하는가?
- 어떤 하드웨어 지원이 필요한가?
운영체제의 목적
-
- 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다.
- 운영체제는 동시 사용자/프로그램들이 각각
독자적 컴퓨터에서 수행되는 것 같은 환상(illusion)
을 제공한다. 하드웨어
를 직접 다루는 복잡한 부분을 운영체제가 대신하여 처리한다.
- 운영체제는 동시 사용자/프로그램들이 각각
- 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다.
-
- 컴퓨터 시스템의 자원을 효율적으로 관리한다.
- 효율성: 주어진 자원으로 최대한의 성능을 내도록 한다.
- 형평성: 특정 사용자/프로그램에게 지나친 불이익이 발생하지 않도록 한다.
- 컴퓨터 시스템의 자원을 효율적으로 관리한다.
프로그램이 실행될 때 어떤 일이 일어날까?
- 폰 노이만 아키텍처(Von Neumann Architecture)
프로세서
는 초당 수십억 개의 명령어를반입(fetch)
하고,해석(decode)
하고실행(execute)
한다.- 즉 두 수를 더하고, 메모리에 접근하고, 조건을 검사하고, 함수로 분기하는 등의 정해진 일을 하는 것이다.
CPU 가상화(Virtualizing the CPU)
- 하나의 CPU 또는 소규모의 CPU 집합을 무한 개의 CPU가 존재하는 것처럼 변환하여
동시에 많은 수의 프로그램을 실행시키는 것
을 CPU 가상화라고 한다.
메모리 가상화(Virtualizing memory)
- 각 프로세스는 자신만의
가상 주소 공간(virtual address space, 가상 주소 공간)
을 갖는다. - 운영체제는 이 가상 주소 공간을 컴퓨터와 물리 메모리로
매핑(mapping)
한다. - 실행 중인 프로그램의 입장에서는 자기 자신만의 물리 메모리를 갖지만, 실제로 물리 메모리는 공유 자원이고. 운영체제에 의해 관리된다.
병행성(Concurrency)
- 올바르게 동작하는 병행 프로그램은 어떻게 작성해야 하는가?
- 같은 메모리 공간에 다수의 쓰레드가 동시에 실행한다고 할 때,
올바르게 동작하는 프로그램은 어떻게 작성할 수 있는가?
- 운영체제로부터 어떤 기본 기법들을 제공받아야 하는가?
- 하드웨어는 어떤 기능을 제공해야 하는가?
- 병행성 문제를 해결하기 위하여 기본 기법들과
하드웨어 기능을 어떻게 이용할 수 있는가?
영속성(persistence)
- 데이터를 영속적으로 저장하는 방법은 무엇인가?
- 파일 시스템은 데이터를 영속적으로 관리하는 운영체제의 일부분이다.
올바르게 일하기 위해서는 어떤 기법이 필요할까?
- 이러한 작업의 성능을 높이기 위해서 어떤 기법과 정책이 필요할까?
- 하드웨어와 소프트웨어가 실패하더라도
올바르게 동작하려면 어떻게 해야 하는가?
설계 목표
- 추상화: 시스템을 편리하고 사용하기 쉽게 만들 수 있도록 필요한 개념(abstraction)들을 정의한다.
- 성능(performing): 오버헤드를 최소화하는 것이다.
- 보호(protection): 응용 프로그램 간의 보호, 운영체제 응용 프로그램 간의 보호이다.
- 신뢰성(reliability): 운영 체제는 계속 실행되어야 하기에 높은 수준의 신뢰성을 제공해야 한다.
- 기타: 에너지 효율성(energy-efficiency), 보안(security), 이동성(mobility)
인터페이스 관점
- 운영체제는 사용자(프로그램)가 물리적 하드웨어를 다루기 위한
인터페이스
이다. - 프로그램 실행, 입출력, 저장장치, 자원 할당 등의 기능을
System Call
이라는 API를 제공하여 지원한다.
참고 자료
- 운영체제(공룡책)
- kocw 반효경, 운영체제와 정보기술의 원리
- 운영체제: 아주 쉬운 세 가지 이야기