운영체제 OS

[운영체제/OS] 운영체제 Operating System는 무엇이고 하는 일은 무엇인가?

운영체제 Operating System이란?

컴퓨터(사용자)와 컴퓨터 하드웨어의 중간자 역할을 하는 프로그램

 

운영체제의 목적

환경 제공(environment management)

프로세스 제어 관리(process management)

자원 관리(resource management) (자원의 예: 스토리지, 메모리, I/O)

 

 

우리가 사용하는 컴퓨터의 작동방식을 하드웨어와 연결지어 생각하면 이해하기 더 쉬울거에요.

Computer System Operation

Memory는 CPU, disk controller, USB contorller, grapthic adapter로 구성되어 있어요. 

I/O device와 CPU는 동시에 실행이 가능해요.

CPU는 data를 main memory로/로부터 local buffers로부터/로 이동시켜요.

Device Controller는 CPU에게 자기 작업이 끝났음을 "interrupt"(주고받는신호)를 통해 알려줘요.

 

이 Interrupt라는 신호에 대해 더 자세히 알아보아요.

 

Interrupt Signal(인터럽트 신호) 

Interrupt(인터럽트)란 어떤 장치가 다른 장치의 일을 잠시 중단시키고 자신의 상태 변화를 알려주는 것이에요. 인터럽트가 걸리면 인터럽트 받은 장치는 현재 자신의 상태를 기억시켜두고 인터럽트 처리를 진행시켜요.

 

I/O device에 의한 interrupt 신호

Interrupt Handling(인터럽트 처리과정)은 두 가지 방식이에요.

-polling: 좀 더 느리고 하나씩 검색해서 등장

-vectored interrupt system : interrupt처리(지점) 바로 직접 호출 

 

1. 수행상태를 보관 2. 인터럽트 서비스 루틴으로 점프 3. 저장된 상태 복구 4. 수행 재개

 

Interrupt의 종류는 OS의 관점에서 세 가지에요.

1. SW interrupt: 사용자가 프로그램에서 API를 호출하거나 명령어를 실행 또는 trap을 일으킬 때 발생

2. HW interrupt: I/O device에 의해 interrupt신호가 발생하며, CPU에 의해 동작이 느린 주변기기들과 상호작용하는데 활용됨.

3. Timer interrupt: 클럭소스를 이용하여 비협조적인(악의적인) 사용자 프로그램의 CPU독점을 막고, 공평하게 스케줄링되도록(로드밸런싱) 해줌. 특정 주기마다 인터럽트가 발생하여 주기적 task가 가능하게 함. 

 

 

Computer System Structure

자원관리에 대해 컴퓨터 구조와 연결지어 더 설명해볼게요

 

Storage Structure는 Hiararchy 구조로 용량 계층 구조를 가져요.

즉, CPU와 가까운 (cache나 main memory 같은) 애들은 빠르고 먼 애들은 느려요. 

따라서 이러한 데이터 메모리를 할당 관리하는게 OS역할이죠.

이를 위해 요즘 컴퓨터는 DMA(direct memory access)와 같은 device에서 memory로 직접 접근하는 방법도 써요.

 

Single processor를 가지던 과거 컴퓨터 시스템과 다르게

Multiprocessor 시스템 구조를 가져요. Parallel system(병렬처리)를 할 수 있어요.

Asymmetric과 Symmetric Multiprocessing으로 두 가지 방식이에요.

이에 대해선 CPU스케줄링을 다루는 게시글에서 알아볼게요.

 

Operating System Structure

-Multiprogramming (Batch 시스템): 효율성을 위해 사용됩니다

-Time sharing (multitasking) 을 통해 CPU가 작업을 계속 바꾸면서 user가 여러가지 작업을 interactive computing 할 수 있게 해줘요. CPU scheduling을 통해 동시에 여러가지 작업을 한번에 실행합니다. 

 

Dual-mode 동작을 통해 OS는 자신과 다른 시스템들을 보호합니다. 

User mode 유저모드 와 Kernel mode 커널모드 두 가지 모드로 동작합니다. 

 

어떤 instruction들은 Kernel mode에서만 동작할 수 있는 privileged instruction입니다. 

예를 들어, user 수준의 프로그램이 I/O를 요구하면 (printf와 같은) 시스템 콜이 발생하여 Kernel모드로 변환되어 privilledged instruction에 의해 I/O를 수행 후 다시 user 프로그램으로 복귀합니다. 

즉, 우리가 리눅스 커멘드나 C코드의 printf(시스템콜) 실행시마다 user에서 kernel모드로 잠시 변환되어 수행되는 것이죠. (printf는 library함수라서 사실 write() 시스템콜을 또 부른다.)

시스템 콜은 커널이 수행하는 privilledged 명령어로 자원을 관리하고 인터럽트 서비스가 실행되게 합니다. 

printf() 동작
open() system call 동작

 

운영체제 OS의 역할

Process Management

[운영체제 OS] - [OS/운영체제] Process Scheduling 프로세스 스케줄링

Memory Management (업로드예정)

Storage Management

Protection and Security 보호와 보안

 

관련 게시글로 더 자세히 보실 수 있습니다.