운영 체제 - 운영 체제 개요

pa324·2019년 11월 24일
0

Introduction to Operation System

운영체제란 무엇인가?

  • 운영체제(operating system)란 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어를 말한다.
  • 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층으로 표현하기도 한다.
  • 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올리고, 그렇지 않은 부분은 필요할 때 메모리로 올려서 사용한다. 이때 메모리에 상주하는 운영체제의 부분을 커널(kernel)이라고 부른다. (좁은 의미의 운영체제)
  • 넓은 의미의 운영체제는 각종 시스템을 위한 유틸리티들을 광범위하게 포함하는 개념이다.(파일을 복사하는 프로그램,디스크 조각모음 등등..)

운영체제의 목적

운영체제의 목적은 크게 2가지로 나눌 수 있다. 첫번째로, 운영체제의 위치가 하드웨어 바로 위에 위치하고, 소프트웨어와 사용자 바로 아래에 위치하기 때문에 하드웨어를 효율적으로 관리하는 역할을 한다. 두번째로 리소스를 효율적으로 관리하는것이 운영체제의 기능이다.

  • 하드웨어 측면에서는, 사용자가 알기 힘든 각종 하드웨어를 운영체제가 직접 관리하는 역할을 하고, 사용자에게는 편리한 인터페이스를 제공하는 역할을 한다.

  • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공하고, 시스템 내의 자원을 효율적으로 관리하는것이 운영체제의 주요 기능이다.

    • 편리한 환경?

      • 동시 사용자 및 프로그램에게 각각 독자적으로 컴퓨터를 사용하는 것과 같은 환상을 제공하는 것을 의미한다.
    • 효율적인 자원 관리?

      • cpu,메모리,하드 디스크 등의 하드웨어 자원 뿐만 아니라, 소프트웨어 자원들을 효율적으로 관리해 가장 좋은 성능을 내도록 하는 역할을 담당
      • 자원이 형평성 있게 분배되도록하는 균형자 역할도 함께 수행
- 1. 하드웨어를 효율적으로 관리(자원 관리의 효율화)

  - 주어진 자원으로 최대한의 성능
  - 사용자간의 형평성 있는 자원 분배
  - 하드웨어 뿐만 아니라 프로세스,파일,메시지등의 소프트웨어도 관리한다.



- 2. 사용자가 컴퓨터를 편리하게 사용하게 해준다.

  - 현대 컴퓨터는 여러 프로그램이 한 대의 컴퓨터에서 동시에 실행되는것을 지원하고 있다.  여러 사용자는 마치 자기 프로그램만 cpu를 점유해서 사용하는것 같지만 실제로는 cpu가 고속으로 스케쥴을 진행하기 때문에 사용자는 느끼지 못한다.

운영체제의 분류

운영체제를 여러가지 기준에 따라 분류할 수 있다.

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)

    • 작업 요청의 일정량 모아서 한꺼번에 처리
    • 작업이 완전 종료될 때까지 기다려야 함
  • 시분할(time sharing)

    • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
    • 일괄 처리 시스템에 비해 짧은 응답시간을 가진다.
    • interactive한 방식(컴퓨터 키보드를 입력했을때 바로 화면에 출력되는 것)
  • 실시간(real time)

    • 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 os
    • 예) 원자로/공장 제어, 미사일 제어, 반도체 장비, 로봇 제어
  • 실시간 시스템의 개념 확장

    • Hard realtime system(경성 실시간 시스템)
    • Soft realtime system(연성 실시간 시스템)

몇 가지 용어 정리

  • Multitasking

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

    • 메모리 공간을 분할해 여러 프로그램들을 동시에 메모리에 올려놓고 처리하는 시스템
      • 초창기 싱글코어 싱글 스레드 컴퓨터에서는 프로그램이 메모리에 하나만 올라가고 해당하는 프로그램만 CPU가 처리를 진행할 수 있었다. 이런 과정에서 프로그램이 파일 입출력을하게 되면 중간에 idle(정지)상태가 되는데 이 때 다른 프로세스의 일부를 실행시키는걸 의미한다.
  • Time sharing

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

    • 하나의 컴퓨터안에 cpu가 여러 개 설치된 경우를 의미
  • 구분

    • 위의 용어들은 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻한다.
    • Multiprogramming은 여러 프로그램이 메모리에 올라가 있음을 강조
    • Time sharing 은 cpu의 시간을 분할하여 나누어 쓴다는 의미를 강조

운영 체제의 예

  • 유닉스(Unix)
    • 코드의 대부분을 c언어로 작성 (유닉스 운영체제를 만들기 위해서 c언어를 만듬)
    • 높은 이식성
    • 최소한의 커널 구조
    • 복잡한 시스템에 맞게 확장 용이
    • 소스코드 공개
    • 프로그램 개발에 용이
    • 다양한 버전
  • DOS(Disk Operation System)
    • ms 사에서 1981년 ibm-pc를 위해 개발
    • 단일 사용자용 운영체제, 메모리 관리 능력의 한계( 주 기억장치 : 640kb)
  • MS Window
    • ms 사의 다중 작업용 gui 기반 운영체제
    • plug and play, 네트워크 환경 강화
    • dos 용 응용 프로그램과 호환성 제공
    • 불안정성
    • 풍부한 지원 소프트웨어

운영체제의 구조

cpu 관리

cpu는 어떤 프로그램에게 cpu를 할당할 것인가에 대한 고민이 있다.( 누구한테 cpu를 줄까? cpu 스케줄링) 일상 생활에서의 scheduling은 선착순으로 처리하는것이 가장 합리적이다 라고 생각 한다.

하지만 컴퓨터 시스템에서 선착순 방식으로 일을 처리 하면 하나의 프로그램이 cpu를 점유하고 계속 잡고 있으면 뒤에서 기다리는 프로그램은 계속해서 기다려야 한다. (화장실이 한칸 있는데 변비 걸린사람이 계속 앉아있으면, 뒤에 있는 사람은 계속 기다려야 한다.)

즉, cpu스케쥴링을 짧은 시간간격으로 스케쥴링해서 최고의 효율을 낼 수 있도록 한다. (가장 빨리 끝낼 수 있는 일을 가장 먼저 처리한다.)

cpu 작업이 오래 걸리는 프로그램에 cpu 할당을 먼저하면 뒤에서 기다리는 프로그램이 모두 기다려야 하므로 평균적인 성능이 낮아지게 된다.

메모리 관리

  • cpu에서 프로그램이 실행되려면 최소한 실행하려는 프로그램이 메모리에 올라와있어야 한다. 메모리에 너무 많은 프로그램을 동시에 올리게 되면 하드디스크에서 i/o를 통해서 메모리에 다시 올린 후 cpu가 실행하게 된다. 따라서, 메모리를 효율적으로 관리해야 disk i/o를 최소화 시켜서 프로그램을 실행 시킬 수 있다.
  • 메모리의 크기는 한정되어 있기 때문에, 꽉 차있는 상태라면 어떤 프로그램을 내보낼지 결정하는것 또한 중요한 문제이다. (cpu에서 다시 사용할 가능성이 높은 프로그램은 내보내지 않고 메모리에서 잡고 있고, 그렇지 않은 프로그램을 메모리에서 내보낸다.)
  • 과거를 통해 미래를 예측한다.( 과거에 올라온 프로그램이 최근에 메모리에 많이 올라왔거나, 오랫동안 메모리에 있었으면 미래에도 오래 있을 확률이 높다.)

파일관리

  • 디스크에 파일을 어떻게 보관하지?
  • 조각조각 나눠서 보관 vs 통채로 보관
  • 디스크의 특성에 적합하게 파일을 관리해야 한다.
  • 디스크에 들어온 요청들을 처리하는것 또한 중요함.
  • 디스크 헤드의 가까운 위치에 들어온 파일이 있으면 나중에 들어왔더라도 먼저처리하는 방식으로 디스크 스케쥴링 한다.(엘리베이터와 유사하다.)
  • 디스크 헤드의 움직임을 최소화 시키도록 디스크 입출력 요청을 처리 한다.

I/O 입출력 관리

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

프로세스 관리

  • 프로세서의 생성과 삭제
  • 자원 할당 및 반환
  • 프로세스간의 협력

※ 운영체제 과목의 수강

내가 마치 운영체제라고 생각하고 본인이 할일이 무엇인지를 생각해 보면 도움이 된다. 인간의 신체가 뇌의 통제를 받듯 컴퓨터 하드웨어는 운영체제의 통제를 바으며 그 운영체제는 사람이 프로그래밍하는 것 이다.

profile
안녕하세요

5개의 댓글

comment-user-thumbnail
2019년 11월 25일

이화여대 반효정교수님 온라인 강의 아닌가요?? ㅎㅎ
저도 잘 듣고 있습니다

1개의 답글