2021. 1. 21. 19:04ㆍ운영체제
1. 운영체제란 무엇인가?
○ 운영체제란?
프로그램을 쉽게 실행하고, 동시에 실행하며, 메모리의 공유가 가능하게 하고, 장치와 상호작용을 가능하게 하는 소프트웨어
○ 운영체제의 역할
(1) 가상 머신(Virtual machine)
☆ 가상화(virtualization)
프로세서, 메모리와 같은 물리적인 자원을 가상 형태의 자원으로 공급
(2) 자원 관리자(Resource manager)
가상화를 통해 많은 프로그램이 동시에 접근하는 자원들을 관리하고, 스케쥴링한다.
(3) 표준 라이브러리(Standard library)
가상화를 구현하기 위해, 프로그램들이 자원을 사용할 수 있도록 시스템 콜(System call)을 제공한다.
☆ 시스템 콜
사용자의 코드가 시스템 자원을 사용하기 위해 운영체제에게 요청하는 것을 말한다. 단어 뜻 "그대로 시스템(= 운영체제 = 커널)을 호출한다" 라는 의미이다. 이 단어를 명사처럼 사용하여, 시스템콜을 호출한다 라는 중복적인 표현도 자주 사용된다.
- 응용 프로그램이 사용할 수 없는 물리적 자원 또는 기능을 사용하기 위해, 운영체제에 권한을 넘긴다.
trap 호출(하드웨어 명령어) - trap handler에게 제어권을 넘김 + 하드웨어 특권 수준을 커널 모드로 격상 - 운영체제는 요청받은 서비스를 완료하여, return from trap : 사용자에게 제어권을 돌려줌과 같은 절차에 의해 수행되는데, 이는 다른 포스트에서 자세히 다루겠다.
2. 가상화(Virtualization)
가상화란 실제로 한 개밖에 존재하지 않는 "자원"을 모두가 공유하여 사용하기 위한 기법이다.
이해를 돕기 위해 아래의 예시를 봐보자.
형과 아우로 자녀가 구성된 4인 가정이 있다. 이 집은 안타깝게도 가난하여 수저를 한 세트밖에 구비하지 못했다. 어머니는 이 한 세트를 통해 모든 가족 구성원이 자신의 수저를 갖고 있는 것처럼 느끼게 하고 싶다. 이를 위해 어머니는 네 명의 구성원의 밥 먹는 시각을 조율해서 다른 사람 걱정없이 이 수저를 가지고 밥을 먹도록 할 것이다. 이 때, 어머니는 물리적 자원(수저)를 네 명의 사람(프로세스들)이 모두 자신의 수저를 하나 가지고 있는 것처럼 느낄 수 있도록 사용하는 시각을 관리하고, 사용하고 나면 수저를 설거지하는 운영체제의 역할을 하고, 이러한 기법을 가상화라고 한다. |
(1) CPU 가상화
각 프로세스에게 그들을 위한 프로세서가 존재하는 것처럼 보이게한다. 달리말해, 한정된 소규모의 CPU를 무한개의 CPU처럼 보이게 하는 것이다. 이를 통해 프로세스들은 자신이 언제 CPU를 사용할 수 있고, 어떤 CPU를 사용해야하는 지에 대한 고민없이 자신의 할 일만을 생각하면 된다.
(2) 메모리 가상화
바이트의 배열으로 구성된 물리메모리는 각 바이트 단위로 주소가 존재한다. 프로세스는 메모리에 쓰기 혹은 갱신, 읽기를 위해 주소와 데이터를 명시해야하는데, 이 주소를 프로그램별로 고정하지 않아야 메모리를 효율적으로 사용할 수 있다. 만약 어떤 프로그램이 항상 같은 주소를 사용해야 한다면, 그 주소를 사용하는 다른 프로그램과는 절대 동시에 실행될 수 없기 때문이다. 그러나, 실행되는 환경에 따라 다른 주소 공간을 사용한 다는 것을 프로그램에서 자체적으로 관리할 경우, 프로그램이 악의적인 행동을 하지 않을 것이 보장되야하고, 프로그래머가 실수하지 않는다는 것또한 보장되어야 한다. 그렇기 때문에, 이를 운영체제에서 담당하여 각 프로그램에게 메모리를 가상화시켜, 각 프로그램을 위한 메모리가 존재한다고 가정할 수 있도록 하고, 운영체제가 이를 관리한다. 이러한 가상화된 메모리에서의 주소를 주소공간(또는 가상 주소 공간)이라고 한다.
3. 병행성(Concurrency)
병행성이란 여러 주체가 같은 자원을 동시에 사용할 때, 이 자원의 활용이 원자적(Atomically)이지 않을 경우 발생하는 문제이다. 아래와 같은 예시를 생각해보자.
한 스터디카페의 중앙 화이트 보드에는 오늘 방문한 사람 수가 적혀있다. 방문한 사람은 그 화이트보드를 보고나서 자신의 열람실로 들어가 컴퓨터를 통해 그 숫자에 1을 더해 기록한다. 기록을 확인한 스터디 카페 관리자는 화이트 보드를 갱신한다. 스터디 카페의 관리자는 이를 통해 오늘 방문한 사람 총 명수를 알 수 있다고 생각한다. 그러나 이 기록과 매출이 불일치함을 느끼게 된다. 왜 그럴까? |
이러한 병행성의 문제는 비단 운영체제의 문제 뿐만 아닌, 멀티 쓰레드 프로그램이나 데이터베이스의 트렌젝션에서도 발생한다. 이러한 문제를 해결하기 위해 Lock이라는 기법을 많이 사용한다. 그 이외의 Lock-free 데이터 또는 Transactional memery 등 다양한 방법이 궁금한 경우 (www.slideshare.net/seokjoonyun9/cuda-33834381?next_slideshow=1)에 한 교수님께서 정말 자세히 소개해주신 자료가 있으니 참조하자.
4. 영속성
운영체제는 디스크를 관리하는 소프트웨어인 파일시스템을 포함한다. 하드웨어는 I/O 장치의 형태로 제공되고, 이러한 하드웨어 중 디스크에 기록하기 위한 시스템을 파일 시스템이라고 한다. 시스템콜을 통해 응용프로그램은 운영체제에 파일의 기록, 갱신, 읽기를 요청하고, 운영체제의 trap handler는 장치드라이버를 통해 장치에 읽기/쓰기를 요청한다. 문제는 이러한 읽기/쓰기 요청은 굉장한 오버헤드를 부여하는 작업이므로, 성능을 위해 운영체제는 요청들을 모아서 한번에 처리한다. 즉, 응용프로그램이 요청한 순간과 실제 디스크에 기록되는 순간을 일정기간의 지연이 존재하고, 여기서 정전, 시스템 오류 등으로 인해 데이터의 손실이 발생할 수 있다. 이를 위해, 파일 시스템들은 Journaling, Copy-on-write와 같은 다양한 기법을 사용하여 시스템이 정상 복구 되도록 노력한다.
'운영체제' 카테고리의 다른 글
운영체제 05 : 스케줄링 (0) | 2021.02.05 |
---|---|
운영체제 03 : 운영체제가 제공하는 프로세스 관련 API (0) | 2021.01.30 |
프로세스란? (0) | 2021.01.21 |