⛏️/LINUX | AWS

[Linux] 리눅스의 개요

defyuil 2023. 7. 27. 09:41

운영체제란?

- Operating System(OS) 라고 불리며 시스템의 하드웨어를 관리할 뿐 아니라 응용 프로그램 (소프트웨어)를 실행하고 이용할 수 있는 방식(사용자 인터페이스:UI)를 제공한다.

※ 하드웨어 : CPU, 메모리카드, 하드디스크, CD-ROM

 

가장 쉽게 접근할 수 있는 운영체제는 윈도우(Windows)이다

 

 

 

개인용 운영체제와 서버용 운영체제

- 운영체제의 본래 역할인 사용자/응용프로그램과 하드웨어 간의 소통을 담당하는 부분은 바뀌지 않고, 사용하는 목적과 환경에 따라 개인용과 서버용으로 구분 지을 순 있다

- 사실 개인용/서버용 운영체제라고 구분 짓는 것은 무의미 할 수 있다

- 윈도우라는 운영체제는 윈도우 뒤에 8,10 등의 넘버링이 붙으면 개인용 운영체제, Server 라고 붙으면 서버용 운영체제가 되며, 리눅스라는 운영체제는 접미어가 따로 붙지 않고 개 인이 사용할 수도 다수가 사용할 수도 있다

 

☆ 개인용 운영체제

- 개인이 사용하는 컴퓨터(Personal Computer : PC)에서 사용하는 운영체제 - Windows, Linux, MacOS(OSX)

 

☆ 서버용 운영체제

- 하나의 컴퓨터를 다수의 사람이 동시에 접근하는 환경을 제공하는 운영체제 - 다수의 사람이 동시에 접근하는 환경을 만들기 위해 높은 메모리, 큰 용량이 필요하다. - Windows Server 2012R2, Linux CentOS, Ubuntu

 

 

왜 리눅스인가?

- 리눅스는 오픈소스 기반(공개되어있는) 운영체제로서 접근성이 용이하다. (모든 사람들이 리눅스 개발자로 참여할 수 있으며 발전에 기여할 수 있는 진화하는 운영 체제이다.)

- 기업체에서 많이 사용하는 운영체제이다. (웹 서비스를 하고자 할 때 필요한 웹서버, 데이터베이스 등을 가장 효율적으로 잘 다룰 수 있기 때문)

- 다양한 분야, 목적에 적용할 수 있음. (스마트폰, 태블릿, TV, 서버, 가상 머신, 데이터센터 등)

- 주변에 항상 존재 Q. 리눅스를 일상에서 가장 쉽게 접하는 상황은? A. 공유기, 인공지능 스피커

 

 

 

리눅스를 사용하는 측면에서 본다면?

☆ 개발자

- 앱 또는 웹 개발자 입장에서는 배우면 좋지만 활용도가 낮다고 생각됨 (시스템 프로그래머로 일을 하지 않을 것 같다!) - 그러나, 한국의 현실에서는 개발 + 서버관리도 하는 경우가 생각보다 많다.

☆ 사용자

- 주변에 컴퓨터에 메인 운영체제로 리눅스를 사용하는 사람이 있는지??

☆ 기업체 

- 회사에서 필요한 리눅스를 직원에게 배우게 할까? - 리눅스 전문가를 초빙해야할까?

 

 

 

개발자에게 리눅스가 필요한 이유

- 운영 체제 구성에 대한 기본적인 이해도 상승

- 오픈 소스 S/W를 활용한 개발 능력 배양 - 사물인터넷 등 다양한 플랫폼에 대한 환경 변화 적응 용이

- S/W 배포 전 사전 테스트 환경 구축 - 실제 운영 환경에서의 위험 요소 예측 가능 - 클라우드 환경으로의 진화에 따른 관련 사전 지식 습득으로 활용도 증가

 

☆ 웹 마스터(웹 코디네이터)

- 과거의 웹사이트를 기획/디자인/구축/사이트 유지보수/프로그래밍/관리/고객 대응까지 모두 포함한 직종. 현재는 각 직종이 세분화

☆ 웹 기획자 / 웹 디자이너 / 웹 엔지니어 / 웹 프로그래머 / 웹 매니저

☆ 현업에서는 웹 기획자 / 웹 개발자 / 웹 관리자

 

 

 

사용자에게 리눅스가 필요한 이유

- 공짜

- 오픈소스로 구성된 운영체제를 개성에 맞게 설정

- 일부 게임 환경을 제외한 대부분의 S/W가 윈도우용으로 대체 가능

- 명령어를 이용한 제어 방식을 통해 기본적인 프로그래밍 개념 습득.

- 네트워크에 대한 개념 등 전반적인 이해도 상승

- 오류 발생 시 두뇌 풀 가동을 통한 자가 학습 능력 배양

- 다양한 커뮤니티를 통해 대부분의 문제점을 해결 가능

 

 

기업체에게 리눅스가 필요한 이유 

- 대부분 공짜(사무용 S/W 비용 절감)

- 오픈소스로 구성된 운영 체제를 기업 환경에 최적화 가능

- 대부분의 플랫폼에 마이그레이션 용이

※ 마이그레이션 : 정보기술에서 한 운영환경으로부터 (대게 좀 더 낫다고 여기는) 다른 운 영환경으로 옮겨가는 과정

- 타 운영체제 대비 적은 비용으로 운영이 가능하므로 유지비용 감소

- 향후 변화하는 환경에 지속적이고 능동적 대처 가능

- 최신 기술에 대한 접근성 및 활용도 증대 - 윈도우 대비 악성코드 등으로 인한 기업 생산성 저하 가능성 감소

 

 

리눅스를 어떻게 익혀야 하는가? 

- 반복 숙달

- 스스로 관심을 가져야 한다. (게임을 좋아하는 사람은 게임자체를 즐긴다. 게임기가 어떤 구조로 되어 있는지 어떤 원 리로 동작하는지 까지는 몰라도 게임을 즐길 수 있다. 리눅스도 마찬가지로 구조와 원리를 알면 좋겠지만 그걸 모른다고 해도 즐길 수 있다.)

- 접근성에 대한 인식 전환 (리눅스를 어렵게 생각하는 사람들은 처음부터 리눅스가 어렵다고 생각을 하고 접근을 한다.)

 

 

리눅스의 탄생

- 컴퓨터와 인터넷의 발달로 하루만 지나도 정보들이 쏟아져 나오는 세상에서 살고 있다. 정보란 지식이며 이는 곧 힘이 된다. 남들이 모르는 정보를 선점하고 활용하면 돈이 되는 그 런 세상인 것이다.

- 1970년대부터 시작된 개인용 컴퓨터의 발달은 1980년 중 후반으로 넘어가면서 소프트웨 어의 발달로 넘어간다.

- 작은 벤처 기업들이 아이디어를 통해 초기 버전의 소프트웨어를 만들어 내면 거대한 기업 에서 이를 흡수하거나 비슷한 종류의 소프트웨어를 만들어 내기도 하였다.

- 이에 크고 작은 소송들을 통해 사람들은 점점 지적침해와 지적재산에 관해 관심을 두게 되었고, 소프트웨어 저작권이라는 개념과 함께 수익을 낼 수 있는 소프트웨어들의 기술들 은 폐쇄적으로 보호하게 되었다.

- 리눅스라는 단어를 설명할 때 빠질 수 없는 인물들이 있는데 하나는 리차드 스톨만이고 또 하나는 리누스 토발즈라는 인물이다.

 

 

 

리처드 스톨만(Richard Stallman)

- 소프트웨어 산업의 상업화를 반대하며 자유 소프트웨어 재단(FSF)를 설립

- GNU 프로젝트를 실시하여 오늘날의 리눅스 운영체제의 초석을 마련함

- 저작권(Copyright)의 반대인 Copyleft GPL(GNU General Public Licence)을 발표

- 우선 리차드 스톨만이란 인물에 대해 얘기해 보자면 그는 뛰어난 두뇌의 소유자로 하버드 대학에 진학 후 MIT(매사추세츠 공과 대학, Massachusetts Institute of Technology)로 자리를 옮겨 인공지능연구소의 연구원으로 컴퓨터 세상을 개척해 나가고 있었다.

- 리차드 스톨만이 있던 인공지능연구소도 소프트웨어 산업의 상업화의 영향을 받아 리차드 스톨만 외의 다른 연구원들은 심볼릭스(Symbolics)라는 회사를 차리고 기존의 개방적인 자유 소프트웨어를 그들만의 독점 소프트웨어로 바꾸는 작업을 적극적으로 시도했다.

- 이에 리차드 스톨만은 혼자 힘으로 심볼릭스에서 나온 결과물들과 똑같은 기능의 프로그램 을 작성하면서 독점을 막는 일을 했지만 역부족이었다. 특히, 운영체제의 핵심인 커널 부 분을 만들 수가 없었다. (여기서 운영체제는 모든 하드웨어와 모든 소프트웨어를 관리하는 컴퓨터 시스템의 한부분인 “실행 관리자”라고 정의할 수 있다. 그리고 커널은 컴퓨터가 가 지고 있는 자원을 얼마나 효율적으로 사용할 수 있는지에 관한 능력에 관한 것이라고 보 면 된다.)

- 여기에서 이제 리누스 토발즈 라는 인물을 살펴 볼 필요가 있다

 

 

 

리누스 토발즈(Linus Benedict Torvalds)

- 리누스 토발즈는 핀란드 태생으로, 우리가 배울 리눅스라는 운영체제의 커널을 개발하여 결과적으로 리눅스를 탄생시킨 개발자이다.

- 당시 핀란드의 헬싱키 대학에 다니던 리누스 토발즈는 학생이었으며, 앤드류 타넨바움 (Andrew Tanenbaum)교수가 만든 미닉스(minix)라는 작은 미니 운영체제로 운영체제에 대한 공부를 하고 있었다.

※ 미닉스(minix)는 대형컴퓨터에서 사용하는 Unix라는 운영체제를 대학 학습에 맞게 끔 변형한 형태이다.

※ 유닉스(Unix) - 1969년 미국의 전신전화회사 AT&T 사의 벨 연구소에서 어셈블리어로 개발한 운영체제이다. 후에 데니스 리치는 C언어로 Unix를 다시 작성하였다.

 

- 미닉스가 가지고 있던 커널 부분을 기반으로 개인용 컴퓨터에서도 사용할 수 있는 커널을 만들어냈는데, 현재 리눅스라는 운영체제가 가지고 있는 커널의 초기 버전이라 할 수 있다.

- 여기서 잠깐 다시 리차드 스톨만으로 넘어가서 얘기를 하자. 리차드 스톨만은 소프트웨어 산업의 상업화에 반대를 하며 자유 소프트웨어 재단을 설립하고 1989년에 일반 공중 사용 허가서(GNU General Public Licence/ GPL)이라는 카피레프트를 발표한다. - 카피레프트(Copyleft)란 저작권을 뜻하는 Copyright의 반대 개념으로 지식과 정보는 소수 가 독점하는 것이 아닌 모두에게 공개 되어야 한다는 뜻을 가지고 있다.

- GPL을 적용한 소프트웨어는 어떻게 만들어졌는지를 공개해야 하며(소스코드라고 불린다.) 이를 가지고 변형을 할 수 있으며, 이것으로 판매도 할 수가 있다. 다만, 변형한 후에는 변형된 코드를 누구나 다 볼 수 있도록 공개를 해야 한다는 것이다. 또한 변형된 소프트웨 어는 사람들의 손에 의해 또 변형을 할 수 있다.

 

※ GNU 프로젝트

– 1983년 유즈넷을 통해 소개됨.

1985년 리차드 스톨먼이 자유 소프트웨어 재단(FSF-Free Software Foundation)을 세움

1992년 리눅스는 GNU시스템과 통합. 완전한 공개 운영체제가 탄생.

 

※ 유즈넷 – 인터넷을 이루는 한 가지로, 유저 네트워크의 준말. 주로 텍스트 형태의 기사 모음.

- 비유를 하자면 삼성 스마트폰이 만약 GPL이 적용되었다면 (물론 그럴일은 절대 없을 테지만!!!) 모방을 잘하는 대륙의 사람들이 기능을 하나 더 추가해서 만들어 판다고 해도 삼성 에서는 법적 조치를 할 수가 없는 것이다.

- 리누스 토발즈가 만든 초기 버전의 커널은 GPL을 적용했고, 여러 사람들의 손을 거쳐 발 전 되어 왔으며 점점 완성되어진 커널과 리차드 스톨만의 운영체제가 합쳐져서 오늘날의 리눅스가 만들어지게 된 것이다.

 

 

 

커널(Kernal)이란?

- 운영체제의 핵심으로써 하드웨어와 직접 맞닿아 자원을 효율적으로 사용할 수 있게 해준다. 리눅스의 핵심은 커널이다.