운영체제 정리 (2)

2021년 08월 08일
제작기간 2021년 8월 8일 ~ 2021년 8월 8일
태그 CS

2-1. 운영체제의 개념

운영체제는 사용자가 응용 프로그램을 실행할 수 있는 기반 환경을 제공하여 컴퓨터를 편리하게 사용할 수 있도록 도와주고, 하드웨어를 효율적으로 사용할 수 있도록 다양한 기능을 제공하는 소프트웨어이다.

소프트웨어

  • 시스템 소프트웨어: 자원을 관리. 응용 프로그램 실행을 지원.
  • 유틸리티: 응용 프로그램보다 작은 프로그램. 컴퓨터 처리 과정 보조.
  • 응용프로그램:특정 작업을 수행하기 위한 프로그램.

운영체제의 역할

  1. 조정자
    • 하드웨어와 소프트웨어, 데이터를 제어
    • 작업을 할 수 있는 환경을 제공
  2. 자원 할당자/관리자
    • 각 응용 프로그램에 필요한 자원을 할당
  3. 응용 프로그램과 입출력 제어자
    • 하드웨어 사용 조정
    • 응용 프로그램 실행 제어
    • 입출력장치 동작, 통제
  • 커널: 시스템 호출, 인터럽트에 응답. 운영체제에 상시 머물기 때문에 작을 수록 좋음.

2-2. 운영체제의 기능

자원 관리, 시스템 관리로 분류.

자원 관리

  1. 메모리 관리
    • 메인 메모리 관리
    • 프로세서가 직접 주소로 지정할 수 있는 메모리
    • 명령어는 메인 메모리에 있어야 수행 가능 → 프로그램을 절대 주소로 저장해야 함
    • 운영체제는 메모리에 저장할 프로세스 결정
    • 보조기억장치 관리
    • 대부분의 응용 프로그램은 용량 문제로, 메인 메모리에 적재되기 전엔 보조기억장치에 저장됨
    • 운영체제는 메모리 접근 요청을 스케줄링 함
  2. 프로세스 관리
    • 프로세스는 실행 중인 프로그램
    • 프로세스는 자원이 있어야 업무를 수행할 수 있음
    • 시스템 = 운영체제 프로세스 + 사용자 프로세스
    • 모든 process는 processor를 분할하여 병행 수행 가능
    • 운영체제는 프로세스와 스레드를 스케줄링, 프로세스 생성과 제거
  3. 주변장치 관리
    • buffer-caching 시스템 기능 제공
  4. 파일(file/data) 관리
    • 파일 위치 저장, 검색 관리

시스템 관리

  1. 시스템 보호
  2. 네트워킹
  3. 명령 해석기 (command interpreter)

용어 정리

  1. buffering
    • 프로세서와 입출력장치의 속도 차이로 인한 유휴시간을 없애기 위해, 입출력장치별로 입출력 버퍼를 둠
    • 프로세서가 연산을 할 때 동시에 다른 작업을 입출력 할 수 있음
  2. Spooling
    • 속도가 빠른 디스크를 버퍼처럼 사용
    • 프로세서에 일정한 디스크 공간과 테이블이 있어야 함
    • 버퍼링 스풀링
      버퍼(하드웨어)를 사용 별개의 오프라인 장치 사용
      하나의 입출력 + 그에 대한 계산 여러 작업의 입출력과 계산
  3. 클라우드 컴퓨팅
    • 자원, 스토리지, 소프트웨어를 서버 가상화 기술을 이용하여 제공
    • Grid computing의 분산 컴퓨팅, Utility computing의 과금 모델, Server based computing의 처리 모델을 적용
    • IaaS: Infrastructure as a Service. 데이터 센터에 있는 서버, 스토리지, 네트워크 등의 인프라와 자원을 가상화하여 제공
    • PaaS: Platform … 통합 개발환경을 웹으로 제공
    • SaaS: Software … 특정 소프트웨어를 인터넷으로 제공

2-3. 운영체제의 유형

  1. 일괄 처리 시스템
  2. 다중 프로그래밍 시스템
    • 여러 프로그램을 메모리에 나눠 적재 후, 프로세서를 번갈아 할당
    • 프로세서가 유휴 상태일 때 실행 중인 작업이 프로세서를 전환
    • 프로세서 사용 극대화 + 여러 프로그램 동시 실행
  3. 다중 처리 시스템 (multiprocessing)
    • 둘 이상의 프로세서를 이용해 동시에 둘 이상의 프로세스 지원
    • 신뢰성 높음
    • 주종적 구성 or 대칭적 구성
  4. 시분할 시스템 (Time Sharing System)
    • 다중 프로그래밍 + 프로세서 스케줄링
    • 일정한 프로세서 사용 시간 할당
  5. 실시간 처리 시스템 (real time processing system)
    • 즉각 응답
    • 경성(hard): 시간 제약 어기면 치명적
    • 연성(soft): 시간 제약이 있지만 강제적X (ex. 동영상 재생)
  6. 분산 처리 시스템 (distributed precessing system)
    • 시스템마다 독립적으로 운영, 필요할 때 통신

2-4. 운영체제의 서비스

  1. 부팅 서비스
    • booting: 운영체제를 메인 메모리에 적재하는 과정
  2. 사용자 서비스
    • 프로그래머의 쉬운 작업을 위함
    • 인터페이스 제공 (CLI, 메뉴 인터페이스, GUI)
    • 프로그램 실행: 메모리에 적재 + 프로세서 시간 할당
    • 입출력 동작 수행
    • 파일 시스템 조작: 디스크에 저장 시, 특정 블록에 할당
    • 통신, 오류 탐지
  3. 시스템 서비스
    • 자원 할당, 계정, 보호와 보안
  4. 시스템 호출 (system call)
    • API (Application Programming Interfaces)형태로 제공됨
    • 시스템 호출을 통해 OS 기능을 제공 받음
    • 핵심 커널 서비스와 통신, 프로세스 생성과 실행, 하드웨어 관련 서비스가 존재
    • 프로그램의 명령이나 서브 루틴의 호툴 or command interpreter 사용

2-5. 운영체제의 구조

  1. 단일(Monolithic) 구조 운영체제
    • OS의 모든 기능을 커널과 동일한 메모리에 적재 후 System call로 사용
    • ex) 도스, 초기 유닉스
    • 대부분의 기능을 커널에 그룹화해서 구현
    • 장점: 자원 관리가 효율적
    • 단점: 커널 크기가 커지면서 오류 수정 힘듦, 유지 보수 어려움, 동일 메모리이기 때문에 신뢰성 낮음
  2. 계층 구조 운영체제
    • 하드웨어 프로세서 스케줄링 메모리 관리 메시지 해석기 IO 관리 사용자 인터페이스
    • 장점: 모듈화가 잘 되어 있음 (유지 보수, 설계가 편함)
    • 단점: 인접한 계층으로 데이터 전달할 때 마다, system call이 발생하여 느림
  3. micro-kernel 구조 운영체제
    • 커널에 최소 기능만 남기고 축소
    • 커널의 기타 기능은 사용자 공간으로 이동
    • 하드웨어 초기화, 메모리 관리, 프로세스 관리와 통신, 동기화 (프로세스 간 협력)등의 기본 기능만 실행
    • 남은 대부분의 운영체제 구성 요소는 커널 외부(사용자 영역)에서 구현
    • OS 서비스를 사용자 영역의 독립적인 서버에서 수행 → 서로 악영향 X, 개발 용이, OS 기능 변경 쉬움
    • 장점: 모듈화 정도가 높음 → 확장성, 이식성, 규모 확장성이 높음
    • 단점: 모듈 간 통신이 많아 성능 저하