[ 0327 TIL : UMC Study - Server, OS ]

junjun·2023년 3월 27일
0

Server

Q. 서버와 클라이언트의 관계는?

  • 서버는 클라이언트의 요청을 받아 해당 요청을 처리해서 결과값을 돌려주는 프로세스

  • 클라이언트는 서버에게 자신이 필요한 데이터, 서비스를 요청하는 프로세스

한 대의 컴퓨터 내에서 A프로그램이 B프로그램에게 어떤 처리를 맡기고 결과값을 받아올 수도 있다.
( Java Program 과 MySQL Server Program의 관계 )

여러 대의 컴퓨터들 간에 네트워크를 통해 A컴퓨터가 B컴퓨터에게 B컴퓨터가 가지고 있는 데이터를 요청해서 받아올 수도 있다.
( 내 컴퓨터에서 Naver 서버에 네이버 메인 페이지 소스를 요청하는 것 )

[ In computing
, a server is a piece of computer hardware or software (computer program) that provides functionality for other programs or devices, called "clients” ]

[ In computing
a client is a piece of computer hardware or software
that accesses a service made available by a server
as part of the client–server model of computer networks. ]

Q. 한번 서버는 영원한 서버일까?

  • 아니다.
    특정 클라이언트에게 서비스를 제공하는 서버도, 다른 서버에 요청을 하는 클라이언트의 입장이 될 수도 있다.
    내가 네이버 서버에 로그인 요청을 할 때, 네이버 서버는 네이버의 사용자 정보를 담고있는 DB에 내 정보가 DB상에 존재하는지, 비밀번호가 맞는 비밀번호인지에 대한 확인 요청을 하게 된다.

Q. 서버의 역할 및 기능이 무엇일까?

  • 1) 클라이언트의 요청에 해당하는 작업을 수행해서, 그 결과값을 돌려주는 것

  • 2) 클라이언트가 요청한 데이터를 주는 것

OS

Q. 운영체제란 무엇일까?

  • 컴퓨터의 하드웨어, 시스템 리소스를 제어하고
    프로그램에 대한 일반적인 서비스를 지원하는 시스템 소프트웨어

실행되는 응용 프로그램들이 메모리와 CPU, I/O 장치, Disk, 네트워크 등의 자원들을 사용할 수 있도록 만들어준다.

사용자에게 편의를 제공하는 목적 또한 가지고 있다.
운영체제가 없다면 사용자가 직접적으로 HW를 관리해야하는데, 이것은 매우 번거로운 일이다.
사용자 대신 HW를 관리해주고, 이에 대한 User I/F를 제공해준다.

즉 운영체제는 컴퓨터의 성능을 높이고, 사용자에게 편의성을 제공하는 것을 목적으로 하는 컴퓨터 하드웨어를 관리하는 프로그램이다.

<참고자료>
https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-1.-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EB%9E%80

Q. 운영체제의 종류에는 무엇이 있을까?

1) 데스크탑 운영체제

PC 또는 Workstation 용으로 설계된 운영체제

Microsoft Windows, Apple MacOS, Linux

2) 모바일 운영체제

스마트폰 또는 태블릿용으로 설계된 운영체제

Android, iOS, Windows Mobile

3) 서버 운영체제

서버 및 데이터센터용으로 설계된 운영체제

Windows Server, Linux Servrer, Unix

4) 실시간 운영체제

빠른 응답시간이 필요한 임베디드 시스템 및 장치용으로 설계된 운영체제

VxWorks, QNX, FreeRTOS

5) 분산 운영체제

분산 컴퓨팅 및 클러스터 환경을 위해 설계된 운영체제

Amoeba, Plan 9, Inferno

6) 다중 사용자 운영체제

다양한 유저들을 동시에 지원하는 운영체제

Unix, Linux, Windows Server

Q. 운영체제가 필요한 이유는 무엇일까?

운영체제는 사용자 or 응용 소프트웨어가 하드웨어를 직접적으로 사용하지 않고, GUI 또는 CLI 인터페이스를 통해 사용할 수 있게 해준다.

만약 운영체제가 없었다면, 사용자가 직접적으로 CPU, RAM, Disk, I/O Devices, 네트워크 같은 자원들을 직접 제어하는 코드를 짰어야 할 것이다.

하드웨어 자원을 효율적으로 관리할 수 있고,
사용자에게 편의성을 제공하는 측면에서 운영체제는 필요하다.

Q. 운영체제는 서버일까?

  • 서버는 '어떤 요청을 받아서' 그에 해당하는 처리를 해주는 프로세스이다.
    운영체제는 사실 System SW로, 부팅 시 주기억장치의 부트로더에 의해 RAM에 올라간 프로세스이다.
    운영체제를 사용하는 외부 응용프로그램, I/O 장치 등등에서
    인터럽트가 발생할 때마다 ( HW Interrupt, SW Interrupt, 내부 Interrupt )
    그에 해당하는 요청을 수행해준다는 측면에서 운영체제는 서버라 할 수 있다.

Q. 리눅스를 서버를 위해 많이 사용하는 이유는 무엇일까?

1) 오픈소스 플랫폼으로 무료이다.
반면, Windows Server 같은 경우는 사용하기 라이센스가 필요하고 이는 곧 비용이다.

2) 경쟁 제품 ( ex. Windows Server )보다
더 안정적이고 효율적이다. 오픈소스이기에, code가 merge될 때 수많은 코드 리뷰를 받았기 때문이다.

3) 더 낮은 메모리와 스토리지, 그리고 CPU 상에서 작동한다.
( 자원을 효율적으로 사용한다 ) => 이는 비용의 절감과 연결됨.

우분투 서버 docs에 따르면,
한 대의 Ubuntu Server는 1GHz CPU Processor와 2.5GB의 디스크 공간을 사용하지만
Windows Server같은 경우는 1.4GHz CPU Processor와 32GB의 디스크 공간을 사용한다.

4) 주기적인 재부팅 없이 계속 작동하기에
서버가 다운되지 않는다.

5) 리눅스 커널 자체가 가볍다.
Windows Server와 같이 Closed-Source OS의 경우
해당 개발자는 레거시 OS코드를 함부로 제거할 수 없기에,
버전이 업그레이드 될수록
bloatware나 crapware 처럼 사용되지 않은 채 쓸데없이 용량만 잡아먹어 OS의 크기가 커질 수 밖에 없다.

리눅스 OS의 경우, 개발자 마음대로 application, library, package 를 서버의 요구사항에 맞춰 삭제할 수 있다. 따라서 커널의 사이즈가 작음. ( 물론 해당 라이브러리나 패키지를 삭제해도 서버가 문제없이 돌아가는지에 대한 테스트는 해야함 )

6) 더 안정적이고 안전함

오픈소스로서, 수많은 개발자에게 테스트 받아오고 코드 리뷰가 이루어졌기에 보안 측면에서 우수할 수 밖에 없다.

profile
새로운 것을 배우고, 기존의 것에 깊이를 더하는 걸 좋아합니다.

0개의 댓글