OS Deep Dive #01 - Introduction

코스·2020년 12월 17일
0
post-thumbnail

이 시리즈는 공개자료인 Operating Systems: Three Easy Pieces (OSTEP)을 공부하면서 정리한 글들입니다. 궁금한 점이 있거나 오류가 있다면 댓글로 알려주세요!

Introduction to Operating System

컴퓨터에서 여러 프로그램이 돌아가고 상태관리를 해주는 상위의 프로그램이 존재하는데, 이를 운영체제 (Operating System)이라고 합니다. 이 책의 제목에도 적혀있듯 운영체제의 중요한 3요소를 토대로 공부가 진행되는데, 이는 각각 Virtualization, Concurrency, Persistence입니다.

Virtualization

컴퓨터의 CPU 자원을 활용해 프로그램을 돌리는데, 물리적으로 만약 CPU의 코어수가 8개라면 8개 초과의 프로그램을 킬때 문제가 발생할수 있다고 생각할 수 있습니다. 다만 우리의 컴퓨터들은 수십개의 프로그램을 동시에 돌릴 수 있죠. 이때 운영체제의 첫번째 요소인 가상화(Virtualization)가 나오게 됩니다. 운영체제는 CPU 코어들을 마치 거의 무제한으로 가지고 있다고 생각하고, 가상의 코어를 이용해 프로그램을 실행합니다. 이때 프로세스(Process)를 이용해 이를 수행합니다.

위에서는 CPU에 대한 가상화를 지원했다면, Memory에 대해서도 가상화를 지원해야 합니다. 프로그램이 메모리에 접근을 할 때 물리적인 메모리를 직접 접근하지 않습니다. 이에대해 가상화된 주소를 제공해 그 주소를 통해 메모리에 접근하는데, 이를 지원하는 기능도 있어야 합니다.

Concurrency

이런 가상화를 지원하게 된다면 가장 문제가 발생하는 지점이 바로 병행성(Concurrency)입니다. 만약 여러 프로세스가 하나의 메모리를 참조하고 있다면 이 메모리가 다른 프로세스가 사용하고 있는지, 참조하고 있는지 알아야 합니다.

대표적인 예시로 ATM 문제가 있습니다. 통장에 150달러가 있다고 할때 두개의 ATM 기기에서 동시에 100달러를 뽑는다고 가정해봅시다. 만약 정말 동시에 100달러를 출금하는 요청을 받아 잔액이 부족하지 않아 출금이 가능하다고 시스템에서 판단해 100달러를 각각 출금해준다면, 소유 금액 이상의 돈을 출금하는 큰 문제가 발생하게 됩니다. 이런 문제들을 통틀어 병행성 문제라고 말하고, 이러한 문제점 역시 운영체제가 해결해야 할 하나의 중요한 요소입니다.

Persistence

프로그램이 돌아가는 동안 프로그램이 사용하는 데이터들은 램에 저장되지만, 램은 휘발성이고 불안정하기 때문에 이를 다른 저장장치에 저장하고 유지해야 합니다. 이에대한 운영체제의 요소는 지속성(Persistence)이라고 불립니다. 이에 대해 운영체제에서는 System Call을 제공해 파일을 접근할 수 있게 해줍니다.

참고자료

profile
잡다한거 하는 개발자

0개의 댓글