이 글은 조성호 저자의 '쉽게 배우는 운영체제'를 기반으로 작성한 글입니다.

inflean의 공룡책 강의를 토대로 작성함.

운영체제 소개

운영체제의 정의

운영체제란?

  • 컴퓨터 전체를 관리 / 운영하는 소프트웨어로 모든 소프트웨어 위에 존재하는 최고 소프트웨어
  • 컴퓨터를 관리하기 위한 기본 규칙 / 절차 규정하여 컴퓨터 내의 모든 하드웨어와 응용 프로그램 관리
  • 사용자가 자원에 직접 접근하는 것을 막음으로써 컴퓨터 자원 보호. 이를 위해 응용 프로그램과 사용자에게서 모든 컴퓨터 자원을 숨김
  • 대신 사용자가 자원을 이용할 수 있는 다양한 인터페이스 (interface) 제공
  • 운영체제는 하드웨어의 도움 없이는 작동하기 어려우므로 소프트웨어와 하드웨어의 특성을 모두 갖춘 형태로 운영되며 이를 펌웨어(firmware)라 함

컴퓨터 구조와 운영체제

운영체제의 정의

  • 운영체제는 커널 (kernel)인터페이스(interface) 로 나뉨
  • 커널은 운영체제의 핵심 기능을 모아 놓은 것으로 모든 컴퓨터 자원을 관리
  • 사용자나 응용 프로그램은 커널을 통해서만 컴퓨터 자원에 접근 가능
  • 어떤 사용자나 응용 프로그램도 컴퓨터 자원에 직접 접근할 수 없음

운영체제의 역할

운영체제의 역할

  • 자원 관리
    • 컴퓨터 시스템 자원을 응용 프로그램에 나눠주어 사용자가 원활히 작업하게 함
    • 자원 요청한 프로그램이 여러 개면 적당한 순서로 자원 배분하고 적절한 시점에 자원 회수하여 다른 응용 프로그램에 나눠줌
  • 자원 보호
    • 비정상적 작업으로부터 컴퓨터 자원 보호
  • H/W 인터페이스 제공
    • 사용자가 복잡한 과정 없이 다양한 장치를 사용할 수 있게 하드웨어 인터페이스 제공
    • CPU, 메모리, 키보드, 마우스 같은 다양한 하드웨어를 일관된 방법으로 사용하도록 지원
  • User Interface 제공
    • 사용자가 운영체제를 편리하게 사용하도록 지원
      예) : 윈도우의 그래픽 사용자 인터페이스 ( GUI )

운영체제의 목표

운영체제의 목표

  • 효율성
    • 자원을 효율적으로 관리하는 것
    • 같은 자원으로 더 많은 작업량 처리하거나, 같은 작업량 처리하는 데 더 적은 자원 사용하는 것
  • 안정성
    • 작업을 안정적으로 처리하는 것
    • 사용자와 응용 프로그램의 안전 문제와 하드웨어적인 보안 문제 처리
    • 시스템에 문제 발생 시 이전으로 복구하는 결함 포용 기능 수행
  • 확장성
    • 다양한 시스템 자원을 컴퓨터에 추가 / 제거하기 편리한 것
  • 편리성
    • 사용자가 편리하게 작업할 수 있는 환경을 제공하는 것

운영체제의 발전

대화형 시스템

  • 키보드와 모니터가 등장하며 작업 중간에 입력, 중간 결과 값 확인 가능.
  • 중간 입력 값에 따라 작업의 흐름을 바꾸는 것도 가능
  • 컴퓨터와 사용자의 대화를 통해 작업이 이루어진다는 의미로 대화형 시스템 (interactive system)

시분할 시스템

멀티 프로그래밍

  • 하나의 CPU로 여러 작업을 동시에 실행하는 기술
  • 한 번에 하나의 작업만 가능한 일괄 작업 시스템에 비해 효율성이 뛰어남
  • 시간을 분할하는 방법 때문에 여러 작업이 동시에 실행되는 것 처럼 보임.
  • CPU 사용 시간을 아주 잘게 쪼개어 여러작업에 나누어줌
    • 멀티프로그래밍 시스템의 시간 분배

시분할 시스템

  • 시분할 시스템 (time sharing system)은 CPU 사용 시간을 잘게 쪼개어 여러 작업에 나눠줘서 모든 작업을 동시에 처리하는 것 처럼 보임
  • 잘게 나누어진 시간 한 조각을 타임 슬라이스 (time slice) 또는 타임 퀀텀 (time quantum)
  • 오늘날의 컴퓨터는 대부분 시분할 시스템 사용
  • 단점 : 여러 작업을 동시에 처리하기 위한 추가 작업이 필요
    • 많은 양의 작업이 공존할 경우, 중요한 작업이 일정 시간에 끝나는 것을 보장하지 못함
  • 특정 시스템에서 일정 시간 안에 작업이 처리되도록 보장하는 것이 실시간 시스템 (real-time system)
  • 실시간 시스템의 종류
    • 경성 실시간 시스템 (hard real-time system) : 지정한 응답 시간을 정확히 지키는 시스템으로 원자력 발전소의 원자로 온도 제어나 미사일 요격과 같은 작업에 이용

    • 연성 실시간 시스템 (sof real-time system) : 지정한 응답 시간을 최대한 지키지만 어느 정도 융통성이 허용된 시스템.

      • 동영상 재생기의 경우, 응답 시간 안에 작업이 처리되지 않으면 끊김 현상이 발생하지만, 치명적인 결과를 낳지 않음

분산 시스템

분산 시스템

  • 개인용 컴퓨터와 인터넷이 보급되면서 값이 싸고 크기가 작은 컴퓨터를 하나로 묶어서 대형 컴퓨터의 능력에 버금가게 만든 것이 분산 시스템 (distributed system)
  • 네트워크상에 분산되어 있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호교환 하도록 구성

클라이언트 / 서버 시스템

클라이언트 / 서버 시스템

  • 클라이언트 / 서버 시스템 (client / server system) 작업을 요청하는 클라이언트와 요청받은 작업을 처리하는 서버의 이중 구조
  • 웹 시스템이 보급된 이후 일반이들에게 알려짐
  • 문제점 : 모든 요청이 서버로 집중되어 서버 과부하 됨. 이를 피하려면 많은 서버와 큰 용량의 네트워크가 필요

P2P 시스템

P2P 시스템

  • 클라이언트 / 서버 구조의 단점인 서버 과부하를 해결하기 위해 만든 시스템
  • 서버를 거치지 않고 사용자와 사용자를 직접 연결
  • 냅스터 (mp3 공유 시스템) 에서 시작하여 현재는 메신저나 토렌트 시스템에서 사용

P2P 시스템의 예 : 메신저

  • 메신저는 사용자가 서버에서 인증을 마치면 상대방과 P2P로 직접 연결됨

서버가 없는 완전한 P2P 시스템 : 블록체인

  • 블록체인 (block chain)은 P2P 시스템 전체에 거래 장부를 분산시킨 뒤 전체 시스템의 50% 이상이 동의할 때만 거래 장부 변경 가능.
  • 현재의 컴퓨팅 기술로는 해킹이 불가능한 시스템
  • 대체 불가 토큰 또느 NFT (Non-Fungible-Token)로 불리는 디지털 자산의 유일성을 증명하는 데 블록체인 사용

클라우딩 컴퓨팅

클라우딩 컴퓨팅

  • 클라우드 컴퓨팅 (cloud computing)은 하드웨어와 소프트웨어를 클라우드라는 중앙 시스템에 숨기고 사용자는 필요한 서비스만 쉽게 이용하는 컴퓨터 환경
  • 클라우드 컴퓨팅의 하드웨어 구현에 그리드 컴퓨팅 기술 사용
  • 그리드 컴퓨팅은 슈퍼컴퓨터와 맞먹는 높은 수준의 컴퓨팅 파워를 제공하는 것, 클라우드 컴퓨팅은 서비스 중심의 환경이라는 것이 가장 큰 차이점

사물 인터넷

사물 인터넷 (Internet of Thing; IoT)

- 사물(thing)이 인터넷에 연결된 시스템을 사물 인터넷(Internet of Things; IoT)
- 다양한 사물이 센서와 통신 기능을 내장하여 스스로 통신하며 지능적인 서비스를 제공하는 기술
- 예) 자동차에 무선 인터넷이 연결되면서 소프트웨어 업그레이드나 설정 변경 등을 무선으로 배포하는데 이를 OTA(Over-The-Air)라 부름. 테슬라, 현대자동차 등에 사용

운영체제의 구성

커널과 인터페이스

커널

- 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것

인터페이스

- 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할
- 그래픽을 사용한 인터페이스를 GUI(Graphical User Interface)라 부름

시스템 호출과 디바이스 드라이버

시스템 호출

  • 커널이 자신을 보호하기 위해 만든 인터페이스
  • 커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단

직접 접근

  • 두 응용 프로그램이 자기 마음에 드는 위치에 데이터를 저장하려고 함
  • 다른 사람의 데이터를 지울 수도 있고 내 데이터가 다른 사람에 의해 지워질 수도 있음

시스템 호출을 통한 접근

  • 응용 프로그램이 직접 하드디스크에 데이터를 저장하지 않고 커널이 제공하는 write() 함수를 사용하여 데이터를 저장해달라고 요청
  • 커널이 데이터를 가져오거나 저장하는 것을 전적으로 책임지기 때문에 컴퓨터 자원 관리가 수월

시스템 호출 정리

  • 시스템 호출은 커널이 제공하는 시스템 자원의 사용과 연관된 함수
  • 응용 프로그램이 하드웨어 자원에 접근하거나 운영체제가 제공하는 서비스를
    이용하려 할 때는 시스템 호출을 사용해야 함
  • 운영체제는 커널이 제공하는 서비스를 시스템 호출로 제한하고 다른 방법으로 커널에 들어오지 못하게 막음으로서 컴퓨터 자원을 보호
  • 시스템 호출은 커널이 제공하는 서비스를 이용하기 위한 인터페이스이며, 사용자가 자발적으로 커널 영역에 진입할 수 있는 유일한 수단임
  • 시스템 호출과 유사한 용어로 응용 프로그램 인터페이스 (Application Programming Interface; API), 시스템 개발자용 키드 (System Developer's Kit; SDK)

디바이스 드라이버

  • 디바이스 드라이버 (device driver)는 커널과 하드웨어의 인터페이스를 담당하며 드라이버라고도 불림
  • 마우스와 같이 간단한 제품은 드라이버를 커널이 가지고 있으나, 그래픽카드와 같이 복잡한 하드웨어의 경우 제작자가 드라이버를 제공함

커널의 역할과 종류

커널

핵심 기능설명
프로세스 관리프로세스에 CPU를 배분하고 작업에 필요한 환경을 제공한다.
메모리 관리프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다.
파일 시스템 관리데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.
입출력 관리필요한 입력과 출력 서비스를 제공한다.
프로세스 간 통신 관리공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다.

단일형 구조 커널

  • 단일형 구조 (monolithic architecture) 커널은 초창기 운영체제의 구조
  • 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성
  • 장점
    • 모듈 간의 통신 비용이 줄어들어 효율적인 운영이 가능
  • 단점
    • 모든 모듈이 하나로 묶여 있기 때문에 버그나 오류를 처리하기가 어려움
    • 운영체제의 여러 기능이 서로 연결되어 있어 상호 의존성이 높기 때문에 기능상의 작은 결함이 시스템 전체로 확산될 수 있음
    • 다양한 환경의 시스템에 적용하기 어려움
    • 현대의 운영체제는 매우 크고 복잡하기 때문에 와넞ㄴ 단일형 구조의 운영체제를 구현하기가 어려움

계층형 구조 커널

  • 계층형 구조 (layered architecture) 커널은 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식

마이크로 구조 커널

  • 마이크로 구조 (micro architecture) 커널은 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공
  • 커널의 각 모듈은 세분화되어 존재하고 모듈 간의 정보 교환은 프로세스 간 통신을 이용하여 이루어짐

가상머신

가상머신

  • 운영체제와 응용 프로그램 사이에서 작동하는 프로그램
  • 가상머신 설치하면 응용 프로그램이 모두 동일 환경에서 작동하는 것처럼 보임
  • 자바는 유닉스와 윈도우에서 작동하는 다양한 가상머신을 만들어 배포하는데 이를 자바 가상머신 (Java Virtual Machine; JVM)이라고 함.

운영체제의 더 깊은 역사

유닉스와 리눅스

유닉스의 개발과 확산

  • 유닉스는 켄 톰프슨, 데이느 리치, 피터 뉴만이 만든 운영체제로 단순하다는 의미를 가짐
  • 유닉스는 이식하기 쉬웠던 탓에 인기를 얻게 됨
  • 개발 후 소스코드가 공개되어 계속 다른 기종의 컴퓨터에 이식되었으며, 여러 기업과 대학에서 이를 이용한 연구가 진행되어 다양한 기능이 추가 됨.

다양한 유닉스 버전의 개발

GNU와 리눅스

  • 1991년에 리누스 토르발스가 PC에서 동작하는 유닉스 호환 커널을 작성하여 GPL로 배포하고 이어서 소스코드도 공개한 것이 리눅스의 시작

profile
민성 개발블로그

0개의 댓글