운영체제의 소개

이정민·2022년 4월 12일
0

운영체제

목록 보기
1/12

운영체제의 역할

운영체제(Operating System, OS)

  • 자원 관리를 하는 소프트웨어 (resource manager)

  • 자원 (resource)
    - 하드웨어: 프로세서, 메모리, 입출력장치, 통신장치
    - 소프트웨어

  • 효율적이고 공평한 자원 사용을 위해 상충되는 자원 요구 조정

  • 사용자/응용프로그램과 하드웨어 간 인터페이스

운영체제의 발전 과정

1940년대

  • 초창기 컴퓨터에는 운영체제 부재

1950년대

  • 한 번에 한 개의 job 실행
  • job간의 전환을 용이하게 하는 기술 도입
  • 일괄처리 시스템(batch processing system)
    - 프로그램과 데이터를 tape으로 연속으로 공급

1960년대

  • 일괄처리 시스템 사용

  • 다중 프로그래밍(mutiprogramming) 지원
    -한번에 여러 작업(프로그램) 처리
    -다른 작업들이 주변장치를 사용하는 동안, 한개의 job만 프로세서 이용

  • 시분할 시스템
    -많은 동시 대화형 사용자 지원
    -소요 시간이 수 초 ~ 수십 초 단위로 축소
    - job 제출에서 결과 반환까지 걸리는 시간

  • 실시간 시스템
    - 지정된 시간 내에 결과를 제공해야 하는 시스템

  • 가상 메모리
    - 실제 존재하는 메모리 공간보다 더 많은 메모리가 있는 것처럼 메모리를 사용하는 방법

  • IBM System/360 메인프레임 컴퓨터 출시: 1964
    - 많은 산업계 표준 도출
    - 8-bit byte addressing
    - 32-bit word
    - IBM Floating Point Architecture

  • 운영체제

    • OS/360(초기 모델: 단일 일괄처리 OS, 다중 프로그래밍 지원)
    • CP-67 (나중 모델: 시분할 OS, 가상메모리 지원)
  • 여러 시분할 운영체제 개발

  • CTSS(Compatible Time-Sharing System)
    - MIT에서 개발한 초기 시분할 시스템

  • Multics
    - MIT에서 CTSS 후속으로 개발

    • 계층적 파일시스템, 다양한 command line shell 명령어 지원
    • 가상 메모리 지원
  • Unix
    - Bell Labs에서 Ken Thompson, Dennis Ritchie 개발, 1969
    -개발언어로 C 개발

    • Multics의 영향을 많이 받은 설계
  • 1970년대

  • 다중 모드 시분할 시스템
    -일괄처리, 시분할, 실시간 응용 프로그램 실행 지원

  • 개인용 컴퓨터 개발 환경 조성
    - 마이크로프로세서 개발 초기 단계

  • TCP/IP

    • 미 국방성 개발
    • 군사 및 대학 연결망으로 광범위하게 사용
    • 표준 통신 프로토콜의 하나로 발전
    • 보안 문제 노출
      - 취약한 통신선을 통해 데이터 전달
       
  • 1980년대
    - PC 및 워크스테이션의 시대
    - 필요에 따라 컴퓨팅 지원
    - GUI 지원에 따라 컴퓨터 활용 용이
    - 네트워크를 통한 정보 전달 일반화

  • Client-Server 컴퓨팅 모델 확산

    • 클라이언트: 서비스 요청
    • 서버: 요청 서비스 처리
  • 소프트웨어 공학 분야 발전

    • 1968년 소프트웨어 공학 용어 처음 사용
    • 소프트웨어의 개발,운용,유지보수 등의 생명 주기 전반을 체계적이고 규범적이며 정량적으로 다루는 학문
    • 미국 정부가 국방성 소프트웨어 프로젝트의 관리를 위해 적극지원
      - 코드 재사용
      - 프로그래밍 언어에서 추상화 수준 향상
      - 독립적으로 수행되는 다중 쓰레드
        
  • 1990년대
    - 하드웨어 성능의 기하급수적 향상

    • 처리 성능 및 저장장치 가격 하락
      - PC에서 대규모 복잡한 프로그램 실행
      - 큰 규모의 데이터베이스 및 처리 작업 가능 저렴한 컴퓨터
      - 메인프레임 컴퓨터 필요성 축소
    • 분산 처리 수요 증가
  • Moore의 법칙

    • Intel 공동 창업자 Gordon E. Moore (1965)
    • 반도체 집적회로의 성능이 18개월마다 2배로 증가
      • 2013년 이후 매 3년에 2배 추이 예측
  • 황의 법칙

    • 삼성전자 기술총괄 사장 황창규 주장(2002)
    • 메모리 반도체 집적도 1년에 2배 증가
      • 2008년 128GB NAND 플래시 메모리 발표 실패
  • 운영체제의 사용 편의성 증가
    • GUI 기본 제공
    • Plug-and-Play 기능 제공
      - 장치 부착에 따른 불편 해소
  • WWW (World Wide Web) 확산
    • 1989년 CERN의 Tim Berners-Lee 초기 개발
    • hyperlink로 연결된 문서로 정보를 공유
    • HTML (Hypertext Markup Language)
      • WWW의 문서정의
    • HTTP (Hypertext Transfer Protocol)
      • WWW를 통한 문서 전달을 위한 통신 프로토콜
  • 운영체제에서 네트워킹 지원 일반화

  • Microsoft 시장 주도

    • Windows 운영체제
      - 초기 Apple 매킨토시 운영체제의 많은 개념 도입
      - 여러 개의 응용프로그램 실행을 사용자가 쉽게 관리
  • 객체 기술 유행
    - 많은 애플리케이션이 객체지향언어로 개발
    - C++, Java, C#

  • 객체지향 운영체제

    • 객체로 운영체제 구성요소 표현
    • 상속, 인터페이스 개념 사용
      • 모듈화된 운영체제 개발
      • 유지보수 및 확장 용이
  • Open-source 소프트웨어 확산
    - 프로그램이 소스코드와 함께 배포

    • 개인이 검증하고 수정하여 배포 가능
      • Linux, Apache, Web server, tomcat, ant 등
    • Open Source Initiative (OSI)
      • 오픈 소스 프로그램의 확산을 위한 기관
      • Eric Steven Raymond 설립 (1998)
  • Free 소프트웨어 (freeware)

    • 무료로 배포한 소프트웨어, 수정없이 재배포는 가능
    • Richard Stallman의 Free Software Foundation 설립(1986)
  • GNU 프로젝트
    - Richard Stallman 주도
    • 누구나 자유롭게 실행, 복사, 수정, 배포할 수 있고, 누구도 그런 권리를 제한하면 안된다는 사용 허가권 아래 소프트웨어 배포 - GPL, LGPL, GFDL 라이선스
    • LINUX, gcc, gdb, emacs, Open Office



  • 2000년대 이후
    • 미들웨어
      - 양 쪽을 연결하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어
      - Web service에서 특히 중요
      - RPC, TP monitor 등


    • 클라우드 컴퓨팅
      • Server, Storage, Application 등의 IT 자원을 구매하여 소유하지 않고 인터넷을 기반으로 필요한 만큼 사용료 기반으로 이용하는 방법
      • 인터넷 기술을 기반으로 외부 사용자 (기업, 개인)에게 IT로 구현된 as a service로 제공되는 computing 환경

    • 빅데이터 처리를 위한 분산 파일 시스템
      - Apache Hadoop
    • 빅데이터 처리를 위한 분산 처리
      - Apache MapReduce

운영체제 설치 환경

  • 고성능(high-end) 환경의 운영체제
    • 특별한 설계 요구 및 하드웨어 지원 필요
    • 대용량 메모리
    • 특수목적 하드웨어
    • 많은 수의 프로세스(process)
    • 수퍼컴퓨터 운영체제
      - LINUX 기반 (53%, 2021)

  • 임베디드 시스템 (embedded system, 내장형 시스템)
    - 제한된 특정 기능을 수행하는 작은 규모의 시스템
    - 제한된 컴퓨팅 자원 보유

    • Embedded Linux
      - Android
      - Tizen
      - iOS
      - Windows Mobile
      - RTOS
  • 가상기계 (virtual machine, VM)

    • 컴퓨터의 소프트웨어적 추상화(abstraction) 제공
    • 임의의 운영체제 상에서, 특정 하드웨어가 있는 것처럼 환경을 제공하여, 운영체제 설치 지원
      - VMWare, Virtual Box, Parallels (macOS)
    • 임의의 운영체제 상에서, 특정 소프트웨어 실행 환경 제공
      - JVM(Java Virtual Machine), .NET framework
  • 가상기계 (virtual machine, VM)
    - 단일 컴퓨터에서 여러 개 운영체제의 동시 실행 환경 제공
    - 에뮬레이션(emulation)
    - 실제 없는 하드웨어의 기능을 있는 것처럼 하는 것

    • 이식성(portability) 개선
    • Java Virtual Machine
      - JRE (Java Runtime Environment)
      - bytecode : 구조 중립의 중간코드
    • Microsoft .NET Framework
      • CLR (Common Language Environment)
      – .NET 가상기계
      • MS-IL (Microsoft Intermediate Language)
      – 중간코드 기술 언어
  • Windows Subsystems for Linux (WSL)
    - MS에서 개발한 윈도우 상에서 Linux 호환 커널을 제공하는 부분
    - Ubuntu Linux의 명령어 대부분을 지원
    - Windows 10/11에서 지원
    - WSL1 => WSL2

운영체제의 핵심 요소

커널

  • 운영체제의 핵심 구성요소를 포함하는 부분
  • 프로세서 스케줄러
  • 메모리 관리기
  • 입출력 관리기
  • 프로세스간 통신 관리기
  • 파일 시스템 관리기

시스템 콜

  • 응용 프로그램에서 커널에서 제공하는 서비스를 사용할 수 있도록, 커널에서 제공하는 인터페이스 (API)

단일 구조

  • 커널에 모든 구성요소 포함
  • 일반적으로 매우 효율적
  • 코드가 함께 되어 있어 미묘한 오류의 원인 식별 어려움

계층적 구조

  • 유사한 기능을 하는 것을 층으로 그룹화
  • 각 층은 인접 층과만 통신
  • 프로그램의 요청이 인접하지 않은 층으로 전달될 때는 여러 층 경유
  • 단일 구조에 비해 처리 시간 관점의 비효율성

마이크로커널 구조

  • 커널에 반드시 필요한 최소한의 기능만 구현
  • 그 외의 커널 기능은 사용자 공간에서 구현
    • Mach OS
      • Mac OS X, GNU Hurd의 커널 기반
    • VxWorks, Windows NT
profile
으악

0개의 댓글