[시스템 프로그래밍] 리눅스의 특징과 배경&설치 방법
업데이트:
시스템 프로그래밍이란?
- 고급 운영체제
- 운영체제는 이론 중심, 시스템 프로그래밍은 실습 중심
- 실전 리눅스/운영체제 고급 활용
시스템 프로그래밍 선수 과목
- C언어
- 자료구조
- 컴퓨터구조
- 운영체제
리눅스 정의와 특징
서버에 많이 사용되는 운영체제
- 최근 서버 환경은 주로 리눅스 사용
- 프로그래밍을 할 때도 많이 사용 된다.
- Window는 보안프로그램 설치 시 시간이 오래 걸리지만, 리눅스에서는
Kernel+shell+system 기본 프로그램
만을 설치해서 컴파일하여 시간 단축 가능하다.
- Window는 보안프로그램 설치 시 시간이 오래 걸리지만, 리눅스에서는
- 클라우드 컴퓨팅에서도 많이 사용된다.
- 운영체제,소프트웨어 대부분이 UNIX계열 운영체제이다
→ 완전 프로그래머 스타일 인터페이스 - 표준에 의거한 프로그래밍이 가능하다.
- ANSI C(C언어 표준)
- ANSI C(C언어 표준)
리눅스의 역사
리누스 토발즈(Linus Torvalds)가 개발
- 대학에 있는 UNIX 컴퓨터를 집에서 쓰고 싶었음
- 다중 사용자(여러명 로그인시 키보드 각각 반응), 다중 작업(시분할 시스템, 멀티태스킹)을 지원하는 유닉스(UNIX)와 유사한 운영체제
※시분할 시스템: 컴퓨터 응답시간 최소화를 위해 시간을 잘게 쪼개서 여러 프로그램이 짧게 짧게 실행되도록 함
※멀티 태스킹: 여러 프로그램을 동시에 실행함
GNU 프로젝트
- GNU = Gnu is Not Unix
- 유닉스 운영체제를 여러 회사에서 각자 개발, 소스를 공유하지 않는 문화에 반발
- 리차드 스톨만: 초기 컴퓨터 개발 공동체의 상호협력적인 문화로 돌아갈 것을 주장하며, 1985년도에 GNU선언문 발표
- GNU프로젝트를 지원하기 위해 자유 소프트웨어 재단(FSF)설립
- GNU공개 라이선스(GPL)라는 규약을 제공하여 소스 오픈 장려
- 운영체제 개발시에는 필요한 라이브러리, 컴파일러, 에디터, 쉘도 개발해야함
- GNU 프로젝트 시 운영 체제 커널(GNU Hurd)개발 시도 → 개발 지연…
- 따라서 이때 리누스 토발즈가 오픈한 리눅스 커널와 통합해 개발한 것이 바로 리눅스!!
리눅스 설치 방법
1.가상 머신 소프트웨어 ex)VMware
- PC환경에 따라 예상치 못한 문제 발생할 수 있음
2.클라우드 컴퓨팅 기반 설치 ex)AWS★권장!!
- 클라우드 컴퓨팅이란?
서버 환경을 미리 구축해놓고, 간단한 설정으로 바로 사용할 수 있도록 만든 서비스(빌리는 개념)
- 장점
- 초기 위험비용이 굉장히 적게 든다.
- 사용자 수가 증가하면 바로 서버 개수를 늘릴 수 있다.
- 서버를 구축하는데 별도의 기간이 들지 않는다.
-
요즘 왠만한 서버 환경은 클라우드 컴퓨팅 환경을 사용하며, 서버 컴퓨터는 대부분 리눅스 환경을 많이 사용함
- 클라우드 컴퓨팅 설정 방법
- AWS Free Tier 서비스 가입
- 준비물: 해외 결제 가능한 신용카드, email 계정
- 무료로 1년간 서비스 사용 가능, 기간 지난 후 계정 닫으면 됨
- EC2 또는 인스턴스(서버) 생성(서버컴퓨터를 지칭하는 용어)
- Elastic IP(탄력적 IP) 생성
- IP주소는 인터넷 접속시마다 동적으로 바뀌는데 이렇게 되면 클라이언트가 서버에 요청이 힘들기 때문에 고정된 IP가 주어짐
- 자기 PC(클라이언트)에서 EC2(서버)접속
→cli
환경 열어주기(윈도우에서 Git Bash 사용했음)
- AWS Free Tier 서비스 가입