[OS] 1. Introduction

Date:     Updated:

카테고리:

태그:

What a happens when a program runs?

실행중인 프로그램이 명령어를 수행하면 다음과 같은 순서로 동작한다.

  1. 프로세서는 메모리로부터 명령어를 가져온다.
  2. Decode : 어떤 명령어인지 알아낸다.
  3. Execute: 덧셈, 메모리 접근, 조건 비교 등등을 수행한다.
  4. 프로세서는 다음 명령어로 이동을 한 뒤 다시 반복한다.

PC(program counter) register에 다음 명령어를 가리키는 주소가 있다.

Operating System(OS)

OS는 다음과 같은 역할을 한다.

  • 프로그램이 동작하기 쉽게 만든다.
  • 프로그램이 메모리를 공유하게 한다.
  • 장치들과 상호작용하게 한다.
  • 시스템이 정확하고 효율적으로 동작하게 한다.

Virtualization

OS는 물리적 자원(physical resource)을 가져가서 가상의 형태로 변형한다.
→ physical resource : 프로세서, 메모리, 디스크 …

가상의 형태는 더 일반적이고 강력하고 사용하기 쉽다. 그래서 때때로, 우리는 virtual machine으로의 OS를 더 선호한다.

System call

System call은 유저가 OS에게 무엇을 할지 알려준다.

OS는 어떤 인터페이스를 제공한다 (APIs, standard library)

OS는 수 백 가지 System call을 사용한다.

  • 프로그램 실행
  • 메모리 접근
  • 장치 접근

위와 같은 것 들을 system call을 활용해서 동작한다.

The OS is a resource manager

OS는 아래와 같은 방식을 통해 CPU, 메모리, 디스크 같은 자원을 관리한다.

  • 많은 프로그램을 실행하기 위해선 CPU를 공유해야한다
  • 그들의 명령어와 데이터에 동시에 접근하기 위해서 메모리를 공유해야한다.
  • 많은 장치에 접근하기 위해서 디스크를 공유해야한다.

Virtualizing the CPU

시스템은 많은 수의 가상 CPU를 갖는다.

  • 하나의 CPU를 무수히 많은 CPU가 있는 것 처럼 만든다.
  • 각각의 프로그램이 동시에 실행되는 것처럼 CPU를 가상화 한다.

Virtualizing Memory

물리적 메모리는 바이트의 배열형태 이다. 그래서 프로그램이 이러한 데이터 구조를 메모리에 저장한다. 메모리 읽기(load)

  • 주소를 통해 데이터에 접근한다.

메모리에 쓰기(store)

  • 특정 데이터를 주어진 메모리 주소에 저장을 한다.

메모리 가상화는 각각의 프로세스가 그들의 개인적인 가상 주소 공간으로 접근하게 하는것.

  • OS는 물리적인 메모리에 주소를 매칭하는것
  • 실행되고 있는 프로그램은 다른 프로세스의 주소에 영향을 주지 않는다
  • 실제 물리적인 메모리는 공유된 자원이고, OS에 의해 관리된다.

The problem of Concurrency

OS가 여러개의 일을 한번에 할때 동시성 문제가 생긴다.

CPU를 thread 개념으로 분할을 해서 각각의 Thread에서 동작을 하게 할 때 한정된 자원을 동시에 쓰려다 보면 error가 발생한다.

→ synchronize 나 semaphore를 통해 해결할 수 있다.

Persistence

컴퓨터 시스템에서 DRAM 같은 장치는 휘발성이다. 그러나 우리가 사용하는 하드웨어와 소프트웨어는 데이터를 지속적으로 유지돼야 한다.

HW : HDD, SDD
SW : 파일 시스템이라는 개념을 통해 디스크 관리

OS는 파일 시스템이라는 개념을 통해 비휘발성 장치에다가 지속성을 가한다.

OS는 디스크에 쓸때 어떤 역할을 할까?

  • 디스크 어디에 이 새로운 데이터가 위치할 곳을 알아낸다.
  • 저장 장치에 I/O에 관련된 요청 처리

쓸때 System Craches가 발생할 수도 있다.

  • 이때 Journaling 또는 copy-on-write를 이용해 해결
  • 실제 디스크에 쓸때는 순서에도 유의해야한다.

Design Goals

Build up abstraction

  • 시스템이 편리하고 사용하기 쉽게 만든다.

Provide high performance

  • OS의 overhead를 최소화한다.
  • OS는 과도한 overhead없이 virtualization 해야한다.

Protection between applications

  • Isolation을 시켜서 어플리케이션에 이상이 발생했을 때 어플리케이션이나 OS에 악영향이 없게 한다.

High degree of realiabilty

  • OS는 실행이 멈춰서는 안된다. 버그 X, 문제 X

Other issues

  • 에너지 효율성
  • 보안성
  • 휴대성

맨 위로 이동하기

OS 카테고리 내 다른 글 보러가기

댓글남기기