[OS] 1. Introduction
카테고리: OS
태그: 운영체제
What a happens when a program runs?
실행중인 프로그램이 명령어를 수행하면 다음과 같은 순서로 동작한다.
- 프로세서는 메모리로부터 명령어를 가져온다.
- Decode : 어떤 명령어인지 알아낸다.
- Execute: 덧셈, 메모리 접근, 조건 비교 등등을 수행한다.
- 프로세서는 다음 명령어로 이동을 한 뒤 다시 반복한다.
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
- 에너지 효율성
- 보안성
- 휴대성
댓글남기기