OS소개 & 정의

데브tty·2021년 9월 27일
0

운영체제

목록 보기
1/2

운영체제(OS, Operating System)

일반적인 정의론 항상 도작하고 있는 커널을 의미한다.

운영체제는 컴퓨터 하드웨어를 관리하는 소프트웨어이다. 사용자 소프트웨어와 하드웨어 사이에 매개체 역할을 한다. 즉, 응용 프로그램에게 서비스를 제공하는게 OS이다.

📢 현대에는 양자 컴퓨터, 네트워크 컴퓨터, 클라우드 컴퓨터와 같이 수많은 컴퓨터가 생겼다. 현대의 컴퓨터는 클래식 컴퓨터의 운영체제와 다른 모습을 보일 수 있다.

ROM(Read-Only-Memory)이란?

CPU의 Register, Cache와 메모리는 휘발성 메모리다. 컴퓨터에 전원을 공급하여 OS를 정상적으로 로딩하기 위해선 Bootstrap 프로그램이 필요하다. ROM은 비휘발성 메모리로 Bootstrap 프로그램이 상주하고 있다.

컴퓨터를 구동하기 위한 기본적인 정보가 담겨있다

📢 Bootstrap 프로그램은 컴퓨터 전원이 켜질경우 시작되는 프로그램이다. 주로 OS를 메모리에 탑재시키는 역할을 한다.

Interrupt

CPU ↔ 메모리가 통신하는 과정에서 I/O는 CPU에게 통신할 방법이 없다. 이러한 문제를 해결하기 위해 발생되는 시그널이다. 주변 장치 ↔ CPU 통신에 사용되며 버스를 통해 시그널을 CPU에게 보낸다.

폰 노이만 아키텍처

OS-소개에서 폰 노이만 아키텍처를 간략히 설명했다. 조금 더 보충해 설명하면 CPU가 메모리에서 Fetch 작업을 통해 명령어를 가져온다. 이후 명령어를 Instruction Register에 보관한다. 명령어가 해석되면 CPU가 Execute 작업을 통해 프로그램이 실행된다.

I/O 구조

보충 필요

DMA(Direct Memory Access)이란?

특정 하드웨어 디바이스가 CPU에 독립적으로 메모리에 접근할 수 있게하는 기술이다. 즉 CPU의 개입없이 메모리와 I/O 디바이스가 통신이 가능하게 된다는 것.이러한 방식을 통해서 CPU의 작업을 대신 함으로써 CPU 효율이 증가되는 효과가 있다.

SMP(Symmetric Multi Processing)

SMP는 멀티 프로세스 시스템을 말한다. 여러개의 CPU가 하나의 메모리에 접근하는 시스템을 의미한다.

대표적인 Symmetric Multi Processing 시스템으로 슈퍼컴퓨터가 있다.

Multi-core Design

SMP 시스템은 CPU 갯수의 증가로 비용이 비싸다는 단점이 있다. 이러한 단점을 극복하기 위해 고안된 시스템이다. Multi-core Design 시스템은 CPU하나에 코어를 여러개 두어 CPU 효율을 도모한 시스템이다.

Multi Programming

여러개의 프로그램을 메모리에 동시에 올린것을 말한다.

Multi Tasking == Multi Processing == Concurrency(?)

하나의 CPU가 매우 빠른 속도로 Job을 바꾸어 주면 사용자의 입장에서는 동시에 실행되는 것처럼 보인다.

CPU 스케줄링

CPU는 어떤 작업을 할지 스케줄링 알고리즘을 통해 정하게 된다. 이는 CPU의 효율 극대화라는 목표를 가지고 이루어지는 작업이다. CPU 스케쥴링 알고리즘은 매우 많으며 이후에 설명하겠다.

User Mode, Kernel Mode

User, Kernel 모드는 프로그램의 오작동으로 이한 시스템 파괴(?)를 방지하기 위한 기술이다. 애플리케이션이 System Call을 하는 경우 Kernel 모드로 전환되어 System Call에 응답한다.

추가로 악의적인 프로그램의 접근을 막고, 보안을 상향시키는 목적을 가진다.

가상화

"여러개의 프로그램을 메모리에 올릴 수 있으니 OS도 메모리에 여러개 올려보자"라는 아이디어에서 착안된 기술이다. 기존의 시스템은 하드웨어 위에 OS가 있었다면 가상화 기술을 통해 하드웨어 위에 VMM을 올린다음 VMM위에 다양한 OS를 적재한다.

System Call Interface

애플리케이션(서비스)에게 인터페이스를 제공하는 것을 의미한다.Read, Write와 같은 하드웨어 자원을 사용하는 API(Application Programming Interface)를 말한다.

일반적으로 System Call을 하기위해선 무수히 많은 작업이 필요하다. 개발자에게 복잡하고 어려운 작업은 개발 속도를 늦추는 문제가 있다. System Call을 위한 사전 작업과 후작업을 편하게 해주기 위해 라이브러리가 등장하였다.

profile
dev띠

0개의 댓글