운영체제 1)

zh025700·2022년 4월 3일
0

운영체제

목록 보기
1/20

운영체제

1) Introduction to Operating Systems


프로그램 밑에선??

-S/w와 H/W가 있다.

Application Software(응용 소프트웨어)

- high level 언어로 쓰여졌다 ex)C, python, java
- H/W는 오직 low level 언어만 작동할 수 있다, 그럼 high level로 돌아간건 어캐 작동??

System Software(시스템 소프트웨어)

- Like OS, Compiler
- OS: H/W를 작동할 수 있게 다양한 추상화를 제공해준다.
- I/O 관리
- 메모리, 저장공간 관리
- 스케줄링
- Compiler
- High level 언어를 기계어로..

H/W

- 프로세서, 메모리, I/O 관리..

운영체제란??

  • 사용자 응용 프로그램과 컴퓨터 하드웨어 사이의 소프트웨어 계층이다.

    • Interface 이다!!!(사용자가 H/W동작을 고려 안하게 한다.)
      => 사용자가 시스템의 디테일을 몰라도 편하게 사용할 수 있게 Interface 해준다!
  • Kernal이라고 생각하면 된다.

    OS는 한정된 자원을 관리한다.

    • 효율적으로 H/W의 자원을 관리한다 => 성능을 최대화
    • 공정하게 H/W의 자원을 할당한다 => 유저에게 경험을 보장한다.

    OS는 컴퓨터 시스템을 쉽게 사용할 수 있게 한다.

    • 프로그램을 실행하여 문제를 해결하게 한다.

OS의 관점?

동시에 몇명이 시스템을 사용 가능한가?

  • Single user System
    • 한 유저만 사용가능한 시스템
      • 간단하지만 성능이 좋지 X
      • 윈도우, 맥..
  • Multi user System
    • 한명 이상이 시스템에 동시 접근 가능한 시스템
      • 복잡함
      • 각각 task에 schedule이 필요
      • 권한, protection 관리가 유저마다 필요
      • 전체 성능 향상 가능
      • Unix, Linux, Mainframe.. like Server

몇개의 task가 동시에 실행 가능한가?

  • Single tasking System

    • 하나의 프로그램만 실행 가능
      • MS_DOM,윈도우 cmd
  • multi tasking System

    • 여러개의 프로그램을 동시에 실행 가능
      • 대부분의 현대 OS ex) 리눅스 윈도우..

오픈소스 프로그램 vs 클로즈드 프로그램

  • 오픈소스(Linux)
    • 공짜
    • 제한 없이 소스코드 수정 가능
    • 해커 free 보안 안좋아~
  • 클로즈드
    • 유로
    • 보안이 좋지 소스 못보니깐!!

커널에 따른

  • Monolithic kernel(Unix Linux)

    • 단일 주소 공간에서 완전히 실행되는 단일 대형 프로세스
    • 모든 커널 서비스는 커널 주소 공간에서 존재하고 실행된다.
    • 각 요소들은 효율적이게 소통 가능하다 => 빠르다.
    • Disk driver에 추가, 삭제가 어려우며 관리가 어렵다 왜? 크기가 커서
    • 커널이 모든 서비스를 관리!!
  • Micro kernel (임베디드)

    • 핵심 기능만 커널이 관리, 나머지는 제외
    • 커널은 여러 프로세스들로 나뉘어짐, 서버와 같은
    • 모든 서버는 분리되어있고 다른 주소 영역에서 실행됨
    • 서버가 IPC를 통해 메세지를 전송함으로써 서비스가 실행됨
  • Hybrid kernel()

    • 윈도우, 위에 두개 섞음

운영체제의 역사

Serial processing(1950년대 까지)

  • H/W가 사람보다 비쌈
  • 주요 목적: H/W의 효율적인 사용 (쉬지않고 동작하게!)
  • OS 없었음
    • 기계어로 프로그래밍
    • 프로그램은 컴퓨터를 사용하기 위해 모든것을 포함해야했다??
    • job을 바꾸려면 느렸다 (사람이 해서)

Single Batch processing (1960까지)

  • 모든 종류의 프로그램 및 데이터를 일괄적으로 입수하여 처리한다.

    • 셋업 및 다운타임을 단축 => CPU 이용률 증가
    • JCL을 이용
  • 모니터 -> 간단한 스케줄러

    • 메인 메모리를 사용
    • 메모리 보호, 타이머, privileged instructions, 인터럽트 추가
  • 두개의 오버헤드(추가적으로 자원이 사용되는): 메모리 및 프로세서 시간(모니터를 위해)

  • 여전히 single job => 종종 cpu 이용률이 안좋음

I/O를 하는 시간이 실제 CPU 이용률 보다 훨씬 많음

-> I/O를 어캐 줄일 수 없나??

Multiprogramming batch processing(1960~1970)

파이프라인 기법과 같음, CPU활용의 극대화를 위해

  • 다수의 유저가 시스템을 공유한다 -하나의 프로세서를 최대한 바쁘게 유지하며 여러 프로그램을 동시에 작동한다. => 프로세서는 Job들을 Switch한다.
  • Job들은 디스크에 스풀링된다.
    • 느린 I/O를 감춘다
    • 계산과 비동기 I/O이 오버랩 된다.(CPU가 동작할때 I/O를)
  • 메모리는 보호되며 재배치 된다.
  • 동시에 여러 프로그램이 실행되는것이 중요해짐
    -Job 스케줄러는 우선순위, 메모리 크기와 같은 기준으로 실행할 job을 선택한다.

I/O의 타입

  • Synchronous(동기)
    • 중간에 멈출 수 없다.
    • I/O가 시작이 되면, Control은 I/O가 끝나고 프로그램을 반환한다.
    • CPU가 아무것도 안함 이때는
    • 대부분 한번에 하나의 I/O만
  • Asynchronous(비동기)
    • I/O가 시작해도, Control은 I/O가 끝나기 전에 프로그램을 반환할 수 있다.
    • 중지 -> 다시시작 가능

Memory relocation
Base/Bound register

  • MMU의 원시 form이다.
  • OS는 H/w의 지원을 통해 관리를 한다.

Memory protection

Concurrency and synchronization

==> Batch = 컴퓨터가 놀지 않게
Multi-programming = I/O할 때 CPU가 안 놀게

Time-sharing processing (1970~1980)

  • 앞에서의 기법들을 논리적으로 확장한 것.

    • CPU는 job들을 자주 스위칭한다. 그래서 다수의 유저들이 각자의 job에 상호작용할 수 있다. => 대화형 컴퓨팅을 생성한다.
      • 각 유저는 적어도 메모리에서 실행중인 하나의 프로그램을 가진다 => Process
      • 응답시간이 1초 미만으로 줄었다.
  • 시스템 클럭이 인터럽트를 발생시킨다.

    • 각 클락에서, 시스템은 control을 다시 얻고 프로세서에 다른 Job을 할당한다. => Time Slicing(시간을 짧게 쪼개 일을 쪼갠다)
    • Job&Process 스케줄링(Round-robin)
  • 만약 프로세스가 메모리에 맞지 않는다면, Swapping이 실행가는하게 만든다.

    • 가상 메모리, 디스크 관리

=> 앞에선 실제 시간을 줄이기 위해서, 이번 기법은 유저에게 착각을 줘 빠르게 느낌

Real time System

  • 시스템이 특정 시간 제약을 보장해야하거나, 지정된 데드라인을 충족해야함.

  • Hard real-time system

    • deadline을 놓치면 재앙이 발생
  • Soft real-time system

    • 종종 deadline을 놓침 크게 문제 X
    • 시스템의 퀄리티 문제
profile
정리

0개의 댓글

관련 채용 정보