[GCP] Cloud 개요: S/W (소프트웨어)

서경·2024년 9월 4일
post-thumbnail

S/W (Software, 컴퓨터 프로그램)

1. 컴퓨터 프로그램

1.1. 명령 집합



1.2. 프로그램 실행 순서

  1. 명령을 메모리에 저장 (storage → memory, Load)

  2. CPU에 의하여 명령 해석 (memory → cpu)
    IR로 해석하고 ALU로 연산 or 입/출력 처리

  3. 해석된 명령에 대한 데이터 처리

  4. 명령 처리 결과를 Memory에 저장하거나 I/O Device를 이용한 입력/출력 처리






2. System S/W

2.1. H/W 제어 및 사용자 인터페이스( Interface )

○ 운영체제( O/S, Operating Software )

OS의 기본 목적은 하드웨어 제어이다.
OS는 커널과 쉘로 이루어져 있다.


  1. 종류
  • MS Windows, MS Windows Server
    유료, X86계열에서 작동, GUI/CLI 방식

    MS 윈도우는 CPU 코어의 영향을 받는다.
    CPU 코어 형태 자체가 각 다르기 때문에 코어 종류에 따라 OS가 각각 만들어진다.
    레지스터 구조, 명령 해석 방법, AUL 연산 방법이다르다.
    그래서 OS가 각각의 하드웨어에 맞게 동작할 수 있어야 한다.

    MS 윈도우는 주로 개인 사용자와 일반 소비자에게 적합합 GUI 기반 운영체제이다.

  • Linux, Linux Server
    무료, X86/ARM 계열 모두에서 작동, Open Source 방식, CLI 방식
    리눅스는 오픈 소스로 코어의 영향을 받지 않는다.

    리눅스는 서버 운영에 적합한 강력한 명령어 기반 운영체제이다.
    리눅스 서버는 GUI 없이 명령어를 통해 모든 작업을 처리하는 것이 일반적이며, 서버의 성능과 안정성을 높이는데 중요한 역할을 한다.
    서버는 외부적 표현 보다 내부적인 처리가 중요하다.
    하지만, 일반 사용자들을 위한 배포판에서는 GUI를 지원하여 MS 윈도우와 유사하다.

  • MacOS
    유료, UNIX계열 BSD 기반 O/S

    맥 OS는 BSD 커널을 기반으로 한다.
    BSD는 유닉스의 형태로 리눅스도 유닉스를 모델로 생성 되었다.
    따라서, 유닉스와 리눅스가 유사하기 때문에 리눅스를 다루면 100프로 호환은 아니어도 BSD도 쉽게 접근할 수 있다.
    맥 OS는 기본 명령어를 제공하고 맥 하드웨어가 있어야 설치가 가능하다.


  1. 운영 방식
  • CLI (Command Line Interface) / CUI( Character User Interface )
    명령 입력 방식에 의한 O/S 사용, 세심한 환경 관리가 가능

    CLI는 사용자가 텍스트 명령을 입력하여 컴퓨터와 상호작용하는 인터페이스이다.
    명령 프롬포트가 있으며, 개발자, 시스템 운영자, 파워유 유저는 CLI 방식을 선호한다.

  • GUI (Graphic User Interface)
    그래픽으로 표시하고 마우스 기반으로 O/S 사용

    GUI는 직관적이고 시각적인 인터페이스를 제공하기 때문에, 기술적 지식이 없는 엔드 유저도 쉽게 사용할 수 있다.


클라우드에서는 두 가지 방법 모두 사용이 가능하기 때문에,
어떤 것을 사용할지 고민해보고 혼합해서 사용이 가능하다.

서버는 앤드 유저가 사용하는 것이 목적이 아니고 프로그램 접속이 목적이기 때문에
서버에서는 GUI를 지원하지 않는 경우가 많다.
따라서 서버 관리 시 CLI가 필수적이며 이 방식을 사용하는 것이 일반적이다.

MS 윈도우의 모든 인터페이스는 GUI를 사용하기 때문에 GUI 사용이 가능하고 CLI 방식도 가능하다.



TIP!

하드웨어는 말 그대로 기계장치이며 스스로 동작하지 않는다.
명령에 의해 프로그램 실행 순서대로 동작한다.
I/O 디바이스 → 메모리 → CPU 명령 해석 → 연산 → 메모리 저장 → 디바이스 출력

이 명령을 수행해 주는 제어 동작이 필요하기 때문에 시스템을 다루는 사용자 인터페이스가 필요하게 된다.

윈도우 - 쉘, 명령 프롬포트
리눅스 - 터미널


GCP는 맥 OS 기반 생성이 불가하며, MS 윈도우 또는 리눅스 서버만 생성이 가능하다.
AWS는 맥 OS 생성이 가능하다.

클라우드 상에서 유료 버전의 OS를 사용할 수 있지만,
기본 사용로 + 소프트웨어 라이센스가 추가적으로 부가 되어 비용이 많이 발생하게 된다.



2.2. 구성

○ Kernel

  1. H/W 제어 (CPU/Memory/IO Device)
    커널은 운영 체제의 핵심으로, 하드웨어와 소프트웨어 간의 상호작용을 관리하고 시스템 자원을 관리한다.
    커널은 하드웨어의 실질적인 제어를 제공한다.

사용자와 직접적인 대면을 하지 않아 커널이 작동 중인지 아닌지 명확하게 구분이 어렵다.
키보드 입력 시 내부적으로 CPU가 동작하고 메모리에 저장하며 보이지 않는 동작을 한다.


○ 사용자 Interface (shell)

  1. 사용자와 Kernel간 인터페이스
  2. CLI/GUI

쉘은 사용자와 운영 체제 커널 간의 인터페이스를 제공하는 프로그램이다.
사용자가 명령어를 입력하면, 쉘은 명령어를 해석하고 커널에 전달하여 요청된 작업을 수행한다.

사용자는 커널을 직접적으로 사용할 수 없고 쉘이라는 인터페이스를 통해 통신을 수행한다.

커널은 OS 마다 동작 방식이 다르다.
이중에서 리눅스가 서버를 구성할 때 대표적으로 사용된다.
커스터마이징이 유연하고 커널 재작성이 가능하여 리눅스로 많이 구성된다.



2.3. System Library

Application 실행 환경 구성


○ Library

함수 (function) 집합, 단독 실행보다는 Library가 가지고 있는 함수를 사용할 수 있도록 한다.


○ 함수 (function)

단위 기능 수행 코드 집합, 명령어는 함수를 기반으로 동작



2.4. System Application

시스템 구성 및 운영을 위한 Application


○ 단독 실행이 가능한 프로그램

  1. 컴파일러 (Compiler)

  2. 인터프리터 (Interpreter)

  3. 에디터 (Editor)

  4. 데이터베이스 (Database)

  5. 스프레드시트, 문서작성기…


TIP!

OS는 하드웨어를 제어한다.
컴퓨터 실행 시 OS가 가장 먼저 실행된 후 사용자 애플리케이션이 동작한다.

OS 동작 환경과 사용자 동작 환경이 분리 되어 있는데,
OS에 문제가 생긴다면 전체 시스템에 문제가 생기기 때문에
사용자 동작 영역과 커널과 같은 시스템이 동작하는 영역을 분리하여 서로 침범할 수 없게한다.

하지만, 우리가 만든 애플리케이션이 하드웨어 제어를 못 하게 되기 때문에 커널에게 요청하는 방식을 사용한다.
그러기 위해 어떤 함수, 클래스, 변수의 집합인 라이브러리를 필요로 하고 안에 있는 함수를 호출하여 사용한다.

커널과 통신할 수 있는 라이브러리 사용으로 내부가 어떻게 되어있는지 관심을 갖지 않아도 사용이 가능해진다.
즉, 라이브러리는 전체적인 컴퓨터 동작을 가능하게 하는 것이다.






3. Application S/W (일반 Application)

3.1. End-user가 원하는 기능을 제공하는 Application

3.2. 개발자에 의해서 작성

예를 들어, 엑셀 프로그램 표 작성이 있다고 가정하면,
엑셀은 표를 만들 수 있는 기능을 제공한다.
이 기능을 가지고 표를 어떻게 만들지는 사용자가 정한다.

이런 업무 자체가 아닌 업무에 필요한 것 중 하나가 되는 것을 시스템 애플리케이션이라고 한다(단독 실행).


애플리케이션 소프트웨어는 업무의 자체가 된다.
내가 고객을 관리하기 위한 업무 자체의 애플리케이션이 되는 것이다.
시스템을 차용하여 애플리케이션 위에 만드는 프로그램이 애플리케이션 소프트 웨어가 된다.

애플리케이션 소프트웨어는 주로 앤드유저가 업무를 위해 사용하는데,
사실 시스템 애플리케이션과 애플리케이션 소프트웨어의 범주를 나누는 명확한 기준은 없다.


TIP!

하드웨어 - 기계 자체
소프트웨어 - 기계 제어 하드웨어 환경을 동작하는 애플리케이션

0개의 댓글