[운영체제] 운영체제의 전반적인 기초지식


운영체제 개념

  • Computer Hardware(CPU,I/O)를 관리해주면서 동시에 여러 application들이 작동할 수 있는 환경을 제공해주는 Software
  • HW를 사용할 수 있도록 기능 제공
  • HW & 사용자, 응용프로그램 & 시스템프로그램 사이에서 인터페이스 제공
  • 응용프로그램을 제어
  • 컴퓨터 시스템을 보호하려고 입출력을 제어하고 데이터를 관리, 시스템 오류 예방
  • 처리량 향상, 지연 및 응답시간 단축, 신뢰도 향상, 사용 가능도 향상

운영체제 기능

  • 자원관리(메모리, 프로세스, 입출력장치, 파일/데이터)
  • 시스템관리
    • 시스템보호 : 프로그램, 프로세스, 사용자의 접근을 제어하는 것. 주로 동시에 실행되는 것들이 많아서 서로의 영역을 침범하지 않도록 관리가 필요
    • 네트워크 통신
    • 명령해석기 : 사용자나 프로그램이 대화형으로 입력한 명령어를 이해하고 실행

운영체제 유형

일괄처리시스템 (Batch Processing System)

- 일정량이 될때까지 모아서 한번에 작업을 처리함
- 우선순위를 주기 어려움
- 프로세서와 메인 메모리의 활용도가 떨어짐

- 버퍼링 Buffering : 프로세서와 입출력장치의 속도차이를 줄이기 위해 RAM에 시스템 입출력 버퍼를 둔다. 프로세서에서 연산을 할 때 동시에 다른 작업을 입출력하는 방법

- 스풀링 Spooling : 보조기억장치를 큰 버퍼처럼 사용해 프로세서와 입출력장치의 속도차이를 줄이는 방법. 프린터 출력작업이 대표적이다. 프로세서에 일정한 디스크 공간과 테이블만 있으면 작업을 중복하여 처리 할 수 있음. https://ko.wikipedia.org/wiki/스풀링

다중 프로그래밍시스템 (Multi-Programming System)

- 여러 프로그램을 메모리에 적재하고 A작업이 입출력 동작등으로 프로세서를 사용하지 않을때 B작업이 프로세서를 사용함
- 메모리 관리가 복잡하다.
- 인터럽트 : 프로세스가 수행 중에 다른 프로세스를 수행하기 위해 현재 프로세스를 중단하거나 외부 입력장치에 의해 프로세스가 중단되는 상태
- Job Scheduling : 디스크에 있는 job pool에서 작업을 선택하여 메모리로 옮기는 것
- CPU Scheduling : 실행중인 작업이 대기상태가 되었을때 메모리에 있는 작업 중 하나를 선택하여 CPU에 할당하는 것

실시간 처리 시스템 (Real Time Processing System)

- 필요한 계산처리를 즉석에서 바로 처리하고 결과를 보낸다.
- 처리시간이 단축되고 비용이 절감된다.
- 우주선, 교통제어, 레이더 추척기, 핵실험 등등 제한을 두고 수행되어야 하는 작업에 주로 사용된다.

시분할 시스템 (Time Sharing System)

- 여러 사용자에게 짧은 간격으로 프로세서를 번갈아가며 할당한다.
- 신뢰성과 보안에 문제가 생길 수 있음
- 많은 프로세스를 동시에 수행하기 위해 디스크를 주기억장치의 보조저장장치로 활용하며 가장 널리 사용되는 기법은 virtual memory이다.
- 라운드 로빈(Round Robin)방식 이라고도 함

분산 처리 시스템 (Distributed Processing System)

- 분산된 데이터 저장소와 cpu들을 네트워크로 연결하여 통신하면서 동시에 일을 처리한다.
- 한대의 대형 컴퓨터가 아닌 여러대의 컴퓨터로 계산을 수행한다.

다중처리 시스템 (Multi-Processing System)

- 컴퓨터 버스, 클럭, 메모리 등을 공유하는 둘 이상의 프로세서를 사용
- 신뢰성 증가, 결함허용(fault tolerance)에 유리 - 하나가 망가져도 다른 하나가 작동할수 있기 때문
- 우아한 성능 저하(graceful degradation)

운영체제 구조

단일구조 Monolithic

- 초기의 모습
- 모든 기능을 커널과 동일한 메모리 공간에 적재, 시스템 호출로만 사용가능함
- 커널을 그룹화 해서 구현하기 때문에  직접 통신으로 시스템 자원을 효율적으로 관리 가능
- 커널의 크기가 상대적으로 커지면서 수정 및 유지보수가 어렵다
- ex) 도스, 초기 Unix

계층구조

- 프로세스의 요청을 수행할때 계층을 거쳐야 한다. 시스템 호출이 여러번 일어 날 수 있다. 단일구조보다는 성능이 떨어진다.
- 모듈화로 인해 시스템  검증과 유지보수가 쉽다.
- 계층을 정의, 설계할때 신중해야 한다.

마이크로 커널 구조

- 커널의 기능을 축소하고 최소한의 기능만을 남김.
- 나머지 많은 기능을 사용자 영역의 서버로 구현. 이때 서버는 사용자에게 서비스를 제공하는 모든 프로그램을 말한다.
- 모듈화 정도가 높다. 단 모듈 간 통신이 빈번하게 발생하여 성능이 떨어 질 수 있다. (요즘은 HW기술이 발달해서 거의 없다고 봐도 무방하다.)
- 확장이 쉽다. 커널이 작아서 새로운 HW의 이식이 쉽다.
- ex) Mach, Mac OS X, Windows NT

커널이란? (Kernel)

운영체제도 OSI 7layer처럼 계층구조이며 5계층으로 이루어져있다. 프로세서 관리 -> 메모리 관리 -> 프로세스 관리 -> 주변장치 관리 -> 파일 관리 . 운영체제의 가장 핵심적인 역할을 하는 부분이 Kernel인데 이 5계층이 커널에 포함된다. 컴퓨터를 통제하는 하나의 핵심 프로그램이다.

개인용 컴퓨터 운영체제

  • Windows : 사용자 편의에 맞춤/ 네트워크 과부하를 감당하지 못함/ 서버용으로 쓰면 매우 고가/ GUI/
  • Linux : 오픈소스/ 리누스 토발즈/ 네트워크가 과부하 상태에서 최적화된 성능을 보이지 않지만 서버 OS로 적당함/ 실시간 처리가 약함/ 시스템 보안에 취약
  • Mac OS

모바일 운영체제

  • Android OS : 구글에서 안드로이드사를 인수/ 리눅스 기반/
  • iOS : 보안/ 인터페이스/ iCloud서비스 제공
  • Windows Phone : 데이터 갱신주기가 30분/ 엑스박스 기능/ Live타일

의문점들

  • linux를 서버로 쓰면 왜 취약하지?
    • https://www.zdnet.co.kr/view/?no=20170606131340
    • sudo와 관련된 보안 취약점이 있었다.

참고

태양정복 스터디 발표자 최OO ppt

https://dev-ahn.tistory.com/13 운영체제 - 기초

https://m.blog.naver.com/bestheroz/66535621 운영체제의 역사(일괄처리, 시분할, 병렬처리, 분산처리, 실시간처리등..)

https://coding-factory.tistory.com/301 [OS] 다양한 운영체제의 운용기법 종류

https://computechlog.blogspot.com/2017/03/operating-system3_14.html operating system(3) - 운영체제의 구조

https://m.blog.naver.com/PostView.nhn?blogId=jwisedom&logNo=220790829583&proxyReferer=https%3A%2F%2Fwww.google.com%2F 운영체제 5계층 구조






© 2019.04. by h-dyeon

Powered by theorydb