OS, kernel, terminal, console, shell

이현빈·2023년 4월 13일
0

CE blog

목록 보기
10/21

OS(Operating System)

  • 컴퓨터 시스템을 구성하고 있는 여러가지 자원(resource)에게 어떤 동작을 하도록 지시하는 역할을 하는 프로그램들의 집합이다.

  • 사용자 측면에서 컴퓨터의 하드웨어에 대한 지식 없이도 시스템을 쉽게 사용 가능하게 해주고 시스템 측면에서 컴퓨터 시스템의 성능을 최대 한도로 향상시키는 프로그램이다.

    * 컴퓨터의 하드웨어 관리
    * 응용프로그래밍(application, App)의 토대를 제공해주는 프로그램
    * 사용자, 응용프로그램들과 하드웨어 사이의 중간 매개체 역할

OS의 목적

  • 운영체제는 User Interface를 제공하여 사용자가 컴퓨터의 H/W 지식 없이도 편리하게 시스템을 사용하게 한다.
  • 컴퓨터 시스템의 자원들을 효율적인 운영한다.(자원 스케쥴링 등등)

OS가 제공하는 Services

  1. 프로그램 실행: 사용자가 원하는 프로그램을 실행시킨다.
  2. 입력/출력 동작 지원: 사용자 프로그램이 데이터의 I/O를 수행할 수 있게 지원한다.
  3. 파일 시스템 조작: 파일의 생성, 삭제 등의 파일 관리에 대한 기능을 제공한다.
  4. 자원 관리 및 할당: 여러 사용자 혹은 프로세스가 제한된 자원을 사용하려고 할 때 효율적으로 해당 지원 할당을 수행한다.
  5. 계정 관리: 사용자들의 컴퓨터에 관한 기록을 저장하고 이를 처리하여 자원의 활용 상태 파악 등에 이용한다.
  6. 오류 탐지: 항상 가능한 모든 오류의 상태를 탐지한다.
  7. 보호: 사용자 정보를 보호할 수 있는 체제를 제공한다.

OS의 종류

여러 OS들

  • windows
  • Linux
  • Unix
  • Mac OS

운영기법에 의한 종류

  • 일괄 처리 (Batch processing) 시스템
    • 한번에 하나의 프로그램만이 수행된다.
    • 운영체제는 항상 메모리의 상주한다.
    • 처리 속도를 향상시키기 위해 유사한 요구를 필요로하는 작업을 일괄처리하였다.
    • 시대적으로 가장 먼저 생겨난 형태이다.
    • 기계적 입출력 장치가 전자적 장치의 속도보다 상대적으로 느려 CPU가 쉬는 경우가 많다는 단점이 있었다.
  • 다중 프로그래밍(Multi-programming) 시스템
    • 여러 개의 프로그램을 동시에 메모리에 적재하여 하나의 프로그램을 수행하다가 I/O, 인터럽트 등에 의해 대기상태가 되면 그 동안 다른 프로그램을 실행하는 방식이다.
    • 입출력과 프로그램의 실행을 병렬로 할 수 있어 CPU 사용 효율이 증가한다.
  • 시분할 (Time sharing) 시스템
    • 다중 프로그래밍 시스템은 사용자와의 상호작용을 제공하지 못했기 때문에 등장한 시스템이다.
    • 다중 프로그래밍과 달리 정해진 시간이 되면 무조건 다음 순서의 작업을 실행하는 방식이다.
    • 작업 교대 시간이 매우 짧아 프로그램이 실행되는 동안 사용자는 컴퓨터와 상호작용을 한다.
    • 가상 메모리를 사용하여 많은 메모리를 사용할 수 있다.
  • 다중 처리 (Multi-processing) 시스템
    • 여러 개의 CPU와 한 개의 주기억 장치로 여러 프로그램을 동시에 처리하는 시스템이다.
  • 실시간 처리(Real time)시스템
    • 프로세서 작동이나 데이터 흐름에 엄격한 시간 제약이 있을 때 사용한다.

    • 발생 자료를 바로 처리한다.

    • 실시간 시스템의 운영체제는 보통 특수 목적용이다.

      • e.g. 기차표 예약 업무, 은행 업무
  • 다중 모드 시스템
    • 일괄 처리 시스템 + 시분할 시스템 + 다중 처리 시스템 + 실시간 처리 시스템
  • 분산 처리 시스템
    • 네트워크를 통해 통신하여 그 기능을 제공한다.
    • 여러 프로세서를 사용하지만 밀결합(tightly-coupled) 구조가 아닌 소결합(loosely-coupled) 형태이다.
    • 컴퓨터 버스나 클럭을 공유하지 않고 네트워크를 이용해 통신한다.

kernel

kernel: 알맹이

  • 운영 체제의 일부로 하드웨어와 프로세스의 운용을 위한 소프트웨어(operating system의 core program)
  • user program(or application) 수행에 필요한 여러 서비스를 제공하기 위한 인터페이스를 제공한다.
  • 컴퓨터 H/W (CPU, memory)의 resource들을 관리한다.

H/W resource management

  • kernel은 computer H/W의 physical resource를 관리하며 이들의 abstraction(or virtualization)인 virtual resource를 생성 및 관리한다.
  • virtual resource는 physical resource를 abstraction한 것으로 user program들에서는 해당 virtual resource가 보이며 이를 통해 user program들은 현재 자신이 특정 H/W를 혼자서 쓰는 것처럼 느끼게 된다.
physical H/WVirtual H/W
CPUtask or processor
memory (or RAM)Page or Segment
Disk (or HDD, SDD)File
Networksoket
  • 다음은 kernel이 수행하는 H/W resource 관리이다.
  1. System call interface: application에서 system으로 어떤 명령을 주고 싶을 때(e.g. open()으로 파일 열기) system call이라는 것을 하는데 이 system call이 interface를 통해서 전달이 된다.
  2. Process management: OS는 수많은 process를 관리한다. process는 실행 중인 프로그램을 말하고 OS는 CPU나 메모리 같은 resource를 사용해서 process를 수행한다.
  3. Memory management: 물리 memory 공간을 어떻게 사용할지에 대해서도 관리한다. 독립적인 공간을 확보해주거나 효율적으로 사용할지도 관리한다.
  4. network stack: network의 data 입출력을 받아다가 application으로 올려주기도 하고 data를 network device를 통해서 송수신 해준다.
  5. File system management: 기록된 data를 물리적인 장치에 저장하거나 읽어주는 기능을 한다. 파일단위로 삭제하거나 access 할 수 있다.
  6. Device driver: computer에 연결된 장치들을 driver라는 매게체를 통해서 제어하고 application 단에서는 추상적으로 제어할 수 있도록 한다.
  7. interrupt handling
  8. I/O Communication
    입출력 통신관리

OS는에서의 역할

  • OS는 kernel에 system program (shell 및 여러 S/W)들이 더해져서 구성된다.
  • 추가되는 system program들은 file system utility, windowing system 등으로 User 또는 User program들이 컴퓨터를 보다 편리하게 사용할 수 았도록 해준다.
  • 사실 kernel은 컴퓨터와 직접적으로 interaction은 하지 않고 shell이 중간에 위치하여 이를 담당한다.

kernel은 shell을 통하거나 다른 User program(or application)을 통해 사용자와 interation을 수행한다.

terminal

  • user가 computer와 상호작용할 수 있도록 하는 장치이며 text 입출력 환경이다.
  • 일반적으로 input data를 위한 keyboard, ouput을 보여주는 screen 그리고 접근되는 computer와의 연결으로 구성된다.

console

  • physical terminal으로 terminal의 일종이다.
  • computer control을 포함하는 panel 도구이다.
  • terminal은 원격제어 환경까지 포함하는 더 넓은 의미이다.

shell

kernel의 반대말로 조개 껍대기를 의미

  • OS의 service와 application 운영의 접근을 위한 user interface를 제공하는 program이다.
  • command-line interpreter이다.
  • e.g. bash, powershell, Zsh

reference
1.kernal wikidocs
2. https://www.geeksforgeeks.org/difference-between-terminal-console-shell-and-command-line/
3. https://hanamon.kr/%ED%84%B0%EB%AF%B8%EB%84%90-%EC%BD%98%EC%86%94-%EC%89%98-%EB%AA%85%EB%A0%B9%EC%A4%84terminal-console-shell-command-line%EC%9D%98-%EC%B0%A8%EC%9D%B4-2/

0개의 댓글