어제의 나보다 성장한 오늘의 나

운영체제의 개요 본문

CS/운영체제

운영체제의 개요

NineOne 2021. 4. 21. 01:16

1. 운영체제의 개념

1-1 운영체제의 정의

  • 컴퓨터를 시스템의 각종 하드웨어적인 자원과 소프트웨어적인 자원을 효율적으로 운영, 관리함으로써 사용자가 시스템을 이용하는데 편리함을 제공하는 시스템 소프트웨어이다.
  • 운영체제는 소프트웨어이며 여러가지 프로그램을 가지고 있으며 사용자가 컴퓨터 사용을 쉽게 하도록 도와주는 역할을 한다.

1-2 운영체제의 목적

  • 사용자 측면 : 사용자가 프로그램을 편리하고 효율적으로 수행할 수 있는 GUI 인터페이스 환경 제공
  • 시스템 측면 
    • 처리 능력(throughput) 증대 : 주어진 시간 내에서 컴퓨터 시스템이 처리할 수 있는 작업의 양
    • 응답 시간(turn-around-time) 단축 : 특정 작업이 시작되어 종료될때까지의 사용 시간
    • 사용 가능도(availability) 증대 : 컴퓨터 시스템 내의 한정된 자원을 신속하고 충분히 지원해줄 수 있는 정도
    • 신뢰도(reliability) 향상 : 사용 도중 발생하는 내부, 외부적인 오류 없이 정확하게 동작 가능

1-3 운영체제의 역할

  • 사용자와 시스템간의 인터페이스 정의
  • 사용자들 간 하드웨어 및 자원 공동 사용
  • 자원의 효과적인 운영을 위한 스케줄링
  • 입출력에 대한 보조 역할
  • 오류 처리 수행
  • 병렬 수행을 위한 편의 제공
  • 보안 및 동신 관리

 

2. 운영체제의 종류

  • 싱글 태스킹 운영 체제 : 하나의 프로그램만 실행할 수 있는 운영체제
  • 멀티태스킹 운영 체제 : 하나 이상의 프로그램이 동시에 실행할 수 있는 운영 체제 ( 시분할을 통해 가능 )
  • 단일 사용자 운영 체제 : 사용자 구별이 없으나 여러 프로그램이 나란히 실행하는 것은 허용
  • 다중 사용자 운영 체제 : 멀티태스킹의 기본 개념을 확장하며, 여러 사용자가 동시에 시스템과 상호 작용할 수 있게 한다.
  • 분산 운영 체제 : 분산된 컴퓨터 그룹을 관리하여 하나의 컴퓨터인 것처럼 보이게 해 준다. 하나의 그룹에 속하는 컴퓨터들이 협업을 할 때 분산 시스템을 형성한다.
  • 판형 운영 체제 : 가상화와 클라우드 컴퓨팅 관리에 사용되며, 데이터 웨어하우스 환경에서 흔히 볼 수 있다.
  • 임베디드 운영 체제 : 임베디드 컴퓨터 시스템에서 사용할 수 있게 설계된 운영체제
  • 실시간 운영 체제 : 특정한 짧은 시간 내에 이벤트나 데이터의 처리를 보증하는 운영체제, 싱글 태스킹일 수도 있고, 멀티태스킹일 수도 있으며 멀티태스킹의 경우 특수한 스케줄링 알고리즘을 사용

 

3. 운영체제의 기능

3-1 사용자 인터페이스

  • CLI(Command line interface) : 특수한 프로그램인 셸(Shell)이라는 것이 존재하며, 셸은 조개껍데기란 의미를 가지는데 즉, 내부에 커널을 감싸고 있고 사용자 및 응용프로그램이 셸을 이용해 커널을 제어
  • GUI(Graphical user interface) : 직접 명령어를 입력하는 CLI 방식이 아닌 마우스를 이용해 메뉴 시스템 (=아이콘)을 사용. 직관적이고 쉽다는 것이 장점! 윈도가 성장하게 된 결정적인 계기

3-2 I/O 연산

  • 1단계 - CPU에서 유저프로세스 실행 중이며, I/O는 요청 -> 전송 -> 전송완료되면 인터럽트를 발생시킨다.
  • 2단계 - 인터럽트가 발생하면 CPU는 하던일을 그만두고 저장한 다음 인터럽트 서비스 루틴을 실행한다.
  • 3단계 - 처리가 긑나면 다시 하던 일을 재개한다.

3-3 시스템 콜 (System Call)

사용자가 운영체제 내부로 서비스를 받기 위해 안으로 들어가는 절차. 사용자 프로그램이 하기 어려운 일을 운영체제에게 부탁하기 위해 시스템 콜을 호출한다.

  • 운영체제가 제공하는 서비스 프로그램의 인터페이스
  • c, c++과 같은 고급언어로 주로 개발
  • 대부분의 프로그램은 API를 써서 시스템 콜을 호출
  • win32 api, posix API, JAVA API 등이 존재한다. 

Copy라는 명령에 대해 시스템이 어떻게 동작하는지 알아보자!

  1. 입력 파일 이름과 출력 파일 이름을 획득
  2. 입력 파일을 연다. (단, 입력파일이 없으면 비정상 종료)
  3. 출력 파일 생성(단, 출력 파일이 이미 존재하는 경우 중단시키거나 삭제한 후 새로운 파일을 생성하거나, 대체하는 등의 동작을 수행)
  4. 반복문 실행(입력파일로 읽고 출력 파일에다가 씀)
  5. 반복문이 끝나면 출력파일 닫고 완료 메시지를 출력
  6. 정상 종료

Copy 명령어 하나가 엄청 많은 system call로 이루어져 있다는 사실!

3-4 프로세스 제어(수행)

  • 프로세스를 생성하고 CPU에 할당하고 제어하는 과정을 스케줄링이라고 한다.
  • 운영체제마다 스케줄링 기법이 다르며 자세하게 보도록 한다! 여기서는 생략

3-5 시스템 서비스(시스템 프로그램)

  • 운영체제는 알려진 프로그램의 개발과 실행을 위해 좀 더 편리한 환경을 구축하도록 도움을 주는 시스템 유틸리티(System Utility) 즉! 시스템 프로그램을 제공한다.
  • 윈도의 메모장, 그림판, 계산기 등이 운영체제 안에 포함된 시스템 프로그램이라고 볼 수 있다.

3-6 그외

  • 파일 관리, 장치 관리, 정보 유지, 통신, 보호 등

커널(kernel)

  • 커널(kernel)은 핵이란 이름대로 운영 체제에서 가장 핵심이 되는 프로그램이다.
  • 안드로이드를 리눅스로 취급하는 이유가 바로 이 때문이다. 안드로이드의 커널이 바로 리눅스 커널이기 때문.
  • 커널은 드라이버를 이용해서 CPU나 그래픽카드와 같은 하드웨어를 제어하고 여러 응용프로그램들이 갖가지 다른 하드웨어 위에서 돌아가도록 호환성을 보장하기 위해 API를 제공한다.
  • 예를 들면 웹 브라우저가 화면에 점을 찍고 싶다면 커널에서 제공하는 점을 찍는 함수를 호출하고, 커널이 드라이버를 참조해서 그래픽카드에 명령해 점을 찍는 것이다.

쉘(shell)

  • 사용자 입장에서 가장 크게 느껴지는 프로그램은 쉘(shell)이다.
  • 리눅스에서는 bash, bsh, csh와 같은 프로그램들이 해당되고, 윈도에서는 cmd.exe(CLI)가 이에 해당된다.
  • 사용자가 입력한 명령어를 해석하여 커널에게 보내면 커널이 수행하고 그 결과를 전송해서 다시 쉘을 통해 사용자에게 보여준다.

 

출처

Comments