flow-vector

운영체제 개요

1. 운영체제의 역할

  • 여러 프로그램을 동시에 실행 시킬 수 있게 도와줌
  • 프로세스간에 메모리 공유를 가능하게 해줌
  • 외부 디바이스와 상호작용을 가능하게 해줌
  • 이외 등등… 프로세스가 물리적 자원 위에서 잘 작동할 수 있도록 도와 주는 역할

→ 운영체제가 시스템을 사용하기 편리하게 하기 위해 사용하는 중요한 3가지 특성에 대해서 앞으로 공부하게 될 것!

2. 운영체제의 3가지 특성

1) 가상화(virtualization)

  • 프로세서, 메모리, 디스크와 같은 물리적 자원을 사용하기 쉽도록 가상 형태의 자원을 생성한다. 따라서 운영체제를 가상 머신(virtual machine)이라고 부르기도 한다.
  • 사용자(응용프로그램)가 운영체제에서 제공하는 기능을 사용할 수 있도록 운영체제는 사용자에게 API를 제공 하는데 이를 시스템 콜(system call)이라고 한다.

a. CPU 가상화

  • 하드웨어의 도움을 받아 운영체제가 시스템에 수많은 가상 CPU가 존재하는 것처럼 환상을 만들어 내어 여러 프로그램이 동시에 실행 될 수 있도록 하는 것을 CPU 가상화라고 한다.
  • 다수의 프로그램이 동시에 실행될 경우 어떤 프로그램을 먼저 실행 시킬 것인지 정하는 운영체제 정책과 구현 기법에 대해 앞으로 학습한다.

b. 메모리 가상화

  • 컴퓨터에서 실제 물리적 메모리의 모델은 단순한 바이트의 배열이다.
  • 각 프로세스들은 물리메모리를 다른 프로세스들과 공유하는 것이 아니라 마치 자신만의 독립적인 메모리 공간을 가지고 있는 것 처럼 인지하는데 이는 운영체제가 메모리 가상화를 해주기 때문이다.
  • 각 프로세스들은 자신 만의 가상 주소 공간을 가지게 되고 운영체제는 이를 물리 메모리에 매핑(mapping)한다.
  • 하나의 프로세스에서 하는 메모리 연산은 다른 프로세스에게 영향을 주지 않는다.
  • 프로그램 입장에서는 자신만의 물리메모리를 가지고 있는 듯한 환상을 주지만 실제 운영체제가 물리메모리라는 공유 자원을 관리하고 있는 것이다.

2) 병행성(concurrency)

  • 운영체제 자체도 프로그램이고 여러 응용프로그램을 관리하는 과정에서 병행성 문제가 발생할 수 있다.
  • 멀티쓰레드 환경에서 또한 병행성 문제가 발생할 수 있고 이는 쓰레드는 동일한 메모리 공간을 공유하기 때문이다. 동일한 메모리 공간내에서 임계영역에 동시에 접근하려고 할 때 큰 문제가 발생할 수 있고 이를 방지할 수 있는 방법에 대해서 학습할 것이다.

3) 영속성(persistence)

  • 메모리와 같이 휘발성 데이터가 아닌 영속적인 데이터를 관리 할 수 있도록 운영체제가 도와주고 있다.
  • 파일 시스템이라는 운영체제 소프트웨어의 일부가 디스크라는 물리적 자원을 관리하는 것을 담당하고 있다.
  • 새로운 데이터를 디스크의 어디에 저장해야할지 결정 및 데이터의 상태를 여러 자료구조를 사용하여 추적해야한다.
  • 데이터가 새롭게 쓰일때 저널링이나 쓰기 시 복사를 사용하여 데이터 수정시 오류가 발생하더라도 정상적으로 복구 될 수 있도록 도와 준다.
profile

flow-vector

@flow-vector

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!