일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Project 1
- botw
- 내일부터
- 끝
- 노가다
- 자 이제 시작이야
- 셋업
- PINTOS
- 핀토스 프로젝트 4
- alarm clock
- multi-oom
- 바빠지나?
- 파란 장미
- 가테
- 핀토스 프로젝트 1
- 글리치
- 핀토스 프로젝트
- 제발흰박
- 아직도 실험 중
- 일지 시작한 지 얼마나 됐다고
- 핀토스 프로젝트 2
- 글루민
- 핀토스 프로젝트 3
- 황금 장미
- 마일섬
- Today
- Total
거북이의 쉼터
(2022.04.08) Introduction 본문
Operating System, 줄여서 OS는 유저와 어플리케이션을 위해 컴퓨터의 자원을 관리하는 소프트웨어의 계층이다. OS는 HW에 직접적으로 접근할 수 있는 권한을 가지고 있으며, 이러한 HW의 구체적인 사항을 숨기고 추상화하여 어플리케이션에 제공한다.
가장 낮은 단계에 있는 HW는 프로세서, 메모리, 그리고 storage를 제공한다. 또한 OS를 위한 기본적인 기능을 제공한다. OS는 SW단의 가장 하위에서 돌아가며, 일부 어플리케이션의 악의적인 행동이 다른 어플리케이션에 영향을 주는 것을 방지하기 위해, 주로 어플리케이션과는 분리된 환경에서 개별적으로 실행된다. OS는 각 어플리케이션이 개별적으로 안전하게, 그리고 HW의 제한이 없다는 환상을 주게끔, 각 어플리케이션을 개별적인 가상 환경에서 실행시킨다.
OS의 부분으로는 다음과 같은 것들을 생각할 수 있다.
- File System
- Device Driver
- Process Scheduler
OS가 아닌 것들로는 다음과 같은 것들이 있다.
- Browser (어플리케이션)
- File Editor (어플리케이션)
- Cache Memory (HW)
- C standard library 중 printf 함수 (OS로 요청을 보내서 화면에 메시지를 출력)
OS가 여러 어플리케이션을 동시에 실행하기 위해서는 세 가지 역할을 수행할 필요가 있다.
1. Refree (심판)
OS는 같은 물리 머신 위에서 실행되는 각각의 어플리케이션에서 사용될 자원을 관리하는 역할을 한다. 각 어플리케이션을 서로에게서 분리함으로 어떤 한 어플리케이션에서의 악의적 행동 또는 bug가 다른 어플리케이션에 영향이 없도록 하며, OS 자체도 이들로부터 스스로를 보호한다. 여러 개의 어플리케이션이 제한된 자원을 공유하기 때문에 OS는 중간에서 어떤 어플리케이션이 어떤 자원을 언제 가져갈지를 관리하는 역할을 한다.
2. Illusionist (마술사)
OS는 물리적 HW를 추상화시켜서 어플리케이션 사용자 또는 설계자가 편리하게끔 해준다. 어플리케이션 단에서 우리는 코딩할 때 메모리가 얼마나 남았는지, 아니면 동시에 얼마나 많은 프로그램이 실행되는지 신경을 쓰지 않는다. 이는 OS가 우리에게 무한히 많은 양의 메모리가 있다는 "환상"을 제공하기 때문이다. 이와 유사하게, OS는 각 프로그램이 컴퓨터의 프로세서를 홀로 쓰고 있다는 환상을 제공한다. 물론 이를 관리하기 위해 OS는 물밑에서 열심히 관리하고 있을 것이다. OS가 이런 환상을 제공함으로서 비교적 간단한 가정을 해 놓은 상태로 우리는 어플리케이션을 작성할 수 있다.
3. Glue (풀)
OS는 공통적이고 표준화된 서비스를 어플리케이션 단에 제공함으로서, 그들이 표준화된 디자인을 갖도록 한다. 물리적 HW는 그 종류, 벤더에 따라, 심지어는 그 버젼에 따라 사용법이 달라진다. 이러한 차이는 OS에서 제공하는 표준화된 루틴으로 인해 어플리케이션 단에서는 대부분 무시될 수 있다. 만약 각 프로그램이 각자 기능을 구현하도록 납뒀다면 여러 어플리케이션 간에 파일을 읽고 쓰는 것은 번거로운 변환 과정을 수반했을 것이다. 이를 공통된 파일 시스템에 통일된 방식으로 읽고, 쓰고, 저장을 하게 함으로 표준화시켜서 각 프로그램간의 정보의 공유를 편하게 하는 것이다
역시 개념적인 건 설명하기 어려워...
'코딩 삽질 > OS 요약 정리' 카테고리의 다른 글
(2022.04.10) Scheduling (0) | 2022.04.10 |
---|---|
(2022.04.09) Concurrency and thread (0) | 2022.04.09 |
(2022.04.09) Programming Interface (0) | 2022.04.09 |
(2022.04.09) Kernel Abstraction (2) (0) | 2022.04.09 |
(2022.04.08) Kernel Abstraction (1) (0) | 2022.04.08 |