본문 바로가기

CS 기초

💻 CS 개념 정리

OS

프로세스와 스레드 차이

  • 프로세스는 운영체제로부터 자원을 할당받아 실행하고, 스레드는 프로세스로부터 자원을 할당받아 실행
  • 하나의 프로세스 안에서 여러 스레드 생성 가능
  • 각 스레드는 개별 스택을 가지고, 프로세스의 전역 메모리 공간을 공유하며 프로그램을 실행
    • 프로세스는 코드/데이터/스택/힙 메모리 기반으로 실행
    • 스레드는 프로세스 안에서 개별적인 스택을 가지고 코드/데이터/힙 영역을 공유하며 실행

 

deadlock

  • 둘 이상의 프로세스가 서로가 가진 자원을 요구하면서 각자의 자원을 놓지 않아서 더이상 작업을 수행할 수 없이 무한 대기 상태
  • 해결 방법
    • Prevention : 자원이 어떻게 할당되건간에 데드락이 발생할 수 없는 구조로 만듬
    • Detection and Recovery : 데드락이 발생할 경우를 찾아서 고침

 

세마포어 / 뮤텍스

  • 여러 프로세스, 스레드가 공유 자원에 접근하는 것을 제어하기 위한 방법
  • 차이점
    • 세마포어는 공유자원에 변수만큼의 프로세스가 접근 가능 (허용가능한 count 갯수를 가지고 있음)
    • 뮤텍스는 오직 1개의 프로세스만 접근 (lock을 가지고 있는 경우에만 접근, 반납)

 

가상 메모리

  • 프로세스가 필요한 부분만 메모리에 올려서 실행이 가능하도록 하는 기법
  • 프로세스는 가상 주소를 사용하고, 실제 해당 주소에서 데이터를 읽고 쓸때만 물리주소로 바꿈

 

컨텍스트 스위칭

  • CPU에 실행할 프로세스를 교체하는 기술
  • 실행 중지할 프로세스 정보를 메인메모리에 저장, 다음 실행할 프로세스 정보를 메인메모리에서 로드

 

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

  • 스크립트 언어 - python, ruby, PHP
  • 컴파일 언어 - c, c++, java
  • 컴파일 언어는 컴파일러를 통해 사전에 컴파일 되어 기계어 상태로 실행되므로 실행이 빠름
    • 또한 컴파일 단계에서 전체 코드를 기계어로 변환할때 최적화작업을 진행하여 실행시간을 보다 빠르게
  • 스크립트 언어는 컴파일 단계 없이 실행 단계에서 한줄씩 기계어로 번역 후 실행되므로 컴파일 언어보다 실행이 느림
    • 또한 전체 코드에 대한 실행 코드 최적화가 어려움

 

동기식 / 비동기식

  • 차이점
    • 동기식은 요청에 대한 응답을 기다린 후, 응답이 오면 다음 요청을 하는 방식
    • 비동기식은 요청에 대한 응답을 기다리지 않고, 다음 동작을 진행
  • 장단점
    • 동기식은 구성이 단순하고 순서대로 실행 가능, 하지만 여러 일을 동시에 수행하는건 불가능
    • 비동기식은 동시에 여러 일을 수행할수 있지만, 요청량이 많아지는 경우 부하가 발생할 수 있으며 이를 위한 추가적인 처리가 필요

 

DB

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

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

 

트랜잭션

  • 하나 이상의 SQL 문장들로 이루어진 논리적인 작업 단위

 

Redis / mongodb

  • 둘다 No-SQL 방식을 사용. mongodb가 document 형식으로 데이터를 저장하는데 반해, Redis는 key-value 형식으로 데이터를 저장함
  • Redis - 인메모리DB로 데이터를 저장하고 관리하기 때문에 성능이 좋지만 데이터를 유한하게 저장하기 때문에 캐쉬 등과 같이 데이터의 저장기한이 있고, 빠른 성능이 필요한 기능에 사용됨
  • mongodb는 mysql처럼 서버-클라이언트 방식으로 설치해서 사용. mysql과 같은 SQL방식이 아니므로 가변적인 데이터 구조를 다루는데 유용함
  • SQL / NO-SQL
    • SQL - 정해진 스키마를 따라 테이블에 데이터 저장, 데이터는 관계를 통해서 연결된 여러개의 테이블에 분산
    • NO-SQL - 스키마없음 관계없음, 다른 구조의 데이터를 같은 테이블에 추가, JSON데이터와 비슷한 형태

 

Network

HTTP

  • HTTP Secure의 약자, HTTPS를 사용하여 전송되는 데이터는 TLS를 통해 보호됨
  • TLS는 서버와 클라이언트의 인증을 하는데 사용됨

 

TCP / UDP

  • 데이터의 송수신을 위해 IP를 이용하는 프로토콜이며, 신뢰성을 보장해줌
  • 차이점
    • UDP는 비연결형 프로토콜로 흐름제어, 오류제어를 하지 않음
    • TCP는 연결형 프로토콜로 흐름제어와 오류제어를 함
  • 장단점
    • UDP는 송수신에 적은 데이터를 필요로 함, 연속성이 중요한 실시간 서비스
    • TCP는 데이터 송수신에 신뢰성을 가짐

 

 

 

'CS 기초' 카테고리의 다른 글

💻 JAVA  (0) 2020.03.22