Introudction to OS

uuuu.jini·2023년 3월 28일
0

OperatingSystemLecture

목록 보기
1/4
post-thumbnail

운영체제란 무엇인가

✅ 운영체제란?

  • 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
  • 협의(좁은의미) 운영체제 (커널)
    • 운영체제의 핵심 부분으로 메모리에 상주하는 부분
    • 컴퓨터 전원 킨 이후 메모리에 항상 상주하는 부분
    • 전공자 입장에서의 운영체제
  • 광의(넓은의미) 운영체제
    • 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념
    • 메모리에 상주하지 않는 별도의 프로그램이지만 운영체제의 범주에 포함

✅ 운영체제의 목적

  • 운영체제의 위치가 하드웨어의 윗단에 설치
  • 하드웨어를 효율적으로 관리하는 역할 (가장 중요)

- 컴퓨터 시스템의 자원을 효율적으로 관리

  • 프로세서, 기억장치, 입출력 장치 등(자원)의 효율적 관리(사용자간의 형평성 있는 자원 분배, 주어진 자원으로 최대한의 성능을 내도록) ⇒ 효율성, 형평성
  • 하드웨어 자원은 이미 주어져 있다.
  • 사용자 및 운영체제 자신의 보호
  • 프로세스, 파일, 메시지 등을 관리 ⇒ 하드웨어와 구분되는 소프트웨어 자원
  • 운영체제는 하드웨어, 소프트웨어 자원 모두 관리

- 컴퓨터 시스템을 편리하게 사용할 수 있도록 지원

  • 운영체제의 위치가 사용자의 아랫단에 설치
  • 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
    • 마치 자신 프로그램만 실행되는 것 같은 기능을 제공 ⇒ 사실은 컴퓨터 한대가 내부적으로 서로 다른 프로그램을 실행되게 함
  • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
  • 짧은 시간 간격으로 각 프로그램들의 실행을 반복
  • 메모리도 각 프로그램이 공간을 가지고 있음 ⇒ 각 메모리의 할당도 조율해준다.

운영체제의 분류

✅ 동시 작업 가능 여부


- 단일 작업 (single tasking)

  • 한번에 하나의 작업만 처리
  • 예) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음

- 다중 작업 (multi tasking)

  • 동시에 두 개 이상의 작업 처리
  • 예) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음
  • 현재 운영체제는 다중 작업을 지원!!

✅ 사용자의 수


- 단일 사용자

  • MS-DOS, MS Windows

- 다중 사용자

  • 컴퓨터 한대를 여러 사용자가 동시에 접속하여서 사용할 수 있다.
  • UNIX, NT server

✅ 처리 방식


- 일괄 처리 (batch)

작업이 주어졌을 때 바로 처리하는 것이 아닌 한꺼번에 모아서 처리함 ⇒ 현대 OS에서는 찾아보기 어렵다.

  • 작업 요청의 일정량 모아서 한꺼번에
  • 작업이 완전히 종료될 때까지 기다려야 함
  • 예)초기 Puch Card 처리 시스템
  • interactive하지 않다. ⇒ 작업들을 모아서 한꺼번에 처리한다.

- 시분할 처리(time Sharing)

  • 여러 작업 수행 시 컴퓨터 처리능력을 일정한 시간 단위로 분할하여 사용
  • 일괄처리 시스템에 비해 짧은 응답 시간 가짐 예) UNIX
  • interactive 한 방식 ⇒ 내가 키보드 눌렀을 때 바로 화면에 결과가 나옴
  • 시간의 제약조건을 만족하진 않는다. ⇒ 사용자가 엄청 증가시 시간이 변경된다. (시간 증가)
  • 현재 사용하는 컴퓨터 (일반 범용 컴퓨터 OS)

- 실시간 (realtime)

  • 정해진 시간안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
  • 예) 원자로/ 공장 제어, 미사일 제어, 반도체 장비, 로보트 제어
  • 파이프라이닝 순서대로 일처리가 진행됨, 1⇒ 2⇒3
    • 한 공정이 느려지는 경우 전체 공정에 영향을 미친다. ⇒ 실시간 OS를 사용해야 한다.
  • 실시간 시스템의 개념 확장
    • Hard realtime system : 경성 실시간 시스템: 데드라인을 지키지 않으면 치명적인 결과가 나오는 system.
    • Soft realtime system: 연성 실시간 시스템: 데드라인을 조금 지난다고 해도 크게 치명적인 결과가 나타나지는 않는 system. (예.영화)
  • 실제 사용 범용 OS는 영화를 위해 실시간 OS를 지원하진 않는다. ⇒ 여러가지의 프로그램을 동시에 실행시키는 경우 동영상의 데드라인이 보장되지 않는다.
    • 실시간이 점점 요구되고 있기 때문에 어떻게 하면 실시간을 제공할 수 있는가를 연구 중

✅ 용어 정리


  • Multitasking: 일반적인 용어, 여러 태스크가 동시 수행 ⇒ 짧은 시간 분할하여 수행(동시에 수행된느 것처럼 보인다.)
  • Multiprogramming: 메모리에 여러 프로그램이 동시에 올라가는 방식이다. 메모리 측면을 강조
  • Time Sharing: 시간을 공유해서 사용, CPU 를 강조한 측면
  • Multiprocess: 여러 프로세스가 동시 수행

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

  • Multiprocessor: 하나의 컴퓨터에 CPU(processor)가 여러개 붙어있음

운영체제의 예

✅ 유닉스

  • 대형 컴퓨터를 위해 만들어짐
  • 코드의 대부분을 C언어로 작성
    • C언어: 고급 언어, 사람이 사용하기에 편리하지만 기계와 가깝다.
  • 멀티태스킹 가능 ⇒ 여러 사용자 지원
  • 높은 이식성, 최소한의 커널 구조, 복잡한 시스템에 맞게 확장 용이
    • 높은 이식성: 쉽게 다른 컴퓨터 기계어에 적용이 쉽다. 대부분의 코드가 c언어로 작성되어 있으므로, 기계어와 독립적이다.
    • 최소한 커널 구조: 커널의 크기를 굉장히 작게 만들었다. 왠만한 기능들을 밖으로 뺌
  • 소스 코드 공개, 프로그램 개발에 용이, 다양한 버전(System V, FreeBSD ..)
  • 처음: 서버를 설치해서 동시에 사용 가능, 개인 PC에도 편리 (안드로이드도 운영체제 커널은 UNIX 커널을 사용)

✅ DOS

  • MS 사에서 1981년 IBM-PC를 위해 개발
  • 단일 사용자용 운영체제, 메모리 관리 능력의 한계(주 기억장치: 640KB)
  • PC를 위해 만들어짐
  • 개인용 컴퓨터 ⇒ 단일 사용자, 단일 작업 추구

✅ MS Windows

  • MS사의 다중 작업용 GUI 기반 운영 체제
  • Plug and Play, 네트워크 환경 강화
  • DOS용 응용 프로그램과 호환성 제공
  • 불안정성, 풍부한 지원 소프트웨어

✅ Handheld device 를 위한 OS

  • PalmOS, Pocket PC (winCE), Tiny OS

운영체제의 구조

개괄적인 구조 설명

  • 자원들을 관리함 ⇒ CPU 스케줄링 (어떤 프로그램에게 CPU를 할당하겠는가)
    • FIFO(먼저 온것 먼저 수행한다.) ⇒ 효율적이지 않다.
    • SJF (짧은 시간 먼저 수행한다.)
    • CPU는 굉장히 빠른 자원 ⇒ 짧은 시간간격으로 프로그램에게 할당
  • 메모리 관리: 한정된 메모리의 사용 (메모리 공간 한정 ⇒ 여러 프로그램이 동시에 올라가고 싶다. ⇒ 어떤 프로그램에 메모리 어떻게 활용?)
    • 공평하게 1/n ? ⇒ 효율X
    • 프로그램이 너무 많은 경우 각각이 갖는 메모리의 양이 적어진다. ⇒ 프로그램이 너무 많아서 메모리 적게 배정됨 ⇒ CPU에서 원활하게 실행을 위한 메모리양을 제한하여 프로그램에게 메모리를 제공 (워킹 셋 모델)
    • 특정 프로그램에게 메모리 몰아주기 (항상 1/n만큼 쪼개는거x)
    • 어떤 것을 쫓아내야 하는가? : CPU에서 머지않아 다시 사용할 가능성이 적은 것, but 미래 사용할 것을 모른다. ⇒ 공간 지역성, 시간 지역성 (최근에 사용이 많이 된 경우 다시 사용될 가능성이 많다.)
  • 파일 관리: 디스크에 파일을 어떻게 보관할지
    • 먼저 온것을 먼저 처리한느 것보다 다른 방식이 더 효율적이다.
    • 헤드 자체가 움직이면서 처리하므로 어떻게 하면 헤드를 덜 움직이면서 처리할 수 있는가
  • 입출력 관리 : 각기 다른 입출력장치와 컴퓨터간에 어떻게 정보를 주고 받을지
    • 입출력 장치는 속도가 굉장히 느리다.
    • interrupt 기반으로 관리한다. (CPU는 자신의 일을 하다가, 입출력장치의 interrupt를 통해 cpu에게 알려준다. 해당 일을 처리해준다. )
  • 프로세스 관리: 프로세스의 생성과 삭제, 자원 할당 및 반환, 프로세스 간 협력
  • 그 외
    • 보호 시스템, 네트워킹, 명령어 해석기
profile
멋쟁이 토마토

0개의 댓글