관리 메뉴

공부 기록장 💻

[운영체제/OS] 01장 운영체제의 개요 본문

# CS Study/Opearing System

[운영체제/OS] 01장 운영체제의 개요

dream_for 2022. 8. 20. 20:07

01 운영체제의 개요

운영체제의 필요성

  • 프로그래밍이 가능한(programmable) 기계: 새로운 기능의 추가나 성능의 변경이 가능
  • 자원 관리(resource management)
    • 컴퓨터 자원(키보드, CPU, 메모리, 주변장치-하드디스크, 마우스, 사운드카드, 그래픽카드, 네트워크카드, 터치패드)에 사용자가 직접 접근하는 것을 막음으로써 자원을 보호하고 관리
      • 하드디스크의 특정 위치에 데이터를 저장할 수 없음
    • 운영체제가 다양한 인터페이스를 제공함으로써 컴퓨터 자원을 관리하고 보호
    • 응용 프로그램(워드 프로세서, 웹 브라우저, 채팅, 음악 재생 SW)에게 컴퓨터 자원을 골고루 배분하고 및 회수하고, 응용 프로그램이 활동할 수 있는 환경을 제공

 

운영체제의 정의

  • 운영체제: 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어
    • 응용 프로그램이나 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공하고 그 결과를 반환
    • 모든 컴퓨터 자원을 숨기고 정해진 방법으로만 컴퓨터 자원을 사용할 수 있도록 제한

 

 

운영체제의 역할과 목표

  1. 자원 관리 → 효율성
    • 컴퓨터 자원을 요청한 여러 응용 프로그램에게 적당한 순서로 자원을 배분하고 적절한 시점에 자원을 회수하여 나누어주는 역할
  2. 자원 보호 → 안전성
    • 백신 유틸리티 - 바이러스 검사, 디스크 조각 모음, 압축 프로그램 등 지원
  3. 하드웨어 인터페이스 제공 → 확장성
    • CPU, 메모리, 키보드, 마우스와 같은 다양한 HW를 일관된 방법으로 사용할 수 있도록 지원
    • 하드웨어 인터페이스가 자동으로 설치되게 함
      • 드라이버 설치: 하드웨어 장치와 상호작용하기 위해 만들어진 컴퓨터 프로그램으로, OS를 설치할 때 자동으로 설치
  4. 사용자 인터페이스 제공 → 편리성
    • GUI(그래픽 사용자 인터페이스) 제공

 

 


02 운영체제의 역사

  • 일괄 작업 시스템(batch job system) - 1950
    • 작업에 필요한 프로그램과 데이터를 동시에 입력해야 작업이 가능하며 작업의 최종 결과만 얻을 수 있음
    • 프로그램 실행 중간에 사용자가 데이터를 입력, 수정이 불가능
  • 대화형 시스템(interactive system) - 1960 초
    • 키보드와 모니터의 등장과 함께 프로그램 진행 도중 사용자로부터 입력 받아 입력값에 따른 작업의 흐름 변경 가능
    • 컴퓨터-사용자의 대화를 통해 작업이 이루어짐
  • 시분할 시스템(time sharing system, multitasking) - 1960 후
    • 다중 프로그래밍 기술 개발 - 하나의 CPU로 여러 작업을 동시에 실행하는 기술
    • 시분할 시스템 - CPU 사용 시간을 잘게 쪼개(타임 슬라이스-time slice, time quantum) 여러 작업에 분배하여 모든 작업이 동시에 처리되는 것처럼 보이는 시스템
    • 실시간 시스템(real-time system) - 중요한 특정 시스템에서 일정 시간 안에 작업이 처리되도록 보장하는 시스템
    • 다중 사용자 시스템: 하나의 컴퓨터에서 여러 명이 작업할 수 있도록 한 시스템
      • 멀티프로그래밍 수준(level of multiprogramming): 시분할 시스템에서 동시에 실행되는 작업의 개수
        • 일괄 작업 시스템의 멀티프로그래밍 수준: 1
  • 분산 시스템(distributed system) - 1970 후
    • 메인프래임 이후 개인용 컴퓨터와 인터넷(네트워킹시스템)의 보급 이후 등장
    • 네트워크 상에 분산되어 있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교환하도록 구성한 시스템
    • 모든 컴퓨터의 지위가 동일

  • 클라이언트/서버 시스템 - 1990~
    • 클라이언트: 작업 요청, 서버: 요청받은 작업을 처리하여 응답
    • 웹 시스템 등장
    • 문제점: 서버 과부화 - 모든 요청이 서버로 집중되는 현상
      • 데몬(daemon): 서버가 멈추지 않고 계속 작동하여 클라이언트의 요청을 처리하도록 하는 프로그램
        • 서버: 데몬을 가진 컴퓨터
        • 웹 데몬이 설치된 컴퓨터: 웹서버
        • ex) 아파치 톰캣, IIS

  • P2P 시스템(Peer to peer system) - 2000~
    • 서버 부하를 줄일 수 있는 새로운 시스템으로 도입
    • 서버를 거치지 않고 사용자와 사용자를 직접 연결
    • ex) 메신저
      • 수만명이 동시에 채팅을 하고 파일을 주고받는 메신저 시스템은 P2P 기술을 이용해 서버 부하 없이 구현
    • ex) 서버가 없는 P2P 시스템의 파일 공유 (비트코인의 블록체인)
      • 은행 DB의 장부에 기록 X
      • P2P 시스템 전체에 거래 장부를 분산시켜 장부의 조작이나 유실이 거래에 영향을 미치지 않도록 함
  • 그리드 컴퓨팅
    • 필요한 컴퓨팅 자원을 구매하여 사용하는 분산 시스템 분야의 컴퓨팅 환경
    • 서로 다른 기종의 컴퓨터들을 묶어 대용량의 컴퓨터 풀을 구성하여, 원격지와 연결하여 대용량 연산을 수행하는 컴퓨팅 환경
    • ex) 웹 하드 서비스
      • 데이터 전송 시 대용량 데이터 P2P 시스템 기술 사용
    • ex) SaaS(Software as a Service)
      • 사용자가 필요할 때 소프트웨어 기능을 이용하고 그만큼만 비용을 지불하는 개념
      • 필요한 기능을 모아 서버에서 실행하고 인터넷을 통해 필요한 서비스만 제공받으며 월별로 혹은 서비스 이용량 만큼 비용을 지불
  • 클라우드 컴퓨팅
    • 그리드 컴퓨팅과 SaaS를 합쳐놓은 형태
  • 사물 인터넷
    • 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술

 

 


03 운영체제의 구조

1. 커널과 인터페이스

  • 커널(Kernel): 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것
    • ex) C프로그래밍의 메모리 동적 할당(메모리의 물리적인 공간을 사용-malloc, calloc)
  • 인터페이스(interface): 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할
    • 셸(shell): 유닉스의 사용자 인터페이스(명령 프롬프트 창)
  • OS는 커널과 인터페이스를 분리하여 같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작이 가능하다. (유닉스의 UI는 셸(명령어 기반)을 사용, Mac OS X는 GUI)

 

2. 시스템 호출과 드라이버

시스템 호출(System Call)

  • 커널이 자신을 보호하기 위해 만든 인터페이스
  • 사용자, 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단하므로, 자원 이용(CPU. 메모리 리소스 사용)을 위해서는 시스템 호출을 통해 작업을 요청하고 결과를 반환 받음
  • 응용 프로그램이 HW자원에 접근하거나 OS가 제공하는 서비스를 이용하려 할 때는 시스템 호출을 사용해야 함
    • → System programming, 임베디드 소프트웨어와 관련이 있음
  • 직접 접근(메모리 주소에 직접 접근하여 데이터를 저장)하여 데이터를 왜곡, 오염 시킬 수 있는 상황을 막아 System Call을 통해 커널이 데이터를 가져오거나 저장하는 것을 전적으로 책임지고 제어함

  • 시스템 호출: 커널이 제공하는 시스템 자원의 사용과 연관된 함수
    • ex) write() 함수를 사용해 데이터를 저장하도록 요청, read() 함수로 데이터를 읽어 들임
    • ex) C언어에서의 printf()

 

드라이버

  • 커널 ↔ 하드웨어의 인터페이스를 담당, 하드웨어를 제어하는 일종의 인터페이스
    • 커널은 입출력의 기본적인 부분만 제작, 하드웨어의 특성을 반영한 SW(디바이스 드라이버)를 HW 제작사에게 받아 커널이 실행될 때 함께 실행되도록 함
    • ex) 마우스, 키보드와 같은 단순한 디바이스 드라이버는 커널에 포함
    • ex) 그래픽카드, 프린터와 같이 복잡한 디바이스 드라이버는 사용자가 직접 설치 필요
  • ex) 프린터 드라이버: 응용프로그램으로부터 인쇄 명령을 받아 커널이 명령을 받아 프린터기를 제어하는 드라이버에 전달
  • 커널이 제공하는 드라이버도 있고, 하드웨어 제작사가 제공하여 설치해야 하는 드라이버도 있음

 


3. 커널의 구성

  • 커널: 운영 체제의 핵심 기능을 모아 놓은 것

 

커널의 역할

 

1. 프로세스 관리

  • 프로세스: 메모리에 instance된 프로그램
  • 프로세스 간의 동기화 실패 시, Deadlock이라는 현상 발생
  • CPU Scheduling: 누가 CPU를 사용할 것인가

2. 프로세스 간 통신 관리(IPC, Inter-Process Communication)

  • 멀티 프로세스
    • ex) 카카오톡 - 파일을 다운로드 받으면서도 다른 친구와 채팅을 가능케 하는 것

3. 파일 시스템 관리

  • 어떤 방식으로 데이터를 저장할 것인가?

4. 출력 관리

  • 입출력 제어기: 외부 HW 디바이스와의 독립적인 연결 허용

 

 

커널의 구조

  • 커널의 핵심 기능들은 유기적으로 복잡하게 얽혀 있는데, 이러한 기능을 어떻게 구현하는가에 따라 단일형 구조 커널, 계층형 구조 커널, 마이크로 구조 커널로 구분됨

 

1. 단일형 구조 (monolithic architecture) 커널

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

 

 

 

2. 계층형 구조(layered architecture) 커널

  • 비슷한 기능을 가진 모듈을 묶어 하나의 계층으로 만들고, 계층 간의 통신을 통해 OS를 구현하는 방식

  • 비슷한 기능을 모아 모듈화 했기 때문에 버그나 오류를 쉽게 처리할 수 있고, 오류 발생 시 해당 계층만 따로 수정하면 되기 때문에 디버깅하기도 쉬움
  • ms-windows를 포함해 오늘날의 OS의 대부분의 구조

 

3. 마이크로 구조(micro architecture) 커널

  • 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공
  • 운영체제의 많은 부분이 사용자 영역에 구현되어 있음

  • 커널이 메모리 관리, 프로세스 간의 동기화 서비스를 제공하고, 메모리 관리자와 동기화 모듈은 프로세스 간 통신 모듈로 연결되어 있음
    • 커널의 각 모듈은 세분화되어 존재하고 모듈 간의 정보 교환은 프로세스 간 통신을 이용하여 이루어짐
  • 각 모듈이 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 OS가 멈추지 않고, 많은 컴퓨터에 이식이 쉽고 커널이 가벼워 CPU 용량이 작은 시스템에도 적용 가능

 

4. 가상 머신(Virtual Machine)

  • OS와 응용 프로그램 사이에서 작동하는 프로그램
  • VM을 설치하면 응용 프로그램이 모두 동일한 환경에서 작동하는 것처럼 보임 (사물인터넷 IOT에서 활용됨)
  • 자바 - 유닉스와 윈도우에서 작동하는 다양한 VM을 만들어 배포하는데 이를 JVM이라고 함 (일종의 Middleware)

728x90
반응형
Comments