DEVELOP
article thumbnail

본 게시물은 운영체제 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시물입니다.


운영체제의 필요성과 목적 

- 한정된 자원과 사용자 사이의 경쟁을 조율하기 위한 운영자의 정책이 필요하다.

 

# 운영체제의 목적 

  • 사용자 관점에서의 편의성 추구 
  • 자원 할당자로서 자원 활용의 효율성 추구 
  • 다양한 입출력 장치의 운영 및 제어의 일관성 추구 

초기시스템

  • 기계어 프로그램을 주로 카드 천공기를 이용해 펀치카드에 기록하거나 자기테이프에 기록 
  • 프로그래머가 Sign-Up Sheet에 원하는 시간을 표시(예약)
  • 프로그래머가 콘소리나 스위치를 이용해 모든 작업 수행 
    - 펀치카드 박스나 카드덱의 내용을 카드리더기에 적재 
    - 콘솔을 통해 프로그램 수행/디버깅 
    - 카드덱 형태의 라이브러리 사용 
  • 활용도 비효율 (남는시간 발생) / 준비 시간 과다
  • 편의성은 높으나 효율성은 매우 낮다 
  • 하드웨어 가격이 비싼 시기였기에 효율성 증진에 많은 노력 투입 

초기일괄처리시스템

  • 운영자를 고용해 사용자의 작업을 전문적으로 대행 
  • 사용자들이 요구하는 비슷한 작업들을 함께 묶어서 배치(Batch)로 처리 
  • 배치는 별도의 오프라인 카드리더나 테이프에 수록되고, 처리 결과도 별도의 오프라인 카드리더나 테이프에 수록되고, 처리 결과도 별도의 오프라인 테이프를 통해 프린터로 출력됨
  • 배치라는 일괄처리 작업을 취급하는 것은 사람(운영자)
  • 효율성 위주 - 주컴퓨터가 실행되는 동안 또다른 Batch 입력 가능 
  • 운영자에 대한 의존도가 ↑


일괄처리시스템

  • 채널
    - 명령어, 레지스터 및 입출력 제어장치로 구성 
    - CPU와 함께 메모리를 공유
    - CPU로부터 명령을 받아 CPU와 독립적으로 입출력 실행 
    (단, 메모리 사이클 경쟁 제어 필요) → DMA
  • 버퍼
    - CPU와 채널 입출력의 병렬 수행을 위해 데이터 버퍼를 사용
    - 연산하는 동안 읽거나 쓰는 것이 가능하게 되어 입출력 대기시간을 없앰 
  • 인터럽트
    - 사용자 프로그램이 아니라 하드웨어에 의해 자동으로 메모리 특정 부분에 있는 함수를 호출
    - 입출력의 완료와 예외동작 처리
    ( 파일종료, 테이프 끝, 패리티 오류 등)
    - 채널을 통한 입출력 버퍼링을 CPU와는 독립적으로 수행토록 하는 핵심 수단  
    - cf) 트랩 : 일종의 소프트웨어 인터럽트
  • 상주 모니터 
    - 인터럽트 처리기 또는 입출력 관리자를 메모리에 영구적으로 상주시켜야 할 필요성 대두 
    - 작업 제어 명령어, 적재기 , 작업 순서 제어기를 상주시켜 컴퓨터의 운영을 좀 더 자동화시킴
  • 보호
    : 잘못된 사용자 프로그램이 상주모니터 영역에 접근해 덮어쓰는 일이 빈번히 발생함에 따라 상주모니터 보호의 필요성 대두
    - 모든 프로그램이 입출력을 직접 하지 않고 상주모니터의 루틴을 호출하도록 → 시스템 콜 대동
  • 장점
    - 초기 일괄처리 시스템에 비해 효율성 개선됨 
    - 하나의 작업이 CPU를 독점하므로 해당 작업으로 볼 때는 처리 속도가 가장 빠르다 
  • 사용자의 애화가 필요 x ㅣ 수치계산, 대용량 데이터 처리 
  • 아쉬운점
    - 질의응답이 많거나 에디터 같이 사용자와 빈번한 대화가 필요한 대화형 응용 프로그램에서는 사용이 어렵다
  • 입출력 장치와 CPU가 간섭없이 서로의 작업을 함 
  • 입출력 장치가 약속된 장소에 메모리 직접 접근해 입출력 끝내도록하고, 끝나면 CPU에 알려 다음 작업을 지시 


다중프로그래밍

  • 한 시점에 여러 프로그램을 사용자 영역에 탑재 , 번갈아 가며 실행 
    - 시스템에 들어오는 모든 작업은 일단 작업 풀에 적재됨 
    - 작업풀 내의 작업은 운영체제의 정책에 따라 선택되어 메모리에 탑재 
  • 탑재된 작업 중 하나를 선택해 실행 
  • 실행하다 보면 궁극적으로 입출력이 발생 
    (키보드 입력을 기다리거나 출력이 끝나기를 기다리는 상태에 도달)
  • 한 프로그램이 입출력을 하는 동안 다른 프로그램을 선정해 CPU가 실행 
  • 스케쥴링이 일어나는 시점 : 수행 중이던 프로그램에서 입출력이 일어날 때에만 
  • 대부분 프로그램의 실행 시간에서 CPU의 사용 시간은 극히 일부분이고 나머지는 입출력 시간이다.
  • 한 프로세스의 입출력 시에 다른 프로세스를 처리할 수 있게 되므로, CPU가 항상 일을 하고 있게됨 → 효율적 
  • 디스크를 이용한 버퍼링과 스풀링으로 입출력과 CPU 수행의 중복 정도 ↑
    # 버퍼링 : 메모리 버퍼를 이용해 입출력과 CPU의 속도 차를 해소해 독립된 동작을 허용 
    # 스풀링 : 하나의 순차적 처리장치를 여러 프로세스가 디스크를 활용해 동시에 공유할 수 있도록 하는 기능 제공 

시분할시스템

  • 시분할 시스템의 핵심은 타임슬라이스
  • 타임슬라이스가 도래하면 무조건 스케쥴링을 시행 
  • 사용자와의 대화성을 증진시켜 결과적으로 효율성에 편의성까지 증진
  • 대화식 응용프로그램의 경우 CPU 사용 시간은 소량인 반면 빈번한 입출력 요구 
  • 시분할 시스템으로 이러한 빈번한 입출력이 가능하게 됨에 따라 대화성 증대 
  • 여러 사용자가 개인용 모니터를 통해 한 시스템에 동시에 연결해 동시 사용이 가능해짐 
    - 사용자가 마치 컴퓨터를 독점하고 있는 듯한 착각을 만들어줌 
  • 여러 프로그램의 동시 적재로 메모리 부족 야기 

실시간시스템

  • 프로그램의 동작에 엄격한 마감시간이 요구되는 분야가 있으며, 실시간 시스템은 이러한 요구를 만족 
  • 경성 실시간성
    : 데드라인 위반사건 발생 시 재앙적 사건이 발생 
    - 데드라인을 100% 준수한다는 것을 증명해야함 
  • 연성 실시간성 
    : 데드라인은 존재하지만 위반 시 재앙까지는 야기 x
    - 우선순위 제어로 해결하는 경향 

 

 

profile

DEVELOP

@JUNGY00N