운영체제란?

wave·2021년 2월 14일
0

일상생활에서의 운영체제

  • 내가 운영체제라고 생각하기
  • 사용자들을 어떻게해주면 사용자들이 편리해할까 ?
  • 최근에는 pc 자동차에도 운영체제가 설치된다.
  • 사람으로서 시간관리 및 돈은 어떻게 써야할까?

운영체제란 무엇인가?

컴퓨터 하드웨어 바로 윗단에 설치 되는 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층

사용자는 운영체제하고만 인터페이스를 하여 컴퓨터를 쉽게 사용하고, 소프트웨어도 운영체제의 관리를 받는다.

좁은 의미의 운영체제

커널

  • 컴퓨터 전원을 켰을 떄 항상 메모리에 상주하는 부분

넓은 의미의 운영체제

커널을 포함하여 각종 주변 시스템 유틸리티를 포함한 개념

ex) 윈도우를 설치하면 여러 부가적인 것들 파일복사 등


운영체제의 목적

  1. 하드웨어-운영체제는 어떻게 인터페이스?
  2. 운영체제 위에 있는 사용자와 소프트웨어와는 어떻게 인터페이스 할까?

소프트웨어, 사용자 - 운영체제

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

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

운영체제 - 하드웨어

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

  • 프로세서, 기억장치, 입출력 장치 등의 효율적 관리

    사용자간의 형평성 있는 자원 분배

    주어진 자원으로 최대한의 성능을 내도록

cpu는 컴퓨터에서 제일 빠른 부분, 프로그램들에게 짧은 시간 번갈아가며 할당

메모리는 프로그램들에게 공간을 줘야한다.

운영체제의 고민들•••

  • 자원들을 공유해야하는지 분할해야하는지? 어떻게 사용해야 할지
  • 누구에게 먼저 cpu를 할당해야하고 얼마만큼의 시간을 주어야하는지
  • 메모리도 마친가지이다.

운영체제의 분류

  • 동시 작업 가능 여부
  • 사용자의 수
  • 처리 방식

동시 작업 기능 여부

단일작업(Single tasking)

한 번에 하나의 프로그램만 실행

다중 작업(Multi tasking)

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

주의할 점

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

다중 작업에는 세 가지 시스템이 있다.


다중 작업

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

1. 시분할 시스템

CPU의 작업 시간을 여러 프로그램들이 조금씩 나누어 쓰는 시스템

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

2. 다중 프로그래밍 시스템

메모리 공간을 분할해 여러 프로그램들을 동시에 메모리에 올려놓고 처리

3. 대화형 시스템

사용자 개개인의 관점에서는 각 프로그램에 대한 키보드 입력의 결과를 곧바로 화면에 보여주는 시스템

  • 서버

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

1. 단일 사용자용 운영체제

한 번에 한 명의 사용자만이 사용하도록 허용하는 운영체제

2. 다중 사용자용 운영체제

여러 사용자가 동시에 접속해 사용할 수 있게 하는 운영체제

  • 이메일, 웹서버

운영체제가 작업을 처리하는 방식

1. 일괄처리(Batch Processing)

요청된 작업을 일정량 씩 모아서 한꺼번에 처리하는 방식

  • 처리해야할 여러 작업들을 모아 일정량이 쌓이면 일괄적으로 처리하고, 모든 작업이 완전히 종료된 후에 결과를 얻을 수 있다.
  • 사용자 입장에서는 응답시간이 길다는 단점.

2. 시분할 방식

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

  • 서버컴퓨터는 여러 사용자의 작업을 짧은 시간 단위씩 번갈아가며 처리하게 된다. 그러므로 사용자들은 일괄 처리 방식에 비해 짧은 응답시간을 갖게 된다. 평균적으로 사람들이 길다고 느끼는 시간에 이르지 않고 입력에 대한 응답을 얻을 수 있기 때문에 사용자 측에서는 컴퓨터를 자기 혼자 독점적으로 사용하는 것 처럼 생각할 수 있다.
  • 사용자의 요청에 대한 결과를 곧바로 얻을 수 있는 시스템을 대화형 시스템이라 한다.

3. 실시간 처리(Real time)

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


운영체제의 자원 관리 기능

  1. CPU

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

  2. 메모리

    한정된 용량만 존재하기 때문에 서로 다른 다수의 포르세스들이 나누어 슬 수 있도록 해야한다.

  3. 입출력 장치

    전원이 나가도 기억해야하는 부분을 입출력 장치 중 한 종류인 보조기억 장치에 파일 형태로 저장한다.


운영체제의 CPU 관리

CPU가 하나밖에 없는 가장 기본적인 컴퓨터 구조에서도 프로세스는 여러 개가 동시에 수행될 수 있다. 그러므로 매 시점 어떠한 프로세스에 CPU를 할당해 작업을 처리할 것인지 결정하는 일이 필요하다. 이러한 일을 CPU 스케줄링이라 한다.

CPU 스케줄링

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

CPU 스케줄링의 목표

  • CPU를 가장 효율적으로 사용하자
  • 특정 프로세스가 불이익을 당하지 않도록 하자
  • 선입선출, 라운드로빈, 우선순위 기법등이 있다.

선입선출

  • CPU를 먼저 얻은 프로세스가 원하는 작업을 완료할 때 까지 다른 프로세스들이 CPU를 사용하지 못한다.

라운드로빈

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

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

우선순위

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

  • 기다린 시간이 늘어날 수록 우선순위를 점차 높여주는 방안

운영체제의 메모리 관리

CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치

  • 프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야 한다.
  • 메모리 관리를 위해 운영체제는 메모리의 어느 부분이 어떤 프로그램에 의해 사용되고 있는 지를 파악하여 이를 유지하게 되는데, 이러한 정보들은 주소를 통해 관리된다.

물리적 메모리 관리

1. 고정분할 방식

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

  • 나뉜 각각의 분할에는 하나의 프로그램이 적재될 수 있다.
  • 메모리에 동시 적재되는 최대 프로그램의 수가 분할 개수로 한정
  • 분할의 크기보다 큰 프로그램은 적재가 불가능
  • 분할의 크기보다 또 작으면 낭비 ⇒ 내부조각

내부조각

  • 해당 분할에 올라온 프로그램에 의해서도 사용되지 않음
  • 다른 프로그램에도 할당될 수 없는 낭비되는 공간

2. 가변분할 방식

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

  • 고정 분할 방식에서의 문제 해결
  • 물리적 메모리의 크기보다 더 큰 프로그램의 실행은 여전히 불가능
  • 프로그램에 할당 되지는 않았지만 그 크기가 작아 프로그램에 올리지 못하는 메모리 영역 발생 ⇒ 외부조각

3. 가상메모리 기법

물리적 메모리보다 더 큰 프로그램을 실행 시킬 수 있는 방식

  • 페이징 기법


운영체제의 주변기기 관리

인터럽트(Interrupt)

주변 기기들은 CPU의 서비스가 필요한 경우에 신호를 발생시켜 서비스를 요청한다.

  • CPU는 스케줄링에 따라 자기에게 주어진 작업을 수행하다가 인터럽트가 발생하면 하던 일을 잠시 멈추고 인터럽트에 의한 요청 서비스를 수행한다.
  • 인터럽트 처리 직전에 수행중이던 작업의 상태를 저장
  • 인터럽트 처리를 완료한 후 원래 수행하던 작업으로 복귀

컨트롤러(Controller)

주변 장치들은 그 장치에서 일어나는 업무를 관리하기 위한 일종의 작은 CPU.

  • 해당 장치에 대한 업무 처리

  • 메인 CPU에 인터럽트를 발생시켜 보고

profile
훌라도 하고 개발도 하는 사람

0개의 댓글