[CS] 잡학지식1

📝 1yangsh·2021년 6월 28일
0

프로세스 / 스레드

프로세스는 운영체제로부터 자원을 할당받아 실행하고,
스레드는 프로세스로부터 자원을 할당받아 실행

하나의 프로세스 안에 여러 스레드 생성 가능
각 스레드는 개별 스택을 가지고, 프로세스 전역 메모리 공간을 공유하며 프로그램을 실행

  • 보통 프로세스코드/데이터/스택/힙 메모리 영역을 기반으로 실행
  • 스레드는 프로세스 안에서, 개별적인 스택을 가지고, 코드/데이터/힙 영역을 공유하며 실행

스크립트 언어 / 컴파일 언어

스크립트 언어 : python, ruby, PHP
컴파일 언어 : C, C++, Java

컴파일 언어는 컴파일러를 통해 사전에 컴파일되어 기계어 상태로 실행되므로 실행이 빠름
또한 컴파일 단계에서 전체 코드를 기계어로 변환할 때 최적화 작업을 진행하여 실행 시간을 보다 빠르게 할 수 있음

스크립트 언어는 컴파일 단계 없이 실행 단계에서 한 줄씩 기계어로 변역 후 실행되므로 통상 컴파일 언어보다 실행이 느림
전체 코드에 대한 실행 최적화가 어려움


동기식 / 비동기식 차이

동기식 일처리는 요청에 대한 응답을 기다린 후 응답이 오면 다음 요청을 하는 방식
비동기식 일처리는 요청에 대한 응답을 기다리지 않고 다음 동작을 진행

장단점

  • 동기식은 구성이 단순하고 순서대로 실행 가능, 하지만 여러 일을 동시에 수행하는 멀티 태스킹 불가
  • 비동기식은 동시에 여러 일을 수행할 수 있지만, 일정 시간당 요청량이 많이질 경우 부하가 발생할 수 있으며, 이를 위한 추가적인 처리가 필요

데이터베이스에서 인덱스를 사용하는 이유 / 장단점

인덱스는 데이터를 논리적으로 정렬해서 검색과 정렬 속도를 높이기 위해 사용
단, 데이터의 삽입, 변경이 수시로 일어나면 매번 인덱스를 변경해야 하므로, 성능 저하를 막기 위한 고려가 필요


Redis와 mongodb

둘다 NoSQL 방식을 사용
Mongodbdocument 형식으로 데이터를 저장
Rediskey-value 형식으로 데이터를 저장

  • Redis는 인메모리DB로 데이터를 저장하고 관리하기 때문에 성능이 좋지만, 데이터를 유한하게 저장하기 때문에 캐쉬 등과 같이 데이터의 저장기한이 있고 빠른 성능이 필요한 기능에 사용
  • Mongodb는 mysql 처럼 server-client 방식으로 설치해서 사용. MySQL처럼 SQL방식이 아니므로 가변적 데이터 구조를 다루는데 유용

TCP / UDP

UDP비연결형 프로토콜 로 흐름제어, 오류제어를 하지 않음
TCP연결형 프로토콜 로 흐름제어, 오류제어를 함

  • UDP는 TCP처럼 종단간 연결설정, 흐름제어, 오류제어를 하지 않기 때문에 송수신이 적은 데이터를 필요로 하는데 반에, TCP는 데이터 송수신에 신뢰성을 가짐
profile
개발 경험 저장소

0개의 댓글