본문 바로가기

분류 전체보기

(72)
[OS] 프로세스 & 쓰레드 프로세스란, 쓰레드란?* 프로세스 process : 컴퓨터에서 실행되고 있는 프로그램을 말함. CPU 스케줄링의 대상이 되는 task.* 쓰레드 thread: 프로세스 내 작업의 흐름. 멀티 프로세스 & 멀티 쓰레드말그대로 각각 여러 개의 프로세스와 쓰레드를 쓴다는 말. 둘 사이 특징이 다르므로, 이를 기억하자.그런데 CPU (정확히는 코어)의 수는 어차피 정해져 있는데, 멀티 프로세스든 쓰레드든 그게 뭐가 중요하지? 라고 생각할 수 있는데, 여러 개의 프로세스 혹은 쓰레드는 하나의 CPU를 정말 빠른 속도로 사용하고, 비켜줬다가, 다시 사용하는 것을 무한 반복한다. context switching. 그렇기 때문에 여러 개의 프로그램을, 마치 동시에 진행하는 것처럼 사용자에게 보여줄 수 있는 것. * 멀..
[OS] 메모리, 캐시, 운영체제의 메모리 관리 기본적으로 컴퓨터 구조를 다룰 때, CPU의 ALU가 연산을 시전하는 부분이라면 그 일련의 과정에 있어서 데이터를 저장하고 빼내는 등의, 일종의 창고 역할을 하는 부분이 필요한데, 그걸 넓은 의미에서의 메모리라고 한다.  메모리의 종류 종류로는 레지스터, 캐시(L1, L2, L3), RAM(주기억장치), 디스크(보조기억장치) 등이 있다. 저 순서대로 오른쪽으로 갈수록 더 많은 양의 데이터를 저장할 수 있지만, CPU로부터의 접근성이 떨어지고, 그렇기 때문에 가격도 싸진다.참고로 레지스터와 캐시의 일부(1은 항상, 2는 때때로)는 CPU 내부에 위치해 있다. 접근성이 최고인 셈. 각각을 알아보면, 1 레지스터: CPU가 즉시 사용할 수 있는 데이터를 저장하는 공간.2 캐시 메모리: CPU가 매우 빠르기 때..
API? RESTful API? 서버? 전공자인데 아직 서버가 뭔지 정확히 모르겠다고 하면 웃길 수 있으나 서버라는 이름만 자주 나오고 부분적으로만 등장할 뿐 교육과정에서 정확히 그게 뭔지 제대로 다뤄지지 않는다. 그래서 이참에 확실하게 이해해보려 한다. 서버란?서버의 "실체"를 이해하기 위해서는 하드웨어와 소프트웨어의 2가지 측면을 모두 고려해야 함.서버는 기본적으로 클라이언트에게 서비스를 제공 - 요청을 처리하고, 데이터를 관리 - 하는 시스템. 1 물리적 서버 Physical Server:서버는 직육면체 형태의 컴퓨터다. 그걸 모아서 위와 같이 다양한 형태로 쌓아둔다.데스크톱 본체와 유사하게 CPU, RAM, 디스크, NIC 등으로 이루어져 있지만, 일상 작업을 처리하는 용도인 데스크톱과는 다른 기능을 키운 컴퓨터다. 서버는 앞서 말했든..
[OS] 운영체제 기본 OS란?사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스.컴퓨터 하드웨어가 있고, 하드웨어를 사람이 사용하고자 할때 (어플리케이션을 통해 상호작용) 하드웨어와 사람 사이에서, 사람을 도와 하드웨어를 활용할 수 있게 도와주는 장치라고 생각하면 편하다.참고로 운영체제 중에 소프트웨어를 추가로 설치할 수 없는 것을 firmware라고 명명함. OS의 역할?OS의 역할은 4가지로 크게 분류:CPU 스케줄링과 프로세스 관리: CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리함.메모리 관리: 한정된 메모리를 어떤 프로세스에 얼마만큼 할당할지 관리함.디스크 파일 관리: 디스크 파일을 어떤 방법으로 보관할지 관리함.I/O 디바이스 관리: I/O 디바이스들 (마우스, 키보드, ..
JavaScript로 코딩테스트를 풀기 위한 기본 문법 총정리 코딩테스트를 풀 때 내가 가장 사랑하는 주무기는 Python이었는데, 네이버 부스트캠프 9기의 최종 코딩테스트 단계에서는 웹 개발자에 한해서 JavaScript를 필수적으로 사용하게끔 하기 때문에, 이를 대비하여 부랴부랴 준비를 해보려고 한다.-> 코딩테스트는 모두 통과했지만, 백엔드에도 JavaScript를 사용하는 관계로 나와 맞지 않아 거절하였다. 변수선언var, let, const가 있다.var은 함수 스코프이고, 같은 이름의 변수를 여러 번 선언할 수 있다. 또한, hoisting된 곳에서 사용 가능하다.let은 블록 스코프 즉, '{}'로 둘러싸인 블록 내부에서만 접근할 수 있다. 재선언 불가능하다. 변경은 가능하다.function varScope() { if (true) { ..
[네트워크] IP - Internet Protocol - 네트워크 계층은 IP 패킷을 목적지까지 전달하는 역할을 함.- IP 패킷이 출발지부터 목적지까지 가는 데에 있어서 지나는 모든 호스트와 라우터에 IP 프로토콜이 실행됨. - 출발지 호스트는, 전송계층에서 넘어온 데이터 세그먼트를 IP 패킷으로 캡슐화함 - encapsulate- 목적지 호스트는 수신한 IP 패킷의 헤더를 제거하고, 전송 계층으로 데이터 전달함 - decapsulate   * 핵심적인, OSI 모델에서의 데이터 관점에서의 용어 및 특징 복습 (송신단 기준, 수신단은 모든 것을 반대로 생각)계층 이름데이터 단위 명칭크기비고 응용 계층데이터무제한. 큼. 이메일 메시지, 웹 페이지 등.사용자가 애플리케이션을 통해 생성한 데이터.전송 계층데이터 세그먼트 / 데이터그램큼지막했던 데이터를 작은 조..
[네트워크] QUIC 프로토콜 QUIC을 왜 쓰냐?  지난 40여년간 통신 쪽을 꽉 잡고 있었던 TCP도, 한계는 있었다.예를 들어, 연결 설정 지연, HOL 블로킹, 복잡한 프로토콜 스택 등이다.QUIC은 한마디로, TCP의 한계점들을 해결하기 위해 드드등장했다. 위의 한계점들을 아래와 같이 극복한다. 1 연결 설정 지연:TCP는 연결 설정을 위해 3-way handshake를 사용했고, TLS를 쓰면 추가적인 3-way handshake를 해야하기에 2번의 3-way HS가 필요했다. 이에 비해 QUIC은, 연결 설정 시 0 또는 1 RTT 핸드셰이크를 사용함. 심지어 한 번 연결했더라면, 0RTT로 가능함. 그리고, QUIC은 TLS를 자체 프로토콜 내에 통합했기 때문에, 별도의 TLS 핸드셰이크가 필요하지 않기 때문에 더욱 편..
[네트워크] 네트워크 보안 1 네트워크 보안 개요 Network Security Overview네트워크 보안에서 중요한 여러가지 요소들은,Confidentiality 기밀성: 오직 의도된 수신자만 메시지를 볼 수 있도록 함. Encryption - Decryption.Authentication 인증: 수신자는 메시지의 발신자를 확인할 수 있음.Availability 가용성: 서비스 및 데이터가 사용자에게 제공될 수 있도록 함. DDoS 공격에 취약함.Data Integrity 데이터 무결성: 메시지의 변경 사항(전송 中 또는 이후)을 감지할 수 있음.뭔가 그럴듯한 이름을 붙였지만, 사실 당연한 것들이다. 이메일로 예를 들자면, 이메일 받기로 한 사람이 받아야 하고 - 기밀성,받는 사람은 누가 보냈는지 알 수 있어야 하고 - 인증..