School/Operation System

Chapter 01 운영체제의 개요

대학원생(노예) 2022. 3. 28. 20:00

운영체제 소개

1-1 일상생활 속의 운영체제

  운영체제

- 일반 컴퓨터, 노트북, 스마트폰의 전원을 켜면 가장 먼저 만나게 되는 소프트웨어

 

  임베디드 운영체제

- CPU의 성능이 낮고 메모리 크기도 작은 시스템에 내장하도록 만든 운영체제

- 임베디드 운영체제가 있는 기계는 기능을 계속 향상시킬 수 있음(갤럭시 워치, 애플워치, 에어팟, 버즈, 네비게이션...)

 

1-2 운영체제의 필요성

Q . 컴퓨터는 운영체제가 없어도 작동하는가?

A . 가능. - 컴퓨터는 운영체제가 없어도 작동하지만 기능에 제약이 따른다. <- 에니악은 운영체제가 없음.

 

Q . 운영체제가 있는 기계(Programmable)와 없는 기계는 어떤 차이가 있는가?

A . 운영체제가 있는 기계는 다양한 응용 프로그램을 설치할 수 있고, 성능 향상을 위한 새로운 기능을 쉽게 추가할 수 있다.

 

Q . 운영체제는 성능을 향상하는 데에만 필요한가?

A . No.(자원관리) - 운영체제는 컴퓨터의 성능을 향상할 뿐 아니라 자원을 관리하고 사용자에게 편리한 인터페이스 환경을 제공한다.

 

Q . 운영체제는 자원을 어떻게 관리하는가?

A . 운영체제는 사용자가 직접 자원에 접근하는 것을 막음으로써 컴퓨터 자원을 보호한다.

 

Q . 사용자는 숨어있는 자원을 어떻게 이용할 수 있는가?

A . 운영체제가 제공하는 사용자 인터페이스(화면)하드웨어 인터페이스를 이용하여 자원에 접근한다.

 

1-3 운영체제의 정의

  운영체제의 정의

- 응용 프로그램이나 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공하고, 그 결과를 돌려주는 소프트웨어

→ 편리성

- 응용 프로그램이나 사용자에게 모든 컴퓨터 자원을 숨기고 정해진 방법으로만 컴퓨터 자원을 사용할 수 있도록 제한

→ 안정성

 

1-4 운영체제의 역할(운영체제의 목표)

  자원 관리(효율성)

- 컴퓨터 시스템의 자원을 응용 프로그램에 나눔 -> 사용자 원할한 작업

- 자원을 요청한 프로그램이 여러 개 -> 적당한 순서로 자원 배분&회수 -> 회수되면 다른 응용 프로그램으로 나누어줌

 

  자원 보호(안정성)

- 비정상적인 작업으로부터 컴퓨터 자원을 보호

 

  하드웨어 인터페이스 제공(확장성)

- 하드웨어 인터페이스 제공 -> 사용자가 복잡한 과정없이 다양한 장치 사용

- 다양한 하드웨어를 일관된 방법으로 사용할 수 있도로 지원

 

  사용자 인터페이스 제공(편리성)

- 사용자가 운영체제는 편리하게 사용하도록 지원(GUI)

 

효율성: 컴퓨터 자원을 효율적을 관리하여 적은 자원으로 많은 작업량을 처리하도록 하는 것

안정성: 작업을 안정적으로 처리하여 사용자와 응용 프로그램의 안전 문제와 하드웨어적인 보안 문제 처리

(시스템에 문제가 발생했을 때 이전으로 복구하는 결함 포용 기능 수행)

확장성: 다양한 시스템 자원을 컴퓨터에 추가하거나 제거하기 편리한 것

(운영체제는 하드웨어의 종류에 상관없이 꽂으면 바로 실행되는 Plug&Play 기능을 제공해야 한다.)

편리성: 사용자가 편리하게 작업할 수 있는 환경을 제공

 

운영체제의 역사

2-1 운영체제의 역사

  주변 기기의 발전을 중심으로 살펴본 운영체제의 역사

(에니악) → (일괄 작업 시스템)  (대화형 시스템) → (다중프로그래밍, 시분할 시스템) → (분산 시스템) → (클라이언트/서버 시스템) → (P2P 시스템, 그리드 컴퓨팅, 클라우드 컴퓨팅, 사물인터넷) 

 

2-2 초창기 컴퓨터(1940년대)

  에니악

- 진공관

- 전선을 연결하여 논리회로를 구성하는 '하드와이어링' 방식으로 동작

- 운영체제가 없음

에니악

2-3 일괄 작업 시스템(1950년대)

  천공 카드 시스템

- 천공카드 리더를 입력장치로, 라인 프린터를 출력장치로 사용

- 프로그램을 구성한 후 카드에 구멍을 뚫어 컴퓨터에 입력하면 프로그램이 실행되는 구조로 프로그램의 실행 결과가 라인 프린터를 통해 출력

 

  일괄 작업 시스템

- 모든 작업을 한꺼번에 처리하고 프로그램 실행 중간에 사용자가 데이터를 입력하거나 수정하는 것이 불가능한 시스템

- 운영체제 사용(메인메모리가 운영체제의 상주 영역과 사용자의 영역으로 나뉨)

 

2-4 대화형 시스템(1960년대 초반)

  대화형 시스템

- 모니터와 키보드의 등장: 프로그램이 진행되는 도중에 사용자로부터 입력을 받을 수 있어 입력값에 따라 작업의 흐름을 바꾸는 것이 가능한 시스템

- 문서 편집기, 게임과 같은 다양한 응용 프로그램을 만들 수 있게 됨.

2-5 시분할 시스템(1960년대 후반)

  다중 프로그래밍

- 하나의 CPU로 여러 작업을 동시에 실행하는 기술

- 한 번에 하나의 작업만 가능한 일괄 작업 시스템에 비해 효율성이 뛰어남

- 어떤 프로그램을 수행하다 입출력이 발생하면 해당 입출력이 처리되는 동안 CPU가 다른 프로그램을 수행하는 방식( CPU 스케쥴링)

- 만약 하나의 프로그램에서 무한 루프가 발생된다면 스케쥴링도 일어나지 않아 나머지 프로그램도 돌아가지 않음

(즉, 다중 프로그래밍 방식에서는 프로그램 간 간섭이 존재함)

- 시간을 분할하는 방법 때문에 여러 작업이 동시에 실행되는 것처럼 보임

  시분할 시스템

CPU 사용시간을 타임슬라이스(time-slice)로 잘게 쪼개어 작업들에 나누어줌으로써 모든 작업이 동시에 처리되는 것처럼 보임

- 잘게 나뉜 시간 한 조각을 타임 슬라이스 또는 타임 퀀텀이라고 함

- 오늘날의 컴퓨터에는 대부분 시분할 시스템이 사용됨

 

2-6 분산 시스템(1970년대 후반)

  분산 시스템

- 개인용 컴퓨터와 인터넷이 보급되면서 값이 싸고 크기가 작은 컴퓨터를 하나로 묶어서 대형 컴퓨터의 능력에 버금가는 시스템을 만들 수 있게 됨

- 네트워크 상에 분산되어 있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교환하도록 구성한 시스템

2-7 클라이언트/서버 시스템(1990년대~현재)

  클라이언트/서버 시스템

- 작업 요청하는 클라이언트와 거기에 응답하여 요청받은 작업을 처리하는 서버이중구조로 나뉨

- 웹 시스템이 보급된 이후 일반인들에게 알려짐

 

2-8 P2P 시스템(2000년대 초반~ 현재)

  P2P 시스템

- 클라이언트/서버 구조의 단점인 서버 과부화를 해결하기 위해 만든 시스템

- 서버를 거치지 않고, 사용자와 사용자를 직접 연결

- 메신저나 토렌트로 사용(채팅)

 

2-9 기타 컴퓨팅 환경(2000년대 초반~현재)

  그리드 컴퓨팅

- 필요한 기간만큼만 컴퓨터를 사용하고 사용한 금액만큼만 돈을 지불할 수 컴퓨팅 환경

- 서로 다른 기종의 컴퓨터들을 묶어 대용량의 컴퓨터 풀을 구성하고 이를 원격지와 연결하여 대용량 연산을 수행하는 컴퓨팅 환경

- 그리드가 하드웨어적인 컴퓨팅 환경의 통합이라고 한다면 SaaS(Software as a Service, 사스)는 사용자가 필요한 소프트웨어 기능만을 필요할 때 이용하고, 이용한 가능만큼만 비용을 지불하는 개념

- CPU 관리, 저장소 관리, 보안 조항, 데이터 이동, 모니터링과 같은 서비스를 위한 표준 규약 생성에 기여

 

  클라우딩 컴퓨팅

- 언제 어디서나 응용 프로그램과 데이터를 자유롭게 사용할 수 있는 컴퓨팅 환경으로 그리드 컴퓨팅과 SaaS를 합쳐 놓은 형태

- 클라우드 컴퓨팅은 PC, 핸드폰, 스마트 기기 등을 통하여 인터넷에 접속하고, 다양한 작업을 수행하며, 데이터 또한 기기들 사이에서 자유롭게 이동이 가능한 컴퓨팅 환경

- 하드웨어를 포함한 시스템이 구름에 가려진 것처럼 사용자에게 보이지 않는 컴퓨팅 환경이라는 의미

 

  사물 인터넷(Internet of Thing, IoT)

- 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술

- 예를 들어, 전철이나 버스의 도착 예정시간을 표시한다던가, 각종 전자제품을 스마트폰으로 제어 하거나 알림 문자를 받는 서비스가 있음.

- 커넥트 카, 에네지를 제어하는 스마트 그리드, 공공 기물을 관리하는 스마트 시티, 사물인터넷을 응용한 재난 방지 시스템 등 다양한 분야에 적용

- 인터넷으로 연결된 사물들이 데이터를 주고받아 스스로 분석하고 학습한 정보를 사용자에게 제공하거나 새로운 서비스를 창출

사물 인터넷

 

운영체제의 구조

3-1 커널과 인터페이스

  커널

- 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것

응용 SW와 하드웨어 간 연결

커널은 하드웨어(CPU, Memory, Devices)와 응용 프로그램 사이에서 인터페이스를 제공하여 응용 프로그램이 하드웨어에서부터 오는 자원을 관리하고 사용할 수 있게 해준다.

 

  인터페이스

- 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할

- 그래픽을 사용한 인터페이스를 GUI(Graphical User Interface)라고 부름

암기

응용 프로그램: 한글, office, 크롬 등

유틸리티: 파일 탐색기, cmd 등

드라이버: 커널의 일부분으로 특정 하드웨어나 장치를 사용하기 위해 사용

 

3-2 시스템 호출과 디바이스 드라이버

  시스템 호출

- 커널은 자신을 보호하기 위해 만든 인터페이스

- 커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단

-> 응용 프로그램과 하드웨어(CPU, RAM, I/O)는 인터페이스로 구분되어 있음

응용 프로그램, 유틸리티              |           커널(인터페이스)                 | 하드웨어

 

  직접 접근

- 두 응용 프로그램이 자기 마음에 드는 위치에 데이터를 저장하려고 함

- 다른 사람의 데이터를 지울 수도 있고, 내 데이터가 다른 사람에 의해 지워질 수 있음

 

  시스템 호출을 통한 접근

- 응용 프로그램이 직접 하드디스크에 데이터를 저장하지 않고 커널이 제공하는 write( ) 함수를 사용하여 데이터를 저장해달라고 요청 

- 커널이 데이터를 가져오거나 저장하는 것을 전적으로 책임지기 때문에 컴퓨터 자원 관리가 수월

 

  시스템 호출 정리

- 시스템 호출은 커널이 제공하는 시스템 자원의 사용과 연관된 함수

- 응용 프로그램이 하드웨어 자원에 접근하거나 운영체제가 제공하는 서비스를 이용하려 할 때는 시스템 호출을 사용해야 함

- 운영체제는 커널이 제공하는 서비스를 시스템 호출로 제한하고 다른 방법으로 커널에 들어오지 못하게 막음으로써 컴퓨터 자원을 보호

- 시스템 호출은 커널이 제공하는 서비스를 이용하기 위한 인터페이스이며, 사용자가 자발적으로 커널 영역에 진입할 수 있는 유일한 수단임

 

  드라이버

- 커널과 하드웨어의 인터페이스 담당하며 디바이스 드라이버라고도 불림

- 마우스와 같이 간단한 제품은 드라이버를 커널이 가지고 있으나, 그래픽카드와 같이 복잡한 하드웨어의 경우 제작자가 드라이버를 제공함

 

3-3 커널의 구성

  커널

프로세스 관리 : 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다.

메모리 관리 : 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다.

파일 시스템 관리 : 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.

입출력 관리 : 필요한 입력과 출력 서비스를 제공한다.

프로세스 간 통신 관리 : 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다.


단일형 구조 커널

- 초창기의 운영체제 구조

- 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성

장점

- 모듈 간의 통신 비용 줄어들어 효율적인 운영 가능

 

단점

- 모든 모듈이 하나로 묶여 있기 때문에 버그나 오류를 처리하기가 어려움

- 운영체제의 여러 기능이 서로 연결되어 있어 상호 의존성이 높기 때문에 기능상의 작은 결함이 시스템 전체로 확산될 수 있음

- 다양한 환경의 시스템에 적용하기 어려움

- 현대의 운영체제는 매우 크고 복잡하기 때문에 완전 단일형 구조의 운영체제를 구현하기가 어려움


  계층형 구조 커널

- 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식

- 효율성 증가

- 버그 처리 용이

- 상호 의존성 증가

- 다양하고 복잡한 시스템 구성


  마이크로 구조 커널

- 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공

- 커널의 각 모듈은 세분화되어 존재하고 모듈 간의 정보 교환은 프로세스 간 통신을 이용하여 이루어짐

 

3-4 가상머신

  가상머신

- 운영체제와 응용 프로그램 사이에서 작동하는 프로그램

- 가상머신을 설치하면 응용 프로그램이 모두 동일한 환경에서 작동하는 것처럼 보임

- 자바는 유닉스와 윈도우에서 작동하는 다양한 가상머신을 만들어 배포하는데, 이를 자바 가상머신(Java Virtual Machine, JVM)이라고 함

 

[심화] 운영체제의 종류와 역사

[교재 확인]