본문 바로가기
CS/OS

[OS] 운영체제 01 : Introduction to Operating Systems

by Dani K 2022. 5. 22.

운영체제(Operating System, OS)란?

 

 

일종의 소프트웨어인데 컴퓨터 하드웨어 윗단에 설치되는 소프트웨어이다.

컴퓨터 하드웨어와 각종 소프트웨어, 사용자를 연결해주는 계층이다.

 

좁은 의미의 운영체제 : 커널을 뜻하며, 운영체제의 핵심 부분으로 메모리에 상주하는 부분

넓은 의미의 운영체제 : 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념

 


운영체제의 목적

 

1. 컴퓨터 시스템의 자원을 효율적으로 관리 (자원 관리자)

 

  • 프로세서, 기억장치, IO 장치 등의 자원을 효율적 관리
  • 사용자 및 운영체제 자신의 보호
  • 프로세스, 파일, 메시지 등을 관리 (소프트웨어 자원도 관리)

 

2. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공

 

  • 운영체제는 동시 사용자/ 프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
  • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행

 


운영체제의 분류

 

1. 동시 작업 가능 여부

 분류  수행 능력  특징  활용 예시
 단일 작업(single tasking)  한 번에 하나의 작업 처리  한 명령의 수행이 끝내기 전에
 다른 명령을 수행시킬 수 없다.
 MS-DOS
 다중 작업(multi tasking)  동시에 두 개 이상의 작업 처리  한 명령의 수행이 끝나기 전에
 다른 명령을 수행할 수 있다.
 UNIX, MS Windows

 

2. 사용자의 수

 분류  특징  활용 예시
 단일 사용자(single user)  한 번에 한 명의 사용자만 액세스 할 수 있다.  MS-DOS, MS Windows
 다중 사용자(multi user)  한 명 이상의 사용자가 동시에 접속할 수 있다.  UNIX, NT server

 

3. 처리 방식

 분류  특징  활용 예시
 일괄처리
 (batch processing)
 작업을 모아서 한꺼번에 처리하는 방식이다.
 Punch Card 처리 시스템
 작업이 완전히 종료될 때까지 기다려야 한다.
 시분할
 (time sharing)
 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정 시간 단위로 반할하여 사용한다.
 UNIX
 일괄 처리 시스템에 비해 짧은 응답 시간을 가진다.
 실시간
 (Realtime OS)
 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 한다. (정확한 시간)
 원자로/공장 제어
 미사일 제어
 반도체 장비
 로봇 제어
 실시간 시스템의 개념 확장
 Hard realtime system (경성 실시간 시스템) (예) 미사일)
 Soft realtime system (연성 실시간 시스템) (예) 영사기)

 

: 우리가 배우는 운영체제는 다중 작업을 지원하고, 다중 사용자를 지원하고, 시분할 방식으로 운영이 되고 있다.

 

 


용어 정리

  • Multitasking : 하나의 프로그램이 끝나기 전에 다른 프로그램이 실행이 가능한 것 (CPU가 짧은 시간 간격으로 분할해서 할당을 해서 동시에 실행되는 것처럼 보인다.)
  • Multiprogramming : 메모리에 여러 프로그램이 동시에 올라가 있는 것 (특별히 메모리 측면을 강조)
  • Time sharing : CPU의 시간을 분할하여 나누어 쓴다는 의미  (특별히 CPU 측면을 강조)
  • Multiprocess :  여러 프로그램이 동시에 실행된다는 의미

 

Multiprocessor?

하나의 컴퓨터에 CPU(Processor, 처리기)가 여러 개 붙어 있음을 의미

 


운영체제의 구조

우리가 생각하는 스케줄링은 선착순이 가장 공평하고 효율적이라고 생각하는데, 컴퓨터는 그렇지않다.

예를 들어 은행 업무가 1시간씩 걸리는 상담 업무가 있다면, 그 뒤에 고객들은 1시간을 기다려야 한다.

CPU가 한 프로그램을 점유하고 있으면 뒷 프로그램은 그만큼을 기다려야한다. → 비효율적이다.

 

 

CPU 스케줄링

누구한테 CPU를 줄까?

CPU 자체는 빠른데, 작업들이 혼자 사용하려고 하면 빠른 자원을 효율적으로 활용할 수 없다.

→ 짧은 시간 간격으로 CPU를 줬다 뺏었다의 과정을 반복한다.

 

메모리 관리

메모리 공간은 한정되어 있는데, 어떻게 쪼개어 쓰지?

무조건 1/n 분배하는 것보다, 특정 프로그램에게 몰아줄 경우 더 원활하게 실행될 수 있다.

크기가 한정되어 있기 때문에 가득 찼을 경우 쫓아내야 한다. (가까운 미래에 다시 사용될 가능성이 높은가? 낮은가?)

→ 최근 메모리에서 많이 사용이 되었으면 미래에 사용될 가능성이 높다.

 

Disk 파일 관리

디스크에 파일을 어떻게 보관하지?

파일을 조각조각 나눠서 저장할지? 아니면 연속적으로 저장을 하는 게 좋을지?

디스크에 들어온 요청은 헤드를 움직여서 처리한다. 먼저 들어온 순서로 처리할지, 헤드와 가까운 곳부터 처리할지? 

→ 디스크도 스케줄링이 필요하다. 헤드에 가까운 곳부터 먼저 처리하면 헤드의 이동을 줄여 성능이 좋아질 수 있다.

CPU 스케줄링 : 너무 빠르기 때문에 어떻게 관리할 것인가?
Disk 스케줄링 : 헤드의 움직임을 어떻게 최소화하면서 많은 요청을 빠르게 처리할 수 있는가?

 

I/O Device 입출력 관리

각기 다른 입출력(IO) 장치와 컴퓨터 간에 어떻게 정보를 주고 받게 하지?

I/O device는 느리다. I/O device와 CPU와 정보를 주고 받는 것을 어떻게 할 것인가?

→ I/O device에서 작업이 들어오면 CPU한테 인터럽트를 걸어서 알리면 CPU에서 처리한다.

 

  • Interrupt : CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능
처리 속도 : CPU > Memory > Disk > I/O device

 

 


KOCW 반효경 교수님의 운영체제 강의 내용 정리 (kocw.net)

 

 

'CS > OS' 카테고리의 다른 글

[OS] 운영체제 03 : Program Execution  (0) 2022.05.23
[OS] 운영체제 02 : System Structure  (0) 2022.05.22

댓글