UMC 서버 워크북 정리

qq·2023년 9월 27일
0

UMC5기스터디

목록 보기
2/2

3학년 2학기 때 운이 좋게 서버 운영진으로써 스터디를 진행하게 되었다.

매 주 스터디마다 많은 양의 서버 워크북 중 뭐를 보는 것을 추천하는지나 꼭 정리하고 넘어갈 점들을 정리해보고자 한다

우리 대학교 기준 3학년 2학기에 운영체제라는 과목을 듣는데, 이를 수강하기 이전에 서버 공부를 시작하면 많이 생소하고 어려울 수 있다. 완벽하게 이해까지는 못해도 워크북에 걸려 있는 정리 블로그를 간단하게 읽어보고 시작해보자.

IP주소와 포트 번호

IP 주소
네트워크 상에서 유일하게 식별이 가능한 값
포트 번호
컴퓨터 프로세스간의 식별 값

TCP

Transmission Control Protocol의 약자이고 이 프로토콜은 모두 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 구현되어 있고 연결 지향적인 특징을 갖고 있다.

System Call

운영 체제의 커널이 제공하는 서비스에 대해 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다

사용자 프로그램이 디스크 파일에 접근하거나 화면에 결과를 출력하는 등의 작업이 필요한 경우, 즉 사용자 프로그램이 특권 명령의 수행을 필요로 하는 경우, 운영체제에게 특권 명령의 대행을 요청하는 것이 시스템 콜

하드웨어 인터럽트

인터럽트란?
CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것

하드웨어 인터럽트는 하드웨어가 발생시키는 인터럽트로 CPU가 아닌 다른 하드웨어 장치가 cpu에 어떤 사실을 알려주거나 cpu서비스를 요청해야 할 경우 발생
소프트웨어 인터럽트랑 구별을 하자!!

소프트웨어 인터럽트란?
소프트웨어(사용자 프로그램)가 발생시키는 인터럽트이다. 종류는 예외 상황이나 system call등이 존재

리눅스의 파일과 파일 디스크립터

리눅스에서 모든 요소를 파일로 취급
파일 디스크립터는 socket()의 리턴 값

socket()시스템 콜

소켓을 만드는 시스템 콜

bind() 시스템 콜

생성한 소켓에 실제 IP주소와 포트번호를 부여하는 시스템 콜
OS에게 어떤 소켓에 IP주소와 포트번호를 부여할지 알려주기 위해 파라미터에 소켓의 파일 디스크립터 포함
참고로 클라이언트는 통신 시 포트 번호가 자동으로 부여되기에 bind 시스템 콜은 서버에서만 사용

listen() 시스템 콜

연결지향인 TCP에서만 사용
파라미터로 파일 디스크립터(소켓)를 클라이언트의 연결 요청을 받아들임
최대로 받아주는 크기를 backlog로 설정

accept() 시스템 콜

accept 시스템 콜은 backlog queue에서 syn을 보내 대기 중인 요청을 큐로 하나씩 연결에 대한 수립을 해줌

멀티 프로세스

accept System call 이후 이루어진다.
프로세스란 프로그램이 메모리에 올라와 cpu를 할당받고 프로그램이 실행되고 있는 상태. 동적인 개념

멀티 프로세스란?

  • 여러 개의 프로세스가 서로 협력적으로 일을 처리하는 것
  • 여러 개의 프로세스가 작업을 병렬 처리하는 것
  • 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 때 사용

장점

  • 하나의 프로세스가 죽어도 문제가 확산 되지 않는다
  • 독립된 구조이기 때문에 안정성이 높다
    단점
  • 멀티 스레드보다 많은 메모리 공간과 CPU시간을 차지한다
  • 주소공간의 공유가 잦을 경우 오버헤드가 발생하여 성능 저하가 발생할 수 있다

병렬 처리

  • 병렬 처리란 여러개의 프로세서를 통해 하나의 프로그램을 처리하는 것
  • 병렬 처리를 수행 시 처리부하를 분담하게 되어 처리 속도의 향상을 기대할 수 있다
  • 병렬 처리는 단일 프로세스가 아닌 다중 프로세서로 작업을 처리한다
  • 프로그램 코드 상 병렬 처리는 멀티 스레드환경에서 task를 분산해서 처리한다는 의미이다

후기: 챌린저 입장으로 정리를 하지 않고 중요한 것 위주로 정리를 하다 보니 2학년 데이터 통신 때 배운 내용들과 4기 UMC 서버 워크북을 했던 것들에 대한 복습이 됬던 것 같다. 또한, 운영체제 과목을 현재 수강중인데 시스템 콜과 멀티 프로세스 등의 용어들이 나와 익숙했다.

profile
백엔드 개발자

0개의 댓글