본문 바로가기
CS

CS 시스템 소프트웨어_리눅스, AWS실습

by hyuni07 2023. 4. 9.

시스템프로그래밍과 서버기술

  1. UNIX(리눅스) 기본 사용법, OS와 실무기반
  2. 클라우드 컴퓨팅(AWS)을 사용해 서버 컴퓨터 구축하는 기법

리눅스

리누스 토발즈가 UNIX를 집에서도 쓰고 싶어 개발. + GNU프로젝트(리차드스톨만: 개발소스 공유해 성장하자!)

리누스토발즈가 리눅스 어려워서 커널소스 오픈함. GNU프로젝트가 리눅스커널소스 가져와서 많은 개발자가 동참하여 GNU/Linux 개발됨!

 

-최근 서버환경 대부분

-임베디드시스템에도 많이 사용  *임베디드(작은성능의 컴퓨터) ex.안드로이드

-클라우드컴퓨팅, 도커 등의 서버기술과도 함께 자주쓰임. 

*클라우딩컴퓨팅: 미리 서버환경 구축해두고, 간단한 설정으로 바로 사용할 수 있게 한 것. 한 컴퓨터로 여러 서버열어 둘 수 있다.

 

클라우드 컴퓨팅 설정 - 리눅스 설치 (aws실습)

1,EC2(서버) 생성 (우분투 리눅스 OS 기반)

2. Elastic IP (탄력적IP,고정IP) 생성

3. 내 PC(윈도우)에서 EC2(서버) 접속 

 

EC2  =  (서버)컴퓨터

EC2 인스턴스를 생성 -> 한대는 무료(*국가별로 나타나므로, 어떤 국가에 생성해뒀는지 기억해두기. ❕여러 나라에 하나씩한다면.. 총합 1개가 넘어가면 유료지출됨)

 

인스턴스 종료 = 인스턴스 삭제

Terminate instance(인스턴스 종료) === 삭제

 

생성된 인스턴스의 ip(v4)는 임시번호 제공된 것.(상황에 따라 바뀔수도 있음)

   고정아이피(= 탄력적IP) 생성하려면? -> Elastic IP 생성하여 해당 인스턴스에 연결(Associate)

   (=해당 서버 컴에 접속하기위한 주소-고정IP로 만듦)

 


 

그럼 putty를 통해 해당 서버 컴퓨터에 접속해보자!

 

1.우선 putty를 열고, auth에서 인스턴스 생성 시 만든 키(ppk확장자)를 넣어준다.

 

2. Session으로 이동하여 session이름지어서 저장

 

3. 다시 putty 켰을 때, 해당 session 클릭 Load하면 해당 ip뜸. open.

   ❗로드하면 뜨는 창 반드시 accept 누를 것 ❕

4. login as: 가 뜨면 ubuntu 엔터. 접속됨!

(인스턴스 생성 시 ubuntu os로 설정하였음.- 우분투 운영체제 환경을 사용)

putty에 작성하는 명령이 진행되고 있는 곳 = (내컴퓨터X) 생성한 서버 컴퓨터(우분투 리눅스OS)

  


사용자 - OS 또는 컴퓨터 하드웨어 간 인터페이스.

사용자의 명령을 실행. 필요시 운영체제에 통신(시스템콜로)해서 사용자가 원하는 동작을 해냄.

  •  사용자의 명령을 해석해서, 커널에 명령을 요청한다.
  •  관련된 시스템콜을 사용해서 프로그래밍이 작성되어 있다.

-리눅스의 기본 쉘인 bash에서 제공하는 기본 명령어를 학습한다.

  • sudo ~: root계정으로 로그인x 상태에서 root권한이 필요한 명령을 실행할 수 있도록 함
  • pwd: 현재 디렉토리 위치
  • cd : 디렉토리 이동  (cd ~: 홈/사용자 폴더로 이동,  cd -: 이동하기 이전폴더)
  • ls: 파일목록 출력 (ls -al: 상세정보 출력(.숨김파일까지)

권한  바로가기갯수  사용자id  그룹id  파일size  파일생성일자

 

권한

d:디렉토리 /  -:파일

 

rwx rw- r-x

소유자의권한 그룹의권한 기타사용자의권한

  권한 파일일 때 폴더일 때
r 읽기 읽고 카피 ls명령어 가능
w 쓰기 수정 파일생성가능
x 실행 실행 cd접근가능

inode

운영체제에서 사용하는 파일시스템 중 하나.

  • 수퍼블록:파일시스템 대표
  • 아이노드블록: 그 파일의 상세정보. 일종의 pcb 

 *pcb: 운영체제 커널의 자료구조. 프로세스 스케줄링을 위해 프로세스에 관한 중요한 정보를 담고있는 정보. 프로세스 생성시 고유의 pcb생성되며 프로세스가 종료되면 제거된다.

  • 데이터블록: 실제 데이터를 담음

아이노드 메타데이터에는 파일권한, 소유자정보, 파일 사이즈, 생성시간 등 시간정보 및 메이터저장위치 등을 담고있음.

 

가상파일 시스템

네트워크 뿐만 아니라 마우스, 키보드 등 모든 디바이스를 파일처럼 다룰 수 있다.

이 VFS로 리눅스에서 다양한 파일시스템을 지원하는 것이 가능함.

 

참고-https://devraphy.tistory.com/250

 

37. 파일 시스템 - inode 방식과 가상 파일시스템

1. inode 파일 시스템 - inode 방식의 파일 시스템은 다음 세가지의 블럭을 갖고 있다. ▶ 슈퍼 블록: 파일 시스템의 전체 정보를 가진 블록 ▶ 아이노드 블록: 각 파일의 상세 정보를 가진 블록 ▶ 데

devraphy.tistory.com

 

디렉토리 엔트리

디렉토리를 표현하는 데에 쓰이는 자료구조.

일반적으로 파일이름, 파일속성 등 파일에 대한 정보가 저장되는데,

유닉스 계열에서는 파일이름&아이노드 번호만 저장됨.

 

리눅스 환경에서의 프로세스

ps 명령어: 실행중인 프로세스 정보를 확인

Init 프로세스 PID 1을 가지며 운영체제에서 생성된다.

 

프로세스 생성 시스템 콜 - fork(), exec()

기본적으로 프로세스 생성시, 리눅스(유닉스 계열)에서는 fork() 시스템콜을 사용해서 부모 프로세스를 복사해 자식 프로세스를 생성한다.(최초 프로세스 생성은 제외)

 

fork() 복제생성

- 함수를 사용해 부모프로세스(함수를 호출한 프로세스)의 내용을 그대로 자식프로세스로 복제 생성한다.

 

exec() 새로생성(주소공간덮어)

- 새로운 프로그램으로 주소공간을 덮어씌운다.

- 현재 프로세스 이미지를 별도 메모리 공간에 복사하지 않는다.

 

종료 - exit(), abort()

exit() 자발적인 종료

- 프로세스가 마지막 명령을 수행한 후 os에 이를 알림. os는 해당 프로세스로부터 자원을 회수하고 해당 프로세스를 정리함. 자식프로세스일 경우 -> 부모프로세스에 종료되었음을 알림.

- 현재 프로세스를 즉시 종료할 수 있다.

 

abort() 비자발적인 종료

- 부모가 자식프로세스 강제 종료: 

  1. 자식이 할당자원을 넘어선 과한 자원을 요구할때
  2. 자식에게 할당된 작업이 더이상 필요하지 않을때
  3. 부모프로세스가 종료될때

 

대기 - wait()

자식프로세스가 종료되기를 기다리는 동안 부모프로세스를 blocked상태로 만들 때 호출하는 시스템콜

- 자식프로세스가 종료되야지만 blocked상태에서 깨어나 ready큐로 갈 수 있음.

 

좀비프로세스

회수되지 않은 종료상태의 자식프로세스.

자식 프로세스가 종료되었지만 부모 프로세스가 자식 프로세스의 종료 상태를 회수하지 않았을 경우에 자식 프로세스를 좀비 프로세스라고 함

 

Pthread

POSIX Thread의 별칭이며 thread 생성 및 관리를 위한 핵심 라이브러리

glibc에 포함되어 있으며, 컴파일시 명시적으로 옵션 명시해야함

Thread 동기화를 위한 API를 제공함

 Mutex =>  pthread_mutex_lock, pthread_mutex_unlock 함수로 사용.

 

참고-https://1d1cblog.tistory.com/373

 

열혈 TCP/IP 18-2. 쓰레드의 생성 및 실행

쓰레드 관련 함수 - 쓰레드 생성 : pthread_create -> 성공 시 0, 실패 시 0이외의 값 반환 -> thread : 생성할 쓰레드의 ID 저장을 위한 변수의 주소값 -> attr : 특성 정보 -> start_routine : 별도의 실행 흐름이

1d1cblog.tistory.com

 

댓글