운영체제 개요
“운영체제 : 아주 쉬운 세가지 이야기”를 읽으면서 핵심 내용을 정리하였습니다.
이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해보고자 합니다.
1. 운영체제의 역할
•
여러 프로그램을 동시에 실행 시킬 수 있게 도와줌
•
프로세스간에 메모리 공유를 가능하게 해줌
•
외부 디바이스와 상호작용을 가능하게 해줌
•
이외 등등… 프로세스가 물리적 자원 위에서 잘 작동할 수 있도록 도와 주는 역할
→ 운영체제가 시스템을 사용하기 편리하게 하기 위해 사용하는 중요한 3가지 특성에 대해서 앞으로 공부하게 될 것!
2. 운영체제 3가지 이야기
1) 가상화(virtualization)
•
프로세서, 메모리, 디스크와 같은 물리적 자원을 사용하기 쉽도록 가상 형태의 자원을 생성한다. 따라서 운영체제를 가상 머신(virtual machine)이라고 부르기도 한다.
•
사용자(응용프로그램)가 운영체제에서 제공하는 기능을 사용할 수 있도록 운영체제는 사용자에게 API를 제공 하는데 이를 시스템 콜(system call)이라고 한다.
API (application programming interface)
- 소프트웨어간에 서로를 이어 주는 인터페이스. 두 소프트웨어 구성요소가 서로 통신할 수있도록 해주는 메커니즘.
a. CPU 가상화
•
하드웨어의 도움을 받아 운영체제가 시스템에 수많은 가상 CPU가 존재하는 것처럼 환상을 만들어 내어 여러 프로그램이 동시에 실행 될 수 있도록 하는 것을 CPU 가상화라고 한다.
•
다수의 프로그램이 동시에 실행될 경우 어떤 프로그램을 먼저 실행 시킬 것인지 정하는 운영체제 정책과 구현 기법에 대해 앞으로 학습한다.
b. 메모리 가상화
•
컴퓨터에서 실제 물리적 메모리의 모델은 단순한 바이트의 배열이다.
•
각 프로세스들은 물리메모리를 다른 프로세스들과 공유하는 것이 아니라 마치 자신만의 독립적인 메모리 공간을 가지고 있는 것 처럼 인지하는데 이는 운영체제가 메모리 가상화를 해주기 때문이다.
•
각 프로세스들은 자신 만의 가상 주소 공간을 가지게 되고 운영체제는 이를 물리 메모리에 매핑(mapping)한다.
•
하나의 프로세스에서 하는 메모리 연산은 다른 프로세스에게 영향을 주지 않는다.
•
프로그램 입장에서는 자신만의 물리메모리를 가지고 있는 듯한 환상을 주지만 실제 운영체제가 물리메모리라는 공유 자원을 관리하고 있는 것이다.
2) 병행성(concurrency)
•
운영체제 자체도 프로그램이고 여러 응용프로그램을 관리하는 과정에서 병행성 문제가 발생할 수 있다.
•
멀티쓰레드 환경에서 또한 병행성 문제가 발생할 수 있고 이는 쓰레드는 동일한 메모리 공간을 공유하기 때문이다. 동일한 메모리 공간내에서 임계영역에 동시에 접근하려고 할 때 큰 문제가 발생할 수 있고 이를 방지할 수 있는 방법에 대해서 학습할 것이다.
3) 영속성(persistence)
•
메모리와 같이 휘발성 데이터가 아닌 영속적인 데이터를 관리 할 수 있도록 운영체제가 도와주고 있다.
•
파일 시스템이라는 운영체제 소프트웨어의 일부가 디스크라는 물리적 자원을 관리하는 것을 담당하고 있다.
•
새로운 데이터를 디스크의 어디에 저장해야할지 결정 및 데이터의 상태를 여러 자료구조를 사용하여 추적해야한다.
•
데이터가 새롭게 쓰일때 저널링이나 쓰기 시 복사를 사용하여 데이터 수정시 오류가 발생하더라도 정상적으로 복구 될 수 있도록 도와 준다.