[OS] 1. 운영체제 소개 및 구조

iohcys·2023년 7월 5일

운영체제(OS)

목록 보기
1/3

운영체제(OS: operating system)란?

  • 하드웨어를 관리하는 소프트웨어
  • 사용자 또는 어플리케이션에게 하드웨어를 제어할 수 있도록 인터페이스를 제공하는 소프트웨어
    (사용자 또는 어플리케이션은 커널을 통해서만 하드웨어를 제어할 수 있음)

 

운영체제의 역할

  • 하드웨어 관리
    - 여러 어플리케이션이 하드웨어를 효율적으로 사용할 수 있도록 관리

  • 하드웨어 보호
    - 악의적이거나 미숙한 사용자로부터 하드웨어를 보호하여 OS의 안전성 보장

  • 하드웨어 인터페이스 제공
    - 하드웨어를 보호하기 위해 하드웨어를 일관된 방법으로 다룰 수 있도록 인터페이스 제공
    - 시스템 콜(system call)

  • 사용자 인터페이스 제공
    - 사용자가 OS를 편리하게 사용할 수 있도록 GUI(graphical user interface) 또는 CUI(character user interface) 어플리케이션 제공

운영체제의 역사

1. 초창기 컴퓨터(1940년대)

  • 펜실베이니아 대학의 존 모클리와 존 에커트가 만든 에니악
  • 진광관이 커지면 1, 꺼지면 0으로 판단함
    - 컴퓨터가 이진법을 사용하는 계기가 됨
  • 1800개의 진공관을 전선으로 연결하여 프로그램을 구현
  • 운영체제는 사용되지 않음

2. 일괄 작업 시스템(batch job system: 1950년대)

 

  • 진공관과 전선으로 구성된 논리회로를 아주 작은 크기의 IC(integrated circuit)칩으로 구현함
  • CPU와 메모리가 사용됨
  • 입출력 장치로써 키보드와 모니터 대신 천공카드 리더(punch card reader)와 라인 프린터(line printer)가 사용됨
    - 천공카드 : 카드에 구멍을 뚫어 문자나 숫자를 표현
    - 라인 프린터 : 한 번에 한 줄씩 문자나 숫자를 인쇄하는 프린터
  • 프로그램 실행 중간에 데이터를 입력하거나 실행 과정을 확인할 수 없음
  • 메인 메모리는 OS 영역과 사용자 영역으로 나뉨

3. 대화형 시스템(interactive system: 1960년대 초반)

 

  • 키보드와 모니터를 통해 프로그램 실행 중간에 데이터를 입력하거나 실행 과정을 확인 가능
  • 단순 계산 작업 뿐만 아니라 문서 편집기, 게임과 같은 다양한 종류의 응용 프로그램 실행이 가능해짐

4. 시분할 시스템(time sharing system: 1960년대 후반)

 

  • CPU 사용 시간을 잘게 쪼개서 작업들에게 나누어 줌
    - 동시에 여러 작업이 실행 가능한 시스템(multi-process, multi-task system)
    - 동시에 여러 사람이 사용 가능한 시스템(multi-user system)

5. 분산 시스템(distributed system: 1970년대 후반)

 

  • 값이 싸고 크기가 작은 컴퓨터를 인터넷을 통해 하나로 묶어서 대형 컴퓨터의 성능에 버금가도록 구현된 시스템
  • 대형 컴퓨터를 대신하여 복잡한 계산이나 많은 양의 데이터를 처리하기 위해 사용됨
    - 대규모 데이터 연산을 소규모 연산으로 나눠서 분산 및 병렬 처리하고 그 내용이나 결과를 서로 교환

6. 클라이언트/서버 시스템(client/server system: 1900년대 ~ 현재)

 

  • 작업을 요청(request)하는 클라이언트와 요청 받은 작업을 처리하여 응답(response)하는 서버로 구성됨
  • 웹 시스템은 전형적인 클라이언트/서버 시스템

7. P2P 시스템(peer-to-peer system: 2000년대 초반 ~ 현재)

 

  • 클라이언트/서버 시스템을 통해 MP3 음악 파일과 같은 대용량 파일을 공유하면 서버 과부하 발생
  • 이러한 문제를 해결하기 위해 서버를 거치지 않고 사용자 컴퓨터(peer)들을 직접 연결하여 구현

8. 기타 시스템(2000년대 초반 ~ 현재)

 

  • 그리드 컴퓨팅(grid computing)

    • 비용을 지불한 뒤 필요한 계산 자원(CPU,메모리,저장장치)를 인터넷을 통해 사용 가능한 시스템
    • 분산 시스템의 한 분야로써 서로 다른 컴퓨터를 묶어 대용량의 컴퓨터 풀(pool)을 구성하여 연산을 수행
    • 연구용이나 상업용
  • IaaS(infrastructure as as service)

    • 서비스형 인프라스트럭처
    • 비용을 지불한 뒤 서버를 운영하는데 필요한 컴퓨터 하부구조를 인터넷을 통해 사용 가능한 시스템
    • 예: Microsoft Azure, AWS EC2, Google Compute Engine(GCE)
  • PaaS(platform as a service)

    • 서비스형 플랫폼
    • 비용을 지불한 뒤 필요한 개발 환경을 인터넷을 통해 사용 가능한 시스템
    • 예: Microsoft Azure, AWS Lamda, Google App Engine(GAE), Google Colab
  • SaaS(software as a service)

    • 서비스형 소프트웨어
    • 비용을 지불한 뒤 필요한 소프트웨어를 인터넷을 통해 사용 가능한 시스템
    • 예: Microsoft 365, iCloud, N드라이브, Google Drive, Google Photo, Google Docs
  • 클라우드 컴퓨팅(cloud computing)

    • 그리드 컴퓨팅과 IaaS, PaaS, SaaS를 합쳐 놓은 형태
    • 비용을 지불한 뒤 필요한 계산 자원과 소프트웨어를 인터넷을 통해 사용 가능한 시스템
    • 예: AWS(Amazon web services), Microsoft Azure, Google Cloud Platform(GCP)

운영체제의 구조

  • 운영 체제는 커널과 어플리케이션으로 구성됨
 위 그림은 운영체제의 구조이다.

- 커널(kernel)

  • 운영체제의 핵심으로써 운영체제를 규정짓는 가장 중요한 부분
  • 하드웨어 관리
     - 메모리 관리, 프로세스 관리, 파일 시스템 관리, 입출력(I/O)관리, 프로세스 간 통신(IPC)관리
  • 어플리케이션이 커널을 통해 하드웨어를 제어할 수 있도록 하는 커널에 요청하는 함수인 시스템 콜(system call)제공
     - 시스템 콜의 예: open, read, write, fork, exe, stat, unlink
     - 사용자 또는 어플리케이션은 시스템 콜을 통해서만 하드웨어를 제어할 수 있음
  • 커널이 하드웨어를 제어하는데 사용되는 소프트웨어인 디바이스 드라이버를 포함
     - 간단한 하드웨어의 디바이스 드라이버는 커널에 포함되어 있고 복잡한 하드웨어의    디바이스 드라이버는 하드웨어 제작자에 의해 제공됨
  • 아래 사진은 커널의 기능에 대한 표이다.

- 어플리케이션

  • 쉘(shell)
     - 명령어 해석기 : 사용자가 입력한 명령어를 해석하여 커널에 전달함
  • GUI 어플리케이션 제공
  • 콘솔이나 터미널을 통해 쉘과 유틸리티를 사용할 수 있게 하는 CLI(command Line interface)어플리케이션 제공
profile
Android Developer

0개의 댓글