시스템프로그래밍과 서버기술
- UNIX(리눅스) 기본 사용법, OS와 실무기반
- 클라우드 컴퓨팅(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: 상세정보 출력(.숨김파일까지)
권한
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() 비자발적인 종료
- 부모가 자식프로세스 강제 종료:
- 자식이 할당자원을 넘어선 과한 자원을 요구할때
- 자식에게 할당된 작업이 더이상 필요하지 않을때
- 부모프로세스가 종료될때
대기 - 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
'CS' 카테고리의 다른 글
CS운영체제3_쓰레드, 교착상태, 페이지폴트와 페이지 교체 알고리즘 (0) | 2023.04.01 |
---|---|
cs 운영체제2_스레드,인터럽트, 시스템콜 개념정리 및 오답노트 (0) | 2023.03.25 |
cs 운영체제-프로세스 개념정리 및 오답노트 (0) | 2023.03.18 |
댓글