yooniiverse
개발 블로그
yooniiverse
전체 방문자
오늘
어제
  • 분류 전체보기
    • 운영체제
    • 네트워크
    • ~2023.02
      • 외부교육
      • 대외활동
      • 스터디
      • 동아리
      • TIL
      • IT지식
      • 기타
      • 트러블 슈팅
      • 프로그래밍
      • Python
      • Java
      • JS
      • DB(SQL)
      • JSP
      • Spring
      • 기술면접
      • 자바
      • 코딩테스트
      • 자료구조
      • 알고리즘
      • 백준 문제풀이
      • 인공지능
      • 머신러닝
      • 프로젝트
      • 안드로이드 앱개발
      • 웹개발
      • 웹 서비스
      • 웹퍼블리싱
      • Node.js 백엔드 개발
      • CS
      • 1일 1CS지식
      • 운영체제
      • 네트워크
      • 데이터베이스
      • 정보처리기사
      • 도서 리뷰
      • 개발 관련 도서
      • 기타 도서

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yooniiverse

개발 블로그

~2023.02/운영체제

01_운영체제 개요

2022. 10. 20. 18:24

목차


1. 운영체제의 정의

2. 운영체제의 기능

3. 운영체제의 분류

4. 운영체제의 예

5. 운영체제의 자원 관리 기능

 

1. 운영체제의 정의


1.1 운영체제(operating system)란?

컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어

사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층

좁은 의미의 운영체제

운영체제 자체도 하나의 소프트웨어로서 전원이 켜짐과 동시에 메모리에 올라간다.

하지만 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심할 것이다.

따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분을 필요할 때 메모리로 올려서 사용하게 된다.

 

이때 메모리에 상주하는 운영체제의 부분을 커널(kernel)이라고 부르며, 이를 좁은 의미의 운영체제라고도 부른다.

즉 커널은 운영체제 코드 중에서도 핵심적인 부분을 뜻한다.

넓은 의미의 운영체제

커널뿐만 아니라 시스템을 위한 유틸리티들을 광범위하게 포함하는 개념이다.

우리가 흔히 사용하는 MS 윈도우 환경에서 파일을 복사하는 프로그램 등이 이에 해당된다고 볼 수 있다.

 

2. 운영체제의 기능


2.1 하드웨어를 위한 역할

사용자가 직접 다루기 힘든 각종 하드웨어를 운영체제가 관리하는 역할

컴퓨터 시스템 내의 자원을 효율적으로 관리하는 것

 

2.2 사용자를 위한 역할

편리한 인터페이스를 제공하는 역할

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

 

2.3 사용자와 운영체제 자신을 보호하는 역할

여러 사용자의 프로그램이 하나의 컴퓨터에서 실행되면 이에 대한 보안이 필요

 

3. 운영체제의 분류


3.1 동시 작업을 지원하는지의 여부

단일작업용 운영체제

한 번에 하나의 프로그램만 실행한다. 초창기 운영체제는 대개 단일작업용 운영체제에 해당했다.

다중작업용 운영체제

동시에 2개 이상의 프로그램을 처리한다.

다중작업용 운영체제 이해 시 주의할 점

더보기

운영체제가 다중작업을 처리할 때에는 여러 프로그램이 CPU와 메모리를 공유한다.

 

CPU가 하나밖에 없어 매 순간 하나의 프로그램만 CPU에서 실행될 수 있더라도 CPU 처리 속도가 워낙 빨라 수 밀리초 이내의 짧은 시간 규모로 여러 프로그램들이 CPU에서 번갈아 실행되면 사용자 입장에서는 여러 프로그램이 동시에 실행되는 것처럼 보이기 때문이다.

이와 같이 CPU 작업 시간을 여러 프로그램들이 조금씩 나누어 쓰는 시스템을 시분할 시스템(time sharing system)이라고 부른다.

 

CPU와 달리 메모리는 여러 프로그램들이 조금씩 메모리 공간을 보유하며 동시에 메모리에 올라가 있을 수 있다.

이처럼 메모리 공간을 분할해 여러 프로그램들을 동시에 메모리에 올려놓고 처리하는 시스템을 다중 프로그램 시스템(multi-programming system)이라고 부른다.

 

한편 다중작업용 운영체제는 여러 프로그램을 같이 실행시키지만 사용자 개개인의 관점에서는 각 프로그램에 대한 키보드 입력 결과를 곧바로 화면에 보여주기 때문에 대화형 시스템(interactive system)이라고도 부른다.

 

3.2 다중 사용자에 대한 동시 지원의 여부

단일 사용자용 운영체제

한 번에 한 명의 사용자만 사용하도록 허용한다.

다중 사용자용 운영체제

여러 사용자가 동시에 접속해 사용할 수 있게 한다.

 

3.3 작업을 처리하는 방식 차이

일괄처리(batch processing) 방식

요청된 작업을 일정량씩 모아서 한꺼번에 처리하는 방식이다. 사용자 입장에서는 응답시간이 길다는 단점이 있다.

초창기 컴퓨터에 사용되던 펀치 카드 처리 시스템이 예이다.

시분할 방식

여러 작업을 수행할 때 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식이다.

실시간(real time) 운영체제

정채진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템에서 사용된다.

원자로, 공장 제어 시스템, 미사일 제어 시스템 등이 그 예이다.

 

4. 운영체제의 예


4.1 MS 윈도우와 유닉스

생략

 

5. 운영체제의 자원 관리 기능


5.1 개요

운영체제의 가장 핵심적인 기능은 자원을 효율적으로 관리하는 것이다.

여기서 자원은 하드웨어 자원과 소프트웨어 자원으로 나뉜다.

 

하드웨어 자원은 CPU와 메모리를 비롯해 주변장치 또는 입출력 장치라 불리는 장치들로 구성된다.

CPU는 보통 컴퓨터 한 대에 하나가 장착되기 때문에 여러 프로세스들이 CPU를 효율적으로 나누어 사용할 수 있도록 관리되어야 한다.

메모리 역시 시스템 내에 한정된 용량만 존재하기 때문에 서로 다른 다수의 프로세스들이 나누어 쓸 수 있도록 해야 한다.

또한 입출력 장치도 운영체제의 관리가 필요하다.

 

CPU와 메모리는 전원이 꺼지면 처리 중이던 정보가 모두 지워지기 때문에 전원이 나가도 기억해야 하는 부분을 입출력 장치 중 한 종류인 보조기억장치(하드디스크, 키보드, 모니터 등)에 파일 형태로 저장한다.

이때 이러한 파일들이 저장되는 방식 및 접근 권한 등에 대해서도 운영체제가 관리를 해주어야 한다.

 

5.2 CPU 관리 방법

CPU 스케줄링

매 시점 어떠한 프로세스에 CPU를 할당해 작업을 처리할 것인지 결정하는 일이다.

CPU 스케줄링의 목표

CPU를 가장 효율적으로 사용하면서 특정 프로세스가 불이익을 당하지 않도록 하는 것이다.

대표적인 CPU 스케줄링 기법

더보기

선입선출(First Come First Served, FCFS)

CPU를 사용하기 위해 도착한 프로세스들 중 먼저 온 것을 먼저 처리해주는 방식이다.

전체 시스템 입장에서는 비효율적인 결과를 초래할 가능성이 있다는 단점이 있다.

 

라운드 로빈(Round Robin)

선입선출 기법의 단점을 보완하고자 고안된 기법이다.

CPU를 한 번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한한다.

긴 작업을 요하는 프로세스가 CPU를 할당받더라도 정해진 시간이 지나면 CPU를 내어놓고 CPU 대기열의 제일 뒤에 가서 줄을 서야 한다.

 

우선순위 기법

CPU 사용을 위해 대기 중인 프로세스들에 우선순위를 부여하고 우선순위가 높은 프로세스에 CPU를 먼저 할당한다.

 

5.3 메모리 관리 방법

메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치이다.

프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야 한다.

이때 한정된 메모리 공간에 여러 프로그램을 수용하려면 메모리에 대한 효율적인 관리 메커니즘이 필요하다.

또한 다수의 사용자 프로그램이 동시에 메모리에 올라간 경우 서로 다른 프로세스의 영역을 침범하지 않도록 보안을 유지하는 역할도 운영체제의 몫이다.

물리적 메모리 관리 방식

고정분할 방식

물리적 메모리를 몇 개의 분할로 미리 나누어 관리한다.

외부조각과 내부조각이 발생한다.

 

가변분할 방식

매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식이다.

외부조각이 발생한다.

 

가상메모리 방식

현대 범용 컴퓨터 환경에서 가장 널리 사용되는 메모리 관리 기법이다.

물리적 메모리보다 더 큰 프로그램이 실행되는 것을 지원한다.

현재 사용되고 있는 부분만 메모리에 올리고, 나머지는 하드디스크와 같은 보조기억장치에 저장해두었다가 필요할 때 적재하는 방식을 취한다. 이때 사용되는 보조기억장치의 영역을 스왑 영역이라고 부른다.

프로그램을 구성하는 가상메모리 주소 공간은 페이지라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑 영역에 일부분씩 저장된다. 이렇게 동일한 단위로 메모리는 나누는 기법을 페이징 기법이라고 한다.

 

5.4 주변장치 및 입출력 장치 관리 방법

인터럽트

CPU나 메모리와 달리 인터럽트라는 메커니즘을 통해 관리가 이루어진다.

주변장치들은 CPU의 서비스가 필요한 경우 신호를 발생시켜 서비스를 요청하는데, 이때 발생시키는 신호를 인터럽트라고 한다.

CPU는 평소에 CPU 스케줄링에 따라 주어진 작업을 수행하다가 인터럽트가 발생하면 하던 일을 잠시 멈추고 인터럽트에 의한 요청 서비스를 수행한다.

컨트롤러

주변장치들은 각 장치마다 그 장치에서 일어나는 업무를 관리하기 위한 일종의 작은 CPU를 가지고 있다. 이를 컨트롤러(제어기)라고 부른다.

컨트롤러는 해당 장치에 대한 업무를 처리하고, 이를 메인 CPU에 인터럽트를 발생시켜 보고하는 역할을 한다.

 

'~2023.02 > 운영체제' 카테고리의 다른 글

02_컴퓨터 시스템의 동작 원리  (0) 2022.10.20
00_책 선정과 목차 소개  (0) 2022.10.20
[운영체제]03_프로세스 관리#3(작성중)  (0) 2022.06.27
[운영체제]03_프로세스 관리#2  (0) 2022.06.24
[운영체제]03_프로세스 관리#1  (0) 2022.06.21
    '~2023.02/운영체제' 카테고리의 다른 글
    • 02_컴퓨터 시스템의 동작 원리
    • 00_책 선정과 목차 소개
    • [운영체제]03_프로세스 관리#3(작성중)
    • [운영체제]03_프로세스 관리#2
    yooniiverse
    yooniiverse

    티스토리툴바