본문 바로가기

교육

Linux

OS

: 하드웨어를 직접 관리하는 소프트웨어

⇒ 사용자에게 컴퓨터의 프로그램을 쉽고 효율적으로 실행할 수 있는 환경을 제공

⇒ 컴퓨터 시스템 하드웨어 및 소프트웨어 자원을 여러 사용자 간에 효율적 할당, 관리, 보호하는 것

⇒ 사용자 프로그램의 오류나 잘못된 자원 사용을 감시하는 것과 입출력 장치 등의 자원에 대한 연산과 제어를 관리

 

OS에서 하는 일들

프로세스 관리. 인터럽트. 메모리 관리. 파일 시스템. 장치 드라이버. 네트워킹 (TCP/IP, UDP). 보안 (프로세스/메모리 보호). 입출력 관리 등등 … 리눅스와 운영체제

 

OS의 종류

① 윈도우(windows) : microsoft사에서 개발한 운영체제로, 노트북 및 서버 시스템에서 주로 사용된다.

② macOS : Apple사에서 개발한 운영체제로, mac 컴퓨터 및 노트북에서 사용된다. 시스템 안정성과 사용자 편의성에 중점을 둔 운영체제다.

③ 리눅스(Linux) : 오픈 소스 운영체제로, 다양한 배포판이 있다. 서버 시스템 및 임베디드 시스템에서 주로 사용되며, 안정성과 보안성이 높은 운영체제다.

④ 유닉스(UNIX) : 다중 사용자 및 다중 작업을 지원하는 운영체제로, 서버 환경에서 주로 사용된다. 안정성과 신뢰성이 높다. IBM일괄 관리

 

리눅스

유닉스 계열의 운영체제

1969 : UNIX (C로 쓰여진 최초의 운영체제)

1987 : 교육용 OS 인 minix (Andrew S. Tanenbaum) => 소스 코드 공개

Linus Tovals 가 이를 이용하여 개인 PC용 운영체제를 만들 계획을 세움 초기에는 운영체제가 아닌 운영체제(minix) 위에서 실행되는 터미널 환경 파일을 제어할 수 있는 수준까지 만든 후 포직스(POSIX)에 호환되는 운영 체제 커널로 발전

1991 : GNU(그누) 라이선스 아래에서 커널 소스를 공개함 (0.01)

 

*POSIX : IEEE(전기전자공학자협회)가 제정한 유닉스의 애플리케이션 프로그래밍 인터페이스(API) 규격

*GNU(그누) 라이선스 : GNU 라이선스는 자유 소프트웨어를 사용, 복제, 수정, 배포할 수 있는 규정들의 모음

 

리눅스의 특징

1) 대부분의 리눅스는 무료 예외) 레드햇 리눅스, 이전의 SUSE Linux

 

2) 대부분의 플랫폼 (IA-32, AMD64, SPARC, PowerPC, ARM , etc…) 에서 사용가능

⇒ 간단히 말하면, 인텔,AMD, 썬, 애플 등 많은 회사들이 만들어낸 하드웨어 제어 방법에 호환되며 일반 PC 가 아닌 임베디드 기기 에서도 호환성을 보여줌

 

3) 유닉스와 호환되며 표준 라이브러리, 프로그래밍 도구, 컴파일러, 디버거 등 의 완전한 유닉스 프로그래밍 환경을 제공

 

• 임베디드 기기 : embedded system이라고도 불리며, 기계나 다른 시스템에서 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템을 의미. 이는 주로 제한된 환경에서 작동하며, 특정한 목적을 위해 설계. 임베디드 시스템은 자동차의 엔진 제어 장치, 가전제품의 제어 시스템, 의료 기기, 디지털 카메라 등 다양한 분야에서 활용

 

4) 강력한 네트워크 지원

⇒ TCP/IP , IPv4,IPv6, UDP, UUCP 등의 다양한 프로토콜

⇒ 이더넷, 토큰링, 전화 접속, 무선 네트워크 등 다양한 네트워크 기술을 사용할 수 있음

⇒ 인터넷 기반 어플리케이션 지원 ⇒ 리눅스 자체를 라우터 및 방화벽으로 동작시킬 수 있음

⇒ 다양한 웹서버 지원( apache 등)

⇒ 그 외 다양한 네트워크 서비스(samba, FTP, NFS 등)

 

5) 다양한 파일 시스템 지원 (ext2,ext3, fat, ntfs 등)

 

6) 낮은 하드웨어 사양에서도 사용가능

 

7) 리눅스 및 리눅스 어플리케이션들은 대부분 소스가 공개되어 자유롭게 사용, 수정, 재배포가 가능함.

 

8) 전 세계 수백만의 개발자들에 의해 기능이 나날이 발전하고 있음

 

리눅스 장점 

1. 무료제공

2. 공개 운영체제

3. 강력한 보안 기능

4. 다양한 하드웨어 지원

5. 무료로 고가의 유닉스 서버와 동일한 성능제공

6. 유닉스와 완벽하게 호환 가능

7. C언어,JAVA와 같은 대부분의 개발언어 지원

8. 특정기계에 의존하지 않아 어떤 시스템에도 변경 가능

 

리눅스 단점

1. 공개 운영체제로 문제발생시 보상 X

2. 한글 입출력 어려움

3. 기술지원 부족

4. 특정 하드웨어에 대한 자원 부족

5. 사용자의 숙련된 기술 요구

 

리눅스 배포판

 

리눅스의 구조

하드웨어(Hardware, H/W) 컴퓨터 하드웨어는 케이스, 중앙 처리 장치(CPU), 모니터, 자판(키보드), 컴퓨터 기억 장치(RAM), 그래픽 카드(GPU), 사운드 카드, 메인보드와 같은 컴퓨터의 물리적 부품을 의미

커널(Kernel) 사용자가 실행시키는 응용프로그램(Application)과 하드웨어 사이의 관리자 역할을 수행하며 쉘과 연관되어 쉘에서 명령하는 작업을 수행하고 수행된 결과를 쉘로 보내는 역할을 한다.

쉘(Shell) 셸은 운영체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하며 사용자가 입력하는 명령을 대신 해석해 커널에게 전달하여 실행해주는 프로그램

응용프로그램(Application) 응용 소프트웨어 또는 애플리케이션은 운영체제에서 실행되는 모든 소프트웨어

 

 

리눅스의 데이터 관리

리눅스에서 관리하는 모든 것은 파일로 인식

⇒ 일반 파일, 하드웨어, 현재 돌아가는 프로세스 등..

파일 시스템 사용

⇒ 파일을 효율적으로 관리하기 위해 디렉토리를 사용

⇒ 디렉토리는 계층구조

⇒ 전체 파일을 용도에 따라 계층 디렉토리로 구분하여 관리하며 이것을 파일 시스템

 

리눅스 파일의 종류

일반파일 ⇒ 데이터를 저장. 각종 텍스트파일, 실행파일, 이미지 파일 등 리눅스에서 사용하는 대부분의 파일 실행파일이나 이미지 파일의 경우 데이터가 바이너리 형태로 저장되어 바이너리 파일 이라고도 함.

디렉토리 ⇒ 디렉토리도 파일로 취급. 디렉토리 파일에는 해당 디렉토리에 저장된 파일이나 하위 디렉토리에 대한 정보가 저장

심벌릭 링크 ⇒ 원본 파일을 대신하도록 원본 파일을 다른 파일명으로 지정한것 으로 윈도우의 바로가기와 개념이 비슷.

장치파일 ⇒ 하드디스크나 마우스같은 장치들도 파일로 취급. 장치들을 관리하기 위한 파일. 각종 장치를 관리하기 위해 시스템 관리자는 해당 장치 파일에 접근. 장치파일은 /dev 디렉토리 아래에 위치.

 

디렉토리 구조

수많은 디렉토리(파일)들을 효율적으로 관리하기 위해 계층적으로 구성 (트리구조).

디렉토리는 그 밑으로 하위 디렉토리로 나누어지고 각 디렉토리에는 파일들이 저장. 모든 디렉토리의 최상위 디렉토리를 루트 디렉토리. 루트 디렉토리는 / 으로 표시.

 

주요 디렉토리의 기능

디렉토리명 설명 디렉토리명 설명
/ 최상위(루트)디렉토리. 디렉토리들의 절대 경로를 표기할 때 이 디렉토리로 부터 시작함 /bin 기본적인 명령어가 저장, 리눅스에서 자주 사용하는 mv, cp, rm등과 같은 명령어들 이 이 디렉토리에 존재함
/home 사용자들의 홈 디렉토리가 생성되는 곳, 사용자를 추가하면 사용자의 id와 동일한 디렉토리가 이곳 에 자동으로 생성 /boot 부팅에 필요한 정보를 가진 파일들
/media CD_ROM이나 USB같은 외부 장치 연결 /var 시스템 운영 중에 발생한 데이터와 로그가 저장
/opt 추가 응용프로그램패키지가 설치됨 /tmp 시스템 사용 중에 발생한 임시데이터가 저장 (부팅 시 초기화)
/dev 장치파일들 저장 /lib 커널이 필요로 하는 각종 라이브러리 파일, 커널 모듈파일 등이 존재
/root root계정의 홈 디렉토리 /run 실행중인 서비스와 관련된 파일 저장
/sys 리눅스 커널 관련 정보 /proc 프로세스 정보 등 커널 관련 정보가 저장
/usr 기본 실행파일과 라이브러리 파일, 헤더 파일등의 파일 저장 /mnt 파일 시스템을 임시로 연결, Media는 OS에서 자동으로 마운팅 해주는 포인트로 주로 사용되며 mnt는 사용자가 직접 마운트 하는 경로로 사용
/etc 리눅스 설정을 위한 각종 파일 /sbin 주로 시스템 관리자들이 사용하는 시스템관리자용 명령 어를 저장

 

리눅스 사용자 관리

1) 사용자의 분류

• 루트계정 : 모든 권한을 가진 특별한 사용자

• 시스템 계정 : 리눅스 설치시 기본으로 생성되는 계정

• 사용자 계정 : 실제 리눅스 사용자를 위한 계정

 

2) 루트 계정 관리

• root 계정 : 완전한 권한을 갖는 슈퍼유저 사용자. 해당 시스템의 대표 관리자 계정 UID는 0

• 루트계정 권한 획득 방법

⇒ root 사용자로 로그인 : $sudo passwd root 패스워드 입력후 로그인

⇒ root 사용자로 임시 전환 : sudo 명령어를 통해 루트권한으로 해당 명령어를 실행 해당명령이 종료되면 root권한도 사라짐 $sudo vi /etc/passwd


서버 하드웨어의 구성

1) 하드웨어 (HWㆍHardware)

⇒ 실체가 있는(시각적으로 보이면서도 만질 수 있는), 컴퓨터의 모든 물리적인 부품을 통틀어 의미.

※ Windows를 사용하기 위한 노트북 혹은 Android/iOS 사용을 위한 스마트폰, 그 외 모니터, 키보드 마우스 등이 모두 하드웨어

2) 서버와 일반 PC의 차이

⇒ PC / 서버용 하드웨어의 가장 큰 차이는 사용 용도에 따른 부가적인 기능 탑재/제거

• 일반 PC 하드웨어 : 장시간 사용하지 않는 전제로 제작되며 이용자들은 평균적으로 음성채팅, 게임, 영화시청 등의 목적으로 일반 PC를 사용하기 때문에 멀티 미디어 기능이 제공되어야 함.

• 서버용 하드웨어 : 원활하며 끊임없는 서비스를 공급하기 위하여 365일 24시간동안 구동되어야 하기 때문에 불안정/불필요할 수 있는 기능들을 배제하고 품질 및 내구성이 좋아야 함. 수많은 데이터를 빠르게 처리하기 위하여 CPU 또는 RAM을 추가 장착하여 고성능 연산기능을 추가하기도 함

 

1) 메인보드

⇒ CPU, RAM, DISK 등 여러가지 부품 및 케이블을 연결시킬 수 있으며 전력 공급, 각 부품들의 통로가 되는 핵심 기판. 서버용으로 생산된 하드웨어를 부착하기 위해서 호환성을 유의.

2) CPU (중앙처리장치)

⇒ 서버의 두뇌라고 할 수 있으며 모든 하드웨어에 대해 제어하고 입력되는 수많은 데이터들을 처리, 연산하는 핵심 부품

3) RAM (ECC 메모리)

⇒ 랜덤 액세스 메모리, 즉 램이라고 불리며 여러 영역에서 자유롭게 내용을 읽고 쓰고 지울 수 있는 주 기억장치이며 기입되는 내용들은 전원공급이 원활하게 유지되는 동안 해당 기억장치에 저장 서버용 RAM의 경우 보통 ECC 메모리를 사용 – ECC는 컴퓨터 메모리의 한 유형으로 메모리 데이터 손상을 탐지하고 수정하는 역할을 지님

4) 디스크 (스토리지)

< SSD>

⇒ 반도체로 구성되어 플래시 메모리라는 전자적 데이터 저장 방식을 지닌 보조기억 장치이며 평균적으로 2.5인치 SSD가 사용. 가볍고 튼튼하며 물리적인 간섭을 두고 있지 않아 읽고 저장하는 속도가 빠름.

< HDD (3.5”) >

⇒ 하드디스크라고 불리며 플래터라는 원판을 회전시킨 후 자기 패턴 측정으로 정보를 읽고 저장하게 되며 평균적으로 3.5인치 하드디스크가 사용. 물리적인 데이터 저장 방식을 지니고 있어 읽고 저장하는 경우 비교적 느린 속도. 사용시 물리적으로 충격을 받거나 강한 자성과 맞닿을 경우 플래터에 손상을 입힐 수 있음.

 

SSD와 HDD의 차이

⇒ 가장 큰 차이는 데이터 저장 방식과 저장 및 읽기에 관한 속도

⇒ HDD의 경우 물리적 데이터 저장방식을 사용하고 있어 읽기, 저장에 관한 속도 자체는 전자적 데이터 저장방식을 지닌 SSD보다는 느림.

⇒ SSD는 저장 가능한 용량대비 가격이 높고 수명이 짧지만 속도가 빠르고 소음이 없으며 가볍고 튼튼한 장점

⇒ HDD는 물리적인 방식으로 인해 소음이 발생하게 되며 충격에 약하지만 저장 가능한 용량대비 가격이 저렴하고 장기간 데이터 저장하는 것에 용이하다는 장점

 

시스템 버스

1) 데이터 버스 (Data Bus)

⇒ 기억장치 & 입출력장치의 명령어를 CPU에게 전달하거나, 반대로 CPU의 결과값을 기억장치 & 입출력 장치에게 전달하는 버스.

⇒ 따라서 양방향 버스이며, 시스템의 전반적인 성능을 좌우함.

⇒ 여러 분리된 선으로 구성되어 있으며, 선의 수(32, 64, 128 ~)는 곧 CPU가 수용할 수 있는 데이터의 크기이자 한번에 이동할 수 있는 bits의 크기이다.

 

2) 주소 버스 (Address Bus)

⇒ CPU가 기억장치 & 입출력장치에게 데이터를 보내기 위해 주소를 전달해주는 버스. (메모리의 주소나, I&O Device의 포트 번호) ⇒ 따라서 단방향 버스이며, 입출력장치와는 양방향을 이용한다.

 

3) 제어 버스 (Control Bus)

⇒ 데이터 버스와 주소 버스를 제어하기 위해 신호를 주고받는 버스.

⇒ CPU가 Memory를 Read할지, Write할지에 대한 정보를 전달.

 

Booting Up

1) 전원기동

2) 전원공급 ⇒ 전원 공급 장치가 메인보드에게 전력을 공급.

3) 부트 프로그램 실행 및 하드웨어 검사 ⇒ 전원이 공급되면, 가장 먼저 CPU가 ROM에 있는 BIOS를 실행. ⇒ BIOS는 POST라는 하드웨어 검사를 수행하는데, 이 때 하드웨어가 정상인지 전체적으로 검사.

4) 운영체제 로드 ⇒ 운영체제는 하나의 프로그램이자 데이터 형태이므로, DISK에 저장되어 있다가 RAM에게 넘어가는 방식 ⇒ 하드웨어 검사 결과가 정상이라면, DISK에 있는 Boot Loader가 OS를 RAM에게 넘겨줌.

5) 운영체제 사용 ⇒ OS가 실행되면, 이제 사용자가 입력하는 명령에 의해 CPU가 프로그램을 실행시키고 동작을 수행.


네트워크

1) 컴퓨터 네트워크란?

⇒ 컴퓨터 네트워크 (== 네트워크)

• 두 대 이상 컴퓨터끼리 연결된 네트워크

• 컴퓨터 간에 필요한 데이터(정보)를 서로 주고받을 수 있음

⇒ 인터넷

• 전 세계의 큰 네트워크로부터 작은 네트워크까지를 연결한 거대한 네트워크

 

2) 패킷(packet)이란?

⇒ 네트워크를 통해 전송되는 데이터의 작은 조각. 큰 데이터가 있더라도 작게 나누어서 보내는 게 규칙. (패킷 == 택배)

⇒ 작게 나누지 않고 큰 상태 그대로 보내면 번거롭지도 않고 오히려 더 편할 수 있지만, 큰 데이터를 그대로 보내면 그 데이터가 네트워크의 대역폭을 너무 많이 차지(점유) 해서 다른 패킷의 흐름을 막을 위험이 있다.

⇒ 용량이 큰 데이터는 패킷을 분할하여 전송하고, 전송이 완료되면 원래 사진대로 되돌리는 작업이 필요. 다만, 전송한 패킷이 네트워크가 지연되어 늦게 도착하거나 누락되는 등 전송 순서대로 도착하지 않을 수 있기 때문에 패킷 번호(디지털 데이터)를 부여하고 도착 후 패킷 번호(디지털 데이터)에 맞춰 정렬한다.

 

정보의 양을 나타내는 단위

1) 비트와 바이트란?

⇒ 모든 컴퓨터는 숫자 0과 1만을 다루는데, 그 0과 1의 집합을 디지털 데이터(digital data)라고 함. 0과 1의 정보를 나타내는 최소 단위를 비트(bit)라고 함. 0과 1을 표현하는 1비트(bit)는 사진과 같이 0또는 1인 숫자 여덟 개를 모아 표시 할 수 있음. 이 단위를 바이트(byte)(== 8bit)라고 부름.

• 신호를 나타내는 최소 단위 비트(bit), 정보의 기본단위 바이트(Byte)

 

2) 문자 코드 ⇒ 모든 것을 0과 1의 집합으로만 다루는 컴퓨터의 문자 입력 방법 ⇒ 숫자와 문자의 대응표를 미리 만들어 두었기 때문에 가능. 이 대응표를 문자 코드(character code)라고 함. ⇒ 문자 코드 중 하나인 ASCII(아스키) 코드는 알파벳, 기호, 숫자 등을 다룰 수 있는 기본적인 문자 코드임.

ASCII (American Standard Code for Information)

 

3) 전기 신호 ⇒ 네트워크에 데이터를 전송하는 경우에는 비트 정보를 전기 신호로 변환하여 전송

 

 

가정에서 하는 랜(LAN)구성 

1) 가정에서의 네트워크 구성

⇒ ISP : 인터넷 서비스 제공자(사업자)

⇒ 인터넷 회선: 대부분 광랜을 사용

⇒ 인터넷 공유기: 인터넷 공유기는 인터넷 서비스 제공자와 네트워크를 연결. 인터넷 공유기를 중심으로 내부 인터넷망(사설망)을 구성하고, 다양한 기기를 연결.

회사에서 하는 랜(LAN)구성 

1) 소규모 회사에서의 네트워크 구성 ⇒ 가정에서의 랜 구성과 눈애 띄게 다른 점은 DMZ(DeMilitarized Zone)라는 네트워크 영역이 있다는 점

DMZ(DeMilitarized Zone): 외부에 공개하기 위한 네트워크.

⇒ 외부에는 서버를 공개하는데 주로 웹 서버, 메일 서버, DNS 서버를 공개

• 웹 사이트를 불특정 다수의 외부 사용자에게 공개하려면 웹 서버를 외부에 공개

• 외부 사용자와 메일을 주고받으려면 메일 서버를 외부에 공개

• 외부에서 도메인 이름을 사용하여 회사의 서버에 접속하려면 DNS 서버를 외부에 공개

⇒ 회사의 서버는 온프레미스나 클라우드로 운영되고 있다

온프레미스(on-premise): 사내 또는 데이터 센터에 서버를 두고 운영하는것. 클라우드 비교할 때 자주 사용하는 용어

 

 

 

'교육' 카테고리의 다른 글

[NCP] Compute & Network  (2) 2023.10.10
가상화*  (0) 2023.10.05
베어메탈  (0) 2023.10.05
네이버클라우드  (1) 2023.10.05
Cloud 기초  (1) 2023.10.05