CS지식의 정석

Date:     Updated:

카테고리:

Chapter 02 네트워크

02-1 네트워크의 기초 #1 처리량, 지연시간

  • 노드란 서버, 라우터, 스위치 등 네트워크 장치를 의미한다
  • 스위치는 데이터의 목적지를 파악하여 적합한 경로로 스위칭 해주는 역할을 한다
  • 라우터는 자신이 보유한 정보를 토대로 목적지까지의 적합한 경로를 찾아주는 라우팅 기능을 한다
  • 스위치는 데이터 링크 계층에, 라우터는 네트워크 계층에 속한다 그래서 스위치는 MAC 주소를 기반으로 작동하고, 라우터는 IP주소를 기반으로 작동한다
  • 링크는 유선 또는 무선을 의미한다

network

02-2 네트워크의 기초 #2 네트워크 토폴로지와 병목현상

  • 네트워크 토폴로지는 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태를 의미한다
  • 스푸핑이란 데이터를 탈취 당하는것을 의미한다
  • 스타 토폴로지는 장애 노드가 중앙 노드가 아닐 경우 다른 노드에 영향을 끼치는 것이 적다
  • 링형 토폴로지는 네트워크 구성 변경이 어렵고 회선에 장애가 발생하면 전체 네트워크에 영향을 끼치는 단점이 있다
  • 메시 토폴로지는 한 단말 장치에 장애가 발생해도 여러 개의 경로가 존재하므로 네트워크를 계속 사용할 수 있고 트래픽도 분산처리가 가능하다 하지만 노드의 추가가 어렵고 구축 비용과 운용 비용이 고가인 단점이 있다
  • 네트워크가 어떤 토폴로지를 갖는지, 또한 어떠한 경로로 이루어져 있는지 알아야 회선을 추가하여 병목현상을 해결할 수 있다

02-3 네트워크의 기초 #3 LAN, MAN, WAN

  • LAN은 같은 건물이나 캠퍼스 같은 좁은 공간에서 운영된다
  • MAN은 대도시 지역 네트워크를 나타내며 도시 같은 넓은 지역에서 운영된다
  • WAN은 광역 네트워크를 의미하며 국가 또는 대륙 같은 더 넓은 지역에서 운영된다

02-4 TCP/IP 4계층 모델과 OSI 7계층

  • 인터넷 프로토콜 스위트(Internet Protocol suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합
  • OSI 7계층은 애플리케이션 계층(App을 떠올리자), 프레젠테이션 계층(PPT App을 떠올리자), 세션 계층(PPT가 여러장 있다고 생각하자), 전송 계층(PPT를 메일에 담았다고 생각하자), 네트워크 계층(PPT를 보내려고 랜선을 연결하는 모습을 떠올리자), 데이터 링크 계층(PPT가 다른 사람과 공유되고 있는 모습을 떠올리자), 물리 계층(PPT를 물리적으로 발표하는 모습을 떠올리자)
  • 각 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계 되었다 예를들어 전송 계층에서 TCP를 UDP로 변경했다고 해서 인터넷 웹 브라우저를 다시 설치해야 하는것은 아니다
  • 애플리케이션 계층은 FTP(파일 전송), HTTP(웹서비스통신의 기초), SSH(암호화 네트워크 프로토콜), SMTP(메일 프로토콜), DNS(도메인 이름과 IP 주소를 매핑해주는 서버)등 응용 프로그램이 사용되는 프로토콜 계층

02-5 TCP와 UDP의 차이

  • 가상회선 방식은 가상회선을 따라서 패킷들이 송신호스트 부터 수신호스트 까지 이어지는것을 의미
  • 데이터그램패킷 교환 방식은 회선없이 각각의 패킷들이 효율적인 방식으로 순서를 보장하지 않고 전송됨을 의미
  • 체크섬은 헤더, 패킷내용, IP등을 기반으로 체크섬을 만들어 패킷내부의 데이터 손상을 파악한다

02-6 TCP : 3-웨이 핸드쉐이크와 4-웨이 핸드쉐이크, TIME_WAIT

  • SYN, SYNchronization의 약자이며 연결 요청 플래그이다
  • ACK, ACKnowledgement의 약자이며 응답 플래그이다
  • ISN, Initial Sequence Numbers의 약어이며 초기 네트워크 연결을 할 때 할당된 32비트 고유 시퀀스 번호이다
  • TIME_WAIT는 소켓이 바로 소멸되지 않고 일정 시간 유지되는 상태를 말하며 지연 패킷 등의 문제점을 해결하는 데 쓰인다

02-7 IP와 라우팅(홉바이홉통신)

  • IP 주소를 통해 통신하는 과정을 홉바이홉(hop by hop) 통신이라고 한다
  • 라우팅 테이블은 송신지에서 수신지까지 도달하기 위해 사용되며 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어 있는 리스트를 뜻한다
  • 라우팅 테이블에는 게이트웨이와 모든 목적지에 대해 해당 목적지에 도달하기 위해 거쳐야 할 다음 라우터의 정보를 가지고 있다
  • 게이트웨이는 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어를 모두 일컫는 용어이다
  • 사용자는 인터넷에 접속하기 위해 수많은 톨게이트인 게이트웨이를 거쳐야 하며 게이트웨이는 서로 다른 네트워크상의 통신 프로토콜을 변환해주는 역할을 하기도 한다

02-8 IP와 ARP, RARP

  • 컴퓨터 통신을 정확하게 얘기하면 IP 주소에서 ARP를 통해 MAC주소를 찾아 MAC 주소를 기반으로 통신한다 라고 말할수 있다
  • 브로드캐스트란 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식
  • 유니캐스트란 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 데이터를 전송하는 방식

02-9 캡슐화과정과 비캡슐화과정 그리고 PDU

cap

  • 실질적인 연결은 링크계층에서 일어난다

trans

  • PUD는 단위라고 생각하면 된다

02-10 IP주소체계 : Ipv4와 Ipv6의 차이

  • 이번 단원은 PDF 내용만 보면된다

02-11 www.naver.com을 주소창에 입력했을 때 화면이 나타나기까지의 과정

  • 이번 단원은 PDF 내용만 보면된다

02-12 DEEP DIVE : HTTP/1.x HTTP2의 차이 그리고 HTTP3

  • 이미지 스플리팅이란 하나의 이미지를 다운로드받고, 이를 기반으로 background-image의 position을 이용하여 이미지를 표기하는 방법이다
  • 코드 압축은 코드를 압축해서 개행 문자, 빈칸을 없애서 코드의 크기를 최소화하는 방법이다
  • 이미지 Base64 인코딩은 이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법이다
  • 인코딩이란 정보의 형태나 형식을 보안, 표준화, 처리 속도 향상, 저장 공간 절약 등을 위해 다른 형태나 형식으로 변환하는 처리 방식
  • HOL Blocking은 네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상이다
  • Multiplexing은 단순히 말해서 browser가 하나의 connection 상에서 동시에 여러 개의 request를 보내는 기술을 의미한다
  • 서버 푸시란 서버에서 능동적으로 클라이언트에게 데이터를 전달하는 기술
  • 순방향 오류제어란 송신측이 전송할 문자나 프레임에 부가적 정보를 첨가하여 전송하고, 수신측이 에러를 발견시 이 부가적 정보로 에러검출 및 에러정정을 하는 방식

02-13 HTTPS와 SSL/TLS

  • HTTPS는 HTTP와는 달리 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP를 말한다
  • SSL/TLS은 전송 계층에서 보안을 제공하는 프로토콜이다
  • 보안 세션이란 보안이 시작되고 끝나는 동안 유지되는 세션을 말한다
  • 세션이란 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간을 뜻한다 즉 사용자는 일정 시간동안 응용 프로그램, 자원 등을 사용할 수 있다

02-14 로그인방식: 쿠키와 세션 그리고 토큰방식(JWT)

  • 게임 클라이언트 개발자는 필요없는 강의 같아서 듣지 않음

02-15 브라우저 렌더링 과정

  • 게임 클라이언트 개발자는 필요없는 강의 같아서 듣지 않음

02-16 웹브라우저의 캐시 1. 로컬스토리지와 세션스토리지

  • 게임 클라이언트 개발자는 필요없는 강의 같아서 듣지 않음

02-17 웹브라우저의 캐시 2. 제대로 배우는 쿠키

  • 게임 클라이언트 개발자는 필요없는 강의 같아서 듣지 않음

02-18 웹브라우저의 캐시 3. 로컬스토리지, 세션스토리지, 쿠키의 차이

  • 게임 클라이언트 개발자는 필요없는 강의 같아서 듣지 않음

02-19 HTTP의 상태코드와 메서드(GET, POST, PUT, PATCH, DELETE)

  • 이번 단원은 PDF 내용만 보면된다

02-20 REST API

  • 이번 단원은 PDF 내용만 보면된다

02-21 네트워크를 이루는 장치의 이해

  • 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가하다
  • 예를들어 L7 스위치는 애플리케이션 계층을 처리하는 기기로, 그 밑의 모든 계층의 프로토콜을 처리할 수 있다 하지만 AP는 물리 계층밖에 처리하지 못한다
  • 구체적인 예를 들어보면 L3 스위치는 L4 스위치와 같이 포트를 기반으로 무엇인가를 처리할 수 없다
  • NIC(네트워크 인터페이스 카드)는 컴퓨터와 컴퓨터 또는 컴퓨터와 네트워크를 연결하는 장치로, 정보 전송시 정보가 케이블을 통해 전송될 수 잇도록 정보 형태를 변경한다
  • 리피터는 전송되는 신호가 전송 선로의 특성 및 외부 충격 등의 요인으로 인해 원래의 형태와 다르게 왜곡되거나 약해질 경우 원래의 신호 형태로 재생하여 다시 전송하는 역할을 수행한다
  • AP 는 무선랜을 구성하는 장치중 하나로, 유선랜과 무선랜을 연결시켜주는 장치이다

02-22 네트워크를 이루는 장치 #1 애플리케이션 계층

  • L7 스위치는 URL, 서버, 캐시, 쿠키들을 기반으로 트래픽을 분산한다 또한 바이러스, 불필요한 외부 데이터 등을 걸러내는 필터링 기능 또한 가지고 있으며 응용 프로그램 수준의 트래픽 모니터링도 가능하다 만약 장애가 발생한 서버가 있다면 이를 트래픽 분산 대상에서 제외해야 하는데, 이는 정기적으로 헬스 체크를 이용하여 감시하면서 이루어진다
  • 헬스 체크시 TCP 요청을 보냈는데 3-웨이 핸드 셰이크가 정상적으로 일어나지 않았다면 정상이 아닌 것이다
  • 로드밸런서는 대표적인 기능으로 서버 이중화를 들 수 있다, 2대 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적인 서비스를 제공한다 또한 클라이언트가 호스트에 직접 접촉하는 것을 방지하여 내부 네트워크 구조를 숨기고 클라이언트가 호스트와 직접 상호 작용하는 것을 방지하는 보안 이점이 있다

02-23 네트워크를 이루는 장치 #2 전송 계층

  • 이번 단원은 PDF 내용만 보면된다

02-24 네트워크를 이루는 장치 #3 인터넷 계층

  • 이번 단원은 PDF 내용만 보면된다

02-25 [부록] 데이터링크계층과 물리계층

  • 링크 계층은 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 규칙을 정하는 계층이다

02-26 네트워크를 이루는 장치 #4 데이터링크계층

  • L2 스위치는 IP 주소를 이해하지 못해 IP 주소를 기반으로 라우팅은 불가능하며 단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할을 한다 목적지가 MAC 주소 테이블에 없다면 전체 포트에 전달하고 MAC 주소 테이블의 주소는 일정 시간 이후 삭제하는 기능도 있습니다
  • 브리지는 포트와 포트 사이의 다리 역할을 하며 장치에서 받아온 MAC 주소를 MAC 주소 테이블로 관리한다 통신망 범위를 확장하고 서로 다른 LAN 등으로 이루어진 하나의 통신망을 구축할 때 쓰인다

02-27 [부록] 데이터링크계층의 이더넷프레임

  • 이 단원은 외울 필요는 없고 이런게 있다 정도로 알면된다
  • 데이터 링크 계층은 이더넷 프레임을 통해 전달받은 데이터의 에러를 검출하고 캡슐화
  • MAC 주소란 컴퓨터나 노트북 등 각 장치에는 네트워크에 연결하기 위한 장치(LAN카드)가 있는데, 이를 구별하기 위한 식별번호를 말한다

02-28 네트워크를 이루는 장치 #5 물리계층

  • LAN카드(NIC)는 네트워크와 빠른 속도로 데이터를 송수신 할 수 있도록 컴퓨터 내에 설치하는 확장카드이다 각 LAN 카드에는 주민등록번호 처럼 각각을 구분하기 위한 고유의 식별번호인 MAC 주소가 있다
  • AP는 패킷을 복사하는 기기이다 AP에 유선 LAN을 연결한 후 다른 장치에서 무선 LAN 기술(와이파이 등)을 사용하여 무선 네트워크 연결을 할 수 있다 ( 물리계층은 유선 LAN, 무선 LAN 기술로 나눠진다 )

02-29 유선LAN의 기술 : 전이중화 통신, CSMA/CD

  • 유선 LAN을 이루는 이더넷은 IEEE 802.3이라는 프로토콜을 따르며 전이중화 통신을 사용한다
  • IEEE 802.3은 연결된 이더넷에서 물리 계층, 데이터 링크 계층의 매체 접근 제어(MAC)를 정의하는 워킹 그룹이 제작한 워킹 그룹이자 IEEE 표준 집합이다
  • 매체 접근 제어(MAC, Media Access Control)는 LAN에서 하나의 통신 회선을 여러 단말장치들이 원활하게 공유할 수 있도록 해주는 통신 회선에 대한 접근 방식이다

02-30 [부록] 유선LAN을 이루는 케이블

  • 유선 LAN을 이루는 케이블로는 TP 케이블이라고 하는 트위스트 페어 케이블과 광섬유케이블이 대표적이다
  • 트위스트 페어 케이블은 하나의 케이블처럼 보이지만 실제로는 여덟개의 구리선을 두 개씩 꼬아서 묶은 케이블을 지칭한다
  • 광섬유 케이블은 레이저를 이용해서 통신하기 때문에 구리선과는 비교할 수 없을 만큼의 장거리 및 고속 통신이 가능하다

02-31 무선LAN을 이루는 기술 : 반이중화 통신, CSMA/CA, 와이파이, BSS, ESS

  • 캐리어 감지란 회선이 비어 있는지를 판단 하는 것이다

02-32 [부록] 무선LAN을 이루는 주파수

  • 이번 단원은 PDF 내용만 보면된다


Chapter 03 운영체제

03-1 운영체제와 컴퓨터 그리고 인터럽트

  • 운영체제의 역할은 크게 네가지가 있다
  • CPU 스크줄링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리
  • 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리
  • 디스크 파일 관리 : 디스크 파일을 어떠한 방법으로 보관할지 관리
  • I/O 디바이스 관리 : I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리
  • 운영체제의 구조는 GUI, 시스템콜, 커널, 드라이버가 핵심이다
  • GUI : 사용자가 전자장치와 상호 작용할 수 있도록 하는 사용자 인터페이스의 한 형태
  • 시스템콜 : 운영체제가 커널에 접근하기 위한 인터페이스이며 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 쓴다, 유저 프로그램이 I/O 요청으로 트랩(trap)을 발동하면 올바른 I/O 요청인지 확인한 후 유저 모드가 시스템콜을 통해 커널 모드로 변환되어 실행된다
  • 커널 : 운영체제의 핵심 부분이자 시스템콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 한다
  • 드라이버 : 하드웨어를 제어하기 위한 소프트웨어
  • 컴퓨터는 CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어져 있다
  • CPU : 산술논리연산장치, 제어장치, 레지스터로 구성되어 있는 컴퓨터 장치이며 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석하여 실행하는 일꾼이다, 커널이 프로그램을 메모리에 올려 프로세스로 만들면 일꾼인 CPU가 이를 처리한다
  • 제어장치가 메모리에 계산할 값을 로드 또는 레지스터에 로드 -> 제어장치가 레지스터에 있는 값을 계산하라고 산술논리연산장치에 명령 -> 제어장치가 계산된 값을 다시 레지스터에서 메모리로 계산한 값을 저장
  • 인터럽트는 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것을 말한다 키보드 마우스 등 IO 디바이스로 인한 인터럽트, 0으로 숫자를 나누는 산술 연산에서의 인터럽트, 프로세스 오류 등으로 발생한다
  • 인터럽트가 발생되면 인터럽트 핸들러 함수가 모여 있는 인터럽트 벡터로 가서 인터럽트 핸들러 함수가 실행된다 ( 하드웨어 인터럽트, 소프트웨어 인터럽트 )
  • DMA 컨트롤러 : I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치인데 CPU에만 너무 많은 인터럽트 요청이 들어오기 때문에 CPU 부하를 막아주는 보조 일꾼 이라고 보면 된다
  • 디바이스 컨트롤러 : 컴퓨터와 연결되어 있는 IO 디바이스들의 작은 CPU를 말한다

03-2 시스템콜과 modebit

  • 시스템콜이 존재하는 이유는 컴퓨터 자원에 대한 직접 접근을 차단할 수 있고 프로그램을 다른 프로그램으로부터 보호할 수 있다
  • 프로세스, 스레드, 메모리 -> 시스템콜 -> 커널 -> OS ( 프로세스나 스레드에서 운영체제로 어떠한 요청을 할 때 시스템콜 이라는 인터페이스와 커널을 거쳐 운영체제에 전달되는 과정 )
  • 시스템콜이 작동될 때 modebit을 참고해서 유저 모드와 커널 모드를 구분한다
  • modebit의 0은 커널 모드, 1은 유저모드라고 설정됩니다 ( 책에 있는 오타 수정 )

03-3 메모리계층

memory_layer

  • 레지스터 : CPU 안에 있는 작은 메모리이며 속도가 가장 빠르다
  • 메모리 계층이 존재하는 이유는 경제성 때문이다
  • 게임을 실행하다 보면 로딩 중 이라는 메시지가 나오는 것을 볼 수 있다 이는 하드디스크 또는 인터넷에서 데이터를 읽어 RAM으로 전송하는 과정이 아직 끝나지 않음을 의미한다
  • 캐시 : 데이터를 미리 복사해 놓는 임시 저장소이자 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다
  • 메모리와 CPU 사이의 속도 차이가 너무 크기 때문에 그 중간에 레지스터 계층을 둬서 속도 차이를 해결 하는데 이렇게 속도 차이를 해결하기 위해 계층 사이에 있는 계층을 캐시 계층 이라고 한다
  • 지역성의 원리, 시간 지역성 : 최근 사용한 데이터에 다시 접근하려는 특성
  • 공간 지역성, 최근 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성을 말한다
  • 캐시히트 : 캐시에서 원하는 데이터를 찾았다면 캐시히트라고 한다
  • 캐시미스 : 캐시에서 원하는 데이터를 찾지 못해 주 메모리로 가서 데이터를 찾아오는 것을 캐시미스라고 한다
  • 레지스터는 주 메모리에 비하면 굉장히 작고 주 메모리는 굉장히 크기 때문에 작은 레지스터가 캐시 계층으로써 역할을 잘 해주려면 캐시 매핑을 어떻게 하느냐가 중요하다
  • 캐시 매핑이란 소용량의 캐시메모리와 상대적 대용량의 중앙메모리 간 효율적인 매핑을 통해 캐시 적중률(Hit Ratio)를 높이기 위한 메커니즘

03-4 가상메모리와 스와핑, 페이지폴트 그리고 스레싱

  • 가상메모리 : 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다
  • 추상화란 어떤 복잡한 것들을 단순화 시켜서 표현한 것이다
  • 가상 주소는 메모리관리장치(MMU)에 의해 실제 주소로 변환되며, 이 덕분에 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있게 된다
  • 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가 들어 있는 페이지 테이블로 관리된다 이때 속도 향상을 위해 TLB를 쓴다
  • TLB : 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시이다 페이지 테이블에 있는 리스트를 보관하며 CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상시킬 수 있는 캐시 계층이다 ( 페이지 테이블은 주메모리에 있다 )
  • 페이지 폴트 : 프로세스의 주소 공간에는 존재하지만 지금 이 컴퓨터의 RAM에는 없는 데이터에 접근했을 경우에 발생한다, 페이지 폴트가 일어나면 스와핑이 작동하는데 자세한 과정은 영상을 참고하자 4:45 ( 교재 오타 )
  • 스와핑 : 메모리의 당장 사용하지 않는 영역을 하드디스크로 옮기고 하드디스크의 일부분을 마치 메모리처럼 불러와쓰는 것, 이를 통해 마치 페이지폴트가 일어나지 않은 것처럼 만듭니다 ( 교재 오타 수정 )
  • 페이지 : 가상 메모리를 사용하는 최소 크기 단위
  • 프레임 : 실제 메모리를 사용하는 최소 크기 단위
  • 스레싱 : 메모리의 페이지 폴트율이 높은 것을 의미하며, 이는 컴퓨터의 심각한 성능 저하를 초래한다
  • 스레싱의 원인 : 메모리에 너무 많은 프로세스가 동시에 올라가기 때문이다
  • 스레싱의 악순환 과정 : 페이지 폴트가 일어나면 CPU 이용률이 낮아진다 -> 운영체제가 CPU가 한가한가? 라고 생각하여 가용성을 더 높이기 위해 더 많은 프로세스를 메모리에 올린다 -> 이와 같은 악순환이 반복된다
  • 스레싱을 해결하는 하드웨어 적인 방법 : 메모리를 늘리거나 HDD를 SSD로 바꾼다
  • 스레싱을 해결하는 운영체제 적인 방법 1 : 작업 세트(working set)는 프로세스의 과거 사용 이력인 지역성을 통해 결정된 페이지 집합을 만들어서 미리 메모리에 로드하는 것이다 미리 메모리에 로드하면 탐색에 드는 비용을 줄일 수 있고 스와핑 또한 줄일 수 있다
  • 스레싱을 해결하는 운영체제 적인 방법 2 : PFF(Page Fault Frequency)는 페이지 폴트 빈도를 조절하는 방법으로 상한선과 하한선을 만드는 방법이다 만약 상한선에 도달하면 프레임을 늘리고 하한선에 도달하면 프레임을 줄인다
  • 메모리 할당, 연속 할당 : 고정 분할 방식과 가변 분할 방식이 있는데 고정 분할 방식은 내부 단편화가 발생할 수 있고 가변 분할 방식은 외부 단편화가 발생할 수 있다
  • 가변 분할 방식은 메모리에 적재되는 프로세스 크기에 따라 분할의 크기, 개수가 동적으로 변하는 방식이다
  • 메모리 할당, 불연속 할당 : 페이징은 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스를 할당하는 것이고 세그멘테이션은 페이지 단위가 아니라 의미 단위인 세그먼트로 나누는 방식이다
  • 페이지 교체 알고리즘, FIFO : 가장 먼저 온 페이지를 교체 영역에 가장 먼저 놓는 방법
  • 페이지 교체 알고리즘, LRU : 참조가 가장 오래된 페이지를 바꾸는 방법
  • 페이지 교체 알고리즘, LFU :가장 참조 횟수가 적은 페이지를 교체하는 방법

03-5 프로그램과 프로세스 그리고 스레드의 차이

  • 프로세스는 컴퓨터에서 실행되고 있는 프로그램을 말한다
  • HDD/SSD에 있는 프로그램을 인스턴스화 하면 프로세스가 된다
  • 컴파일 과정 : 전처리( 주석 제거, 헤더 파일 병합, 매크로 치환 ) -> 컴파일러( 어셈블리어로 변환 ) -> 어셈블러 ( 어셈블리어를 목적 코드로 변환 ) -> 링커( 프로그램 내에 있는 라이브러리 함수 또는 다른 파일들과 목적 코드를 결합하여 실행 파일을 만든다 )
  • 정적 라이브러리 : 프로그램 빌드 시 라이브러리가 제공하는 모든 코드를 실행 파일에 넣는다 ( 외부 의존도가 낮고, 메모리 효율성이 떨어진다 )
  • 동적 라이브러리 : 프로그램 실행 시 필요할 때만 DLL 파일에서 함수를 참조한다 ( 외부 의존도가 높고, 메모리 효율성이 좋다 )

process

  • 생성 : 프로세스가 생성된 상태를 의미하며 이때 PCB가 할당된다
  • 대기 : CPU 스케줄러로 부터 CPU 소유권이 넘어오기를 기다리는 상태이다
  • 대기 중단 : 메모리 부족으로 일시 중단된 상태이다
  • 실행 : CPU 소유권과 메모리를 할당받고 인스트럭션을 수행 중인 상태를 의미한다 ( CPU burst가 일어났다고도 표현한다 )
  • 중단 : 어떤 이벤트가 발생한 이후 기다리며 프로세스가 차단된 상태이다, IO 디바이스에 의한 인터럽트로 이런 현상이 많이 발생한다, 예를 들어 프린트 인쇄 버튼을 눌렀을 때 프로세스가 잠깐 멈춘 듯할 때가 바로 그 상태이다
  • 일시 중단 : 중단된 상태에서 프로세스가 실행되려고 했지만 메모리 부족으로 일시 중단된 상태이다
  • 종료 : 메모리와 CPU 소유권을 모두 놓고 가는 상태이다

03-6 프로세스의 메모리 구조

memory

  • 스택 : 지역변수, 매개변수, 함수가 저장되고 컴파일 시에 크기가 결정되며 동적인 특성을 갖는다
  • 힙 : 동적 할당할 때 사용되며 런타임 시 크기가 결정된다
  • 데이터 영역 : 전역변수, 정적변수가 저장되고 프로그램이 종료되면 사라지는 변수가 들어 있는 영역이다
  • 코드 영역 : 프로그램에 내장되어 있는 소스 코드가 들어가는 영역이다

03-7 PCB와 컨텍스트 스위칭

  • PCB(Process Control Block) : 운영체제에서 프로세스에 대한 메타데이터를 저장한 ‘데이터’를 말한다
  • PCB는 커널 스택의 가장 앞부분에서 관리된다
  • PCB는 프로세스 스케줄링 상태, 프로세스 ID 등의 정보로 이루어져 있다
  • 컨텍스트 스위칭 : CPU가 PCB를 교환하는 과정을 말한다, 한 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발생한다
  • 스레드에서의 컨텍스트 스위칭의 경우 스택 영역을 제외한 모든 메모리를 공유하기 때문에 비용이 더 적고 시간도 더 적게 걸린다

03-8 멀티프로세싱과 멀티스레딩, 그리고 IPC

  • 멀티프로세싱은 여러 개의 프로세서 즉 멀티프로세서를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것을 말한다
  • 멀티프로세싱은 하나 이상의 일을 병렬로 처리할 수 있으며 특정 프로세서의 메모리, 프로세서 중 일부에 문제가 발생되더라도 다른 프로세서를 이용해서 처리할 수 있으므로 신뢰성이 높은 강점이 있다
  • 멀티스레드는 여러개의 스레드로 구성된 하나의 프로세스를 의미한다
  • 멀티스레딩은 멀티스레드를 기반으로 동작하는 것을 의미
  • 멀티프로세스는 IPC가 가능하며, IPC는 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 메커니즘을 뜻한다
  • IPC의 종류로는 공유 메모리, 파일, 소켓, 메시지 큐가 있으며 모두 메모리가 완전히 공유되는 스레드보다는 속도가 떨어진다
  • 공유 메모리 : 여러 프로세스에 동일한 메모리 블록에 대한 접근 권한이 부여되어 프로세스가 서로 통신할 수 있도록 공유 버퍼를 생성하는 것을 말한다
  • 파일 : 디스크에 저장된 데이터 또는 파일 서버에서 제공하는 데이터를 말한다
  • 소켓 : 동일한 컴퓨터의 다른 프로세스나 네트워크의 다른 컴퓨터로 네트워크 인터페이스를 통해 전송하는 데이터를 의미하며 TCP와 UDP가 있다
  • 메시지 큐 : 메시지를 큐 데이터 구조 형태로 관리하는 것을 의미한다, 이는 커널에서 전역적으로 관리된다

03-9 공유자원과 임계 영역, 그리고 경쟁상태(race condition)

  • 이번 단원은 PDF 내용만 보면된다

03-10 세마포어, 뮤텍스, 모니터의 차이 그리고 교착상태(deadlock)

  • 세마포어에는 조건 변수가 없고 한 프로세스가 세마포어 값을 수정할 때 다른 프로세스는 동시에 세마포어 값을 수정할 수 없다
  • 뮤텍스는 한 개의 프로세스 또는 스레드만의 임계영역접근을 처리하지만 세마포어는 여러 개의 임계영역접근을 처리할 수 있다
  • 교착 상태의 원인 1 : 상호 배제, 한 프로세스가 자원을 독점하고 있으며 다른 프로세스들은 접근이 불가능하다
  • 교착 상태의 원인 2 : 점유 대기, 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태
  • 교착 상태의 원인 3 : 비선점, 다른 프로세스의 자원을 강제적으로 가져올 수 없다
  • 교착 상태의 원인 4 : 환형 대기, 프로세스 A는 프로세스 B의 자원을 요구하고, 프로세스 B는 프로세스 A의 자원을 요구하는 등 서로가 서로의 자원을 요구하는 상황을 말한다
  • 교착 상태의 해결방법 1 : 자원을 할당할 때 애초에 조건이 성립되지 않도록 설계한다
  • 교착 상태의 해결방법 2 : 교착 상태 가능성이 없을 때만 자원 할당되며, 프로세스당 요청할 자원들의 최대치를 통해 자원 할당가능 여부를 파악하는 ‘은행원 알고리즘’을 쓴다, 은행원 알고리즘이란 총 자원의 양과 현재 할당한 자원의 양을 기준으로 안정 또는 불안정 상태로 나누고 안정 상태로 가도록 자원을 할당하는 알고리즘이다
  • 교착 상태의 해결방법 3 : 교착 상태가 발생하면 사이클이 있는지 찾아보고 이에 관련된 프로세스를 한개씩 지운다
  • 교착 상태의 해결방법 4 : 교착 상태는 매우 드물게 일어나기 때문에 이를 처리하는 비용이 더 커서 교착 상태가 발생하면 사용자가 작업을 종료한다, 현대 운영체제는 이 방법을 채택했다

03-11 CPU 스케줄링 알고리즘(비선점형, 선점형)

  • CPU 스케줄러는 CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당한다
  • 프로그램이 실행될 때는 CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정한다
  • CPU 스케쥴링 알고리즘은 CPU 이용률은 높게, 주어진 시간에 많은 일을 하게, 준비 큐에 있는 프로세스는 적게, 응답 시간은 짧게 설정하는 것을 목표로 한다
  • 비선점형 방식은 프로세스가 스스로 CPU 소유권을 포기하는 방식이며, 강제로 프로세스를 중지하지 않는다 따라서 컨텍스트 스위칭으로 인한 부하가 적다
  • 선점형 방식은 현대 운영체제가 쓰는 방식으로 지금 사용하고 있는 프로세스를 알고리즘에 의해 중단시켜 버리고 강제로 다른 프로세스에 CPU 소유권을 할당하는 방식이다
  • 라운드 로빈은 할당 시간이 짧으면 컨텍스트 스위칭이 잦아져서 비용이 커진다, 일반적으로 전체 작업 시간은 길어지지만 평균 응답 시간은 짧아진다는 특징이 있다
  • 다단계 큐는 큐간의 프로세스 이동이 안되므로 스케줄링 부담이 적지만, 유연성이 떨어지는 특징이 있다

03-12 캐시, 캐시히트, 캐시미스와 캐시 사례

  • 지역성을 기반으로 캐시히트를 높여야 한다 ( 시간 지역성, 공간 지역성 )

chach

03-13 메모리할당 : 고정분할과 가변분할 (연속할당)

  • 고정 분할 방식은 메모리를 미리 나누어 관리하는 방식이며, 메모리가 미리 나뉘어 있기 때문에 융통성이 없다 또한 내부 단편화가 발생한다
  • 가변 분할 방식은 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용한다 내부 단편화는 발생하지 않고 외부 단편화는 발생할 수 있다 ( 최초적합은 위쪽이나 아래쪽부터 시작해서 홀을 찾으면 바로 할당한다, 최적적합은 프로세스의 크기 이상인 공간 중 가장 작은 홀부터 할당한다, 최악적합은 프로세스의 크기와 가장 많이 차이가 나는 홀에 할당한다 )
  • 내부 단편화는 메모리를 나눈 크기보다 프로그램이 작아서 들어가지 못하는 공간이 많이 발생하는 현상이다
  • 외부 단편화는 메로리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생하는 현상이다

03-14 메모리할당 : 페이징, 세그멘테이션, 페이지드 세그멘테이션 (불연속할당)

  • 이번 단원은 PDF 내용만 보면된다

03-15 페이지교체 알고리즘 : FIFO, LRU, NUR, LFU

  • 메모리는 한정되어 있기 때문에 스와핑이 많이 일어난다
  • 스와핑은 많이 일어나지 않도록 설계되어야 하며 이는 페이지 교체 알고리즘을 기반으로 스와핑이 일어난다

03-16 개발자가 꼭 알아야 하는 리눅스 명령어(터미널 사용법)

  • 이번 단원은 PDF 내용만 보면된다


Chapter 04 데이터베이스

04-1 데이터베이스의 기본#1 (엔터티, 릴레이션, 속성, 도메인 등)

  • 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS(DataBase Management System)라고 한다
  • 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어(query language)를 통해 삽입, 삭제, 수정 조회 등을 수행할 수 있다 (CREATE, READ, UPDATE, DELETE)
  • 구조는 응용프로그램 DBMS 데이터베이스 순으로 되어있다
  • 엔터티가 회원 이라면 속성은 이름, 아이디, 주소, 전화번호가 있다
  • 엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리한다
  • 관계형 데이터베이스의 대표적인 데이터베이스는 MySQL이 있고, NoSQL 데이터베이스의 대표적인 데이터베이스는 MongoDB가 있다
  • 성별이라는 속성이 있다면 이 속성이 가질 수 있는 값은 { 남, 여 }라는 집합이 된다

04-2 데이터베이스의 기본#2 (필드와 레코드, 타입)

  • 속성에 해당하는것이 필드이고 행단위 데이터를 레코드라고 한다 또한 레코드를 튜플이라고도 한다
  • 엔터티를 데이터베이스에 넣어 테이블로 만들려면 이 속성에 맞는 타입을 정의해야 한다
  • 필드(속성)은 타입을 갖는다 예를 들어 이름은 문자열(VARCHAR)이고 전화번호는 숫자(INT)이다


Chapter 05 자료구조

05-1 자료구조와 C++

  • bits/stdc++.h는 모든 표준 라이브러리가 포함된 헤더이다

05-2 빅오표기법, 시간복잡도와 공간복잡도

  • 자료구조의 시간 복잡도를 생각할 때 접근, 탐색, 삽입, 삭제를 고려하자

time

  • 위의 표는 외우는게 좋다

05-3 연결리스트와 배열의 차이

  • 싱글 연결 리스트 : next 포인터만 가진다
  • 이중 연결 리스트 : next 포인터와 prev 포인터를 가진다
  • 원형 이중 연결 리스트 : 이중 연결리스트와 같지만 마지막 노드의 next 포인터(tail)가 헤드 노드를 가리키는 것을 말한다

05-4 벡터와 push_back()의 시간복잡도가 O(1)인 이유

  • 특정 자료구조의 메소드 시간 복잡도를 물어보는 면접 질문이 나올수 있다
  • push_back()을 할때 2의 제곱승 + 1 마다 크기를 2배로 늘린다 이를 시그마 관계식으로 만든뒤, 일반화 하면 3n - 1이 되는데 이 수식은 push_back()을 n번 했을때 비용이다 때문에 n으로 나누면 O(3)이 나온다 이는 상수 시간보다는 크지만 상수 시간에 가까운 amortized 복잡도를 가지기 때문에 O(1)의 시간 복잡도를 가진다 할 수 있다

05-5 스택과 큐의 차이

  • 스택(LIFO)과 큐(FIFO)의 차이는 면접에서 가장 많이 나오는 질문중 하나이다
  • 이번 단원은 PDF 내용만 보면된다

05-6 그래프와 트리, 그리고 BST

  • 간선은 단방향 간선과 양방향 간선이 있다
  • 어떠한 정점으로부터 나가는 간선을 outdegree 라고 하고 들어오는 간선을 indegree라고 한다
  • 가중치는 간선과 정점 사이에 드는 비용을 뜻한다
  • 트리는 루트 노드, 내부 노드, 리프 노드(자식이 없다) 등으로 구성된다
  • 깊이는 각 노드마다 다르며, 루트 노드부터 특정 노드까지 최단 거리로 갔을 때의 거리를 말한다
  • 높이는 루트 노드부터 리프 노드까지 거리 중 가장 긴 거리를 의미한다
  • 레벨은 보통 깊이와 같은 의미를 지닌다
  • 서브트리는 트리 내의 하위 집합을 의미한다
  • 정이진 트리는 자식 노드가 0 또는 두 개인 이진 트리를 의미한다
  • 완전 이진 트리는 왼쪽에서부터 채워져 있는 이진 트리를 의미한다
  • 변질 이진 트리는 자식 노드가 하나밖에 없는 이진 트리를 의미한다
  • 포화 이진 트리는 모든 노드가 꽉 차 있는 이진 트리를 의미한다
  • 균형 이진 트리는 왼쪽과 오른쪽 노드의 높이 차이가 1 이하인 이진 트리를 의미한다

05-7 균형잡힌 트리 : AVL 트리, 레드블랙트리

  • AVL트리는 자식 서브트리의 높이가 항상 최대 1만큼 차이가 난다

05-8 해시테이블

  • 이번 단원은 PDF 내용만 보면된다

05-9 DEEP DIVE : 해시테이블과 이중연결리스트로 LRU 페이지 교체 알고리즘 구현하기

  • 이번 단원은 PDF 내용만 보면된다

05-10 DEEP DIVE : 해시테이블과 충돌문제(collision)

  • 이번 단원은 PDF 내용만 보면된다

05-11 로또번호 7개를 셔플하기 위한 가장 좋은 자료구조는?

  • 면접관은 이 단원의 주제와 비슷하게 질문을 하는데, 이때 시간복잡도를 고려해서 적절한 자료구조를 대답해야한다


인프런 큰돌님 강의 영상


맨 위로 이동하기

댓글남기기