[OSTEP] 운영체제 개요

kshired·2021년 7월 29일
0

2장 운영체제 개요

프로그램은 매우 단순한 일을 한다.

  • 명령어를 실행한다.
  • 프로세서는 명령어를 수백만번 fetch하고, decode하고, execute한다.
  • 프로세서는 프로그램이 완전히 종료될 때까지 위와 같은 과정을 반복한다.

가상화

  • 물리적인 자원을 이용하여 일반적이고, 강력하고, 사용이 편리한 가상형태의 자원을 생성
  • 때문에 운영체제를 가상 머신이라고도 부름
  • 사용자가 운영체제에게 가상머신과 관련된 기능을 요청할 수 있도록 시스템 콜을 제공.
  • 많은 프로그램들이 CPU를 공유하여, 동시에 실행될 수 있게 한다.
  • 프로그램들이 각자 명령어와 데이터를 접근할 수 있게하고, 디스크 등의 장치를 공유할 수 있게 한다.
  • 운영체제는 이러한 이유로 자원 관리자라고도 불린다.

CPU 가상화

"자원을 어떻게 가상화하는가?" 를 배울 것이다.

운영체제는 하드웨어의 도움을 받아 매우 많은 수의 가상 CPU가 존재하는 듯한 환상을 만들어낸다.

이렇게 소규모의 CPU에서 수많은 CPU가 존재하는 것처럼 변환하여 동시에 많은 수의 프로그램을 실행시키는 것을 CPU 가상화라고한다.

메모리 가상화

각 프로그램은 물리 메모리를 다른 프로그램과 공유하는 것이 아니라 각자 자신의 메모리를 가진 것처럼 보인다.

  • 운영체제가 메모리 가상화를하기 때문이다.
  • 각 프로세스는 자신만의 가상 주소 공간을 갖는다.

병행성

  • 쓰레드 사용시 명령어가 원자적(atomically)으로 실행되지 않으면 원치않은 결과가 일어날 수 있음.
  • 이러한 것을 병행성 문제라고 함.

영속성

  • 하드웨어는 I/O 장치 형태로 제공된다.
  • 디스크를 관리하는 운영체제 소프트웨를 파일 시스템이라고 부른다.
  • 파일 시스템은 파일을 시스템의 디스크에 안전하고 효율적인 방식으로 저장할 책임이 있다.
  • 파일을 생성시 시스템콜이 운영체제의 파일 시스템으로 전달된다.
  • 파일 시스템은 예상치 못한 고장에 대비해 저널링이나 Copy-On-Write 기법을 사용한다.

설계 목표

  • 운영체제는 물리 자원들을 가상화한다
  • 병행성과 관련된 문제들을 처리한다
  • 파일들을 영속적으로 저장하여 안전하게 처리한다
  • 가장 기본적인 목표는 시스템을 편리하고 사용하기 쉽게 만드는데 필요한 개념을 정의하는 것이다.
  • 운영체제의 설계와 구현의 중요한 목표는 성능이다. → 오버헤드를 최소화 하는 것
  • 응용 프로그램 간의 보호
  • 운영체제가 다운되지 않게 할 신뢰성
profile
글 쓰는 개발자

0개의 댓글