전체 글 24

컨텍스트 스위칭

1. 컨텍스트 스위칭(Context switch) 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전 프로세스의 상태(Context)를 보관하고, 새로운 프로세스의 상태를 적재하는 작업 한 프로세스의 상태는 그 프로세스의 PCB에 기록되어 있다. 프로세스 P0와 P1이 있다고 하자. P0가 먼저 CPU를 점유중(executing)이고 P1이 대기중(idle)인 상태였다가, 얼마 후에는 P1이 점유중이고, P0가 대기중인 상태가 된다. 이때 P0가 점유중에서 대기중으로 변할 때는 지금까지 작업 내용을 어딘가(PCB)에 저장해두어야 한다. → 즉 P0는 PCB에 저장해두어야 하고, P1이 가지고 있던 데이터는 PCB에서 가져와야 한다. P0와 P1이 서로 대기..

힙 정렬

1. 개념 힙 : 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된, 완전 이진 트리를 기본으로 한 자료구조 완전 이진 트리 : 부모 노드 밑에 자식 노드가 최대 2개까지 있을 수 있고, 마지막 레벨을 제외한 모든 레벨에 노드가 완전히 채워져 있는 트리 구조 최대 힙 : 부모 노드가 자식 노드보다 항상 크거나 같은 트리 최소 힙 : 부모 노드가 자식 노드보다 항상 작거나 같은 트리 힙 정렬 : 최대 힙 트리나 최소 힙 트리를 구성해 정렬하는 알고리즘 2. 구현 (kotlin) fun heapify(array: IntArray, index: Int, heapSize: Int) { // 부모 노드와 자식 노드의 인덱스 지정 var parent = index val leftChild = parent..

HTTP와 HTTPS 차이

HTTP & HTTPS HTTP(Hypertext Transfer Protocol) 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜 사용자가 웹 사이트를 방문하면 사용자 브라우저가 웹 서버에 HTTP 요청을 전송하고 웹 서버는 HTTP 응답으로 응답합니다. 웹 서버와 사용자 브라우저는 데이터를 일반 텍스트로 교환합니다. 간단히 말해 HTTP 프로토콜은 네트워크 통신을 작동하게 하는 기본 기술입니다. HTTPS(Hypertext Transfer Protocol Secure) HTTP의 확장 버전 또는 더 안전한 버전 HTTPS에서는 브라우저와 서버가 데이터를 전송하기 전에 안전하고 암호화된 연결을 설정합니다. HTTP 작동 방식 HTTP는 OSI(Open Systems Interconnec..

네트워크 2024.01.07

정규화

정규화 데이터베이스 정규화는 데이터를 효율적으로 구성하기 위한 과정으로, 중복을 최소화하고 데이터 일관성을 유지하는 핵심적인 방법론이다. 제1 정규형부터 시작하여 제5 정규형까지의 단계로 나뉘며, 각 단계는 특정 데이터 이상 현상을 해결하기 위한 규칙을 제공한다. 제1 정규형 (1NF) 제1 정규형은 모든 속성이 원자값을 갖고, 각 열이 하나의 값만을 가지도록 하는 것을 목표로 한다. 이를 통해 중복을 최소화하고 데이터를 구조화하여 저장한다. 과목 교수 데이터베이스 김철수, 김영희 자료구조 홍길동 파이썬 김철수, 홍길순 표 1의 경우에는 교수의 속성이 원자값이 아니므로 바꿔야 한다. id 과목 교수 1 데이터베이스 김철수 2 데이터베이스 김영희 3 자료구조 홍길동 4 파이썬 김철수 5 파이썬 홍길순 제2..

데이터베이스 2024.01.07

프로세스 동기화

Process Synchronization(프로세스 동기화) 여러 프로세스가 공유하는 자원의 일관성을 유지하는 것 Critical Section(임계영역) 다른 프로세스와 공유하는 자원에 접근하고 갱신할 수 있는 코드 영역 Critical Section Problem(임계영역 문제) 프로세스들이 Critical Section 을 함께 사용할 수 있는 프로토콜을 설계하는 것 Requirements(해결을 위한 기본조건) Mutual Exclusion(상호 배제) : 프로세스가 Critical Section에서 실행중이라면, 다른 프로세스들은 그들이 가진 Critical Section에서 실행될 수 없다. Progress(진행) : Critical Section에서 실행중인 프로세스가 없고, 별도의 동작이 ..

SQL vs NoSQL

1. SQL(관계형 데이터베이스) SQL(Structured Query Language) 테이블 기반 데이터베이스의 데이터를 업데이트, 검색, 계산하도록 설계된 언어 관계형 데이터베이스에서는 테이블의 구조와 데이터 타입 등을 사전에 미리 정의한다.(스키마) 테이블의 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있다. 테이블의 구조와 테이블간의 관계에 맞춰 데이터를 요청해야 한다. → 따라서 SQL과 같이 구조화된 쿼리 언어를 사용하여 요청한다. 1. 장점 스키마가 명확히 정의되어 있다. 데이터 무결성 보장 무결성 : 데이터가 항상 정확한 값을 유지하는 성질 각 데이터를 중복 없이 한 번만 저장 2. 단점 스키마를 사전에 계획해야 한다.(유연성이 떨어짐) 관계를 맺고 있어서 JOIN문이 많은 복잡한 쿼..

데이터베이스 2023.12.24

TCP Handshake

3-Way-Handshake 3-Way-Handshake는 TCP 연결을 설정할 때 사용되는 과정으로, 클라이언트와 서버간에 통신을 시작하기 위해 세션을 초기화하는 방법이다. 3-Way-Handshake 과정 1. 클라이언트가 서버에게 연결 요청(SYN) 클라이언트는 서버에게 통신을 시작하고자 하는 의사를 전달하기 위해 SYN(Syncronize) 패킷을 보낸다. 이 패킷에는 초기 순서 번호(Seqeuece Number)도 포함된다. 2. 서버가 클라이언트에게 요청 수락 및 승인 (SYN + ACK) 서버는 클라이언트의 SYN 요청을 받고, 클라이언트에게 요청을 수락한다는 의미로 SYN과 ACK(Acknowlegment) 플래그가 설정된 패킷을 보낸다. 또한 서버는 자신의 초기 순서 번호를 포함시킨다. ..

네트워크 2023.12.22

프로세스와 스레드

프로그램 프로그램은 컴퓨터에서 실행 할 수 있는 파일을 통칭한다. 하지만 아직 파일을 실행하지 않은 정적인 상태이기 때문에 정적 프로그램이라고도 부른다. (아직은 운영체제로부터 메모리 공간을 할당받지 못한 상태) 프로세스 프로세스는 프로그램을 실행시켜 정적인 프로그램을 동적으로 변하게 하는 것을 말하고 프로그램이 돌아가고 있는 상태를 말한다. 프로그램을 실행하는 순간 운영체제로부터 시스템 자원(CPU)을 할당받는다. 스레드 스레드는 하나의 프로세스 내에서 동시에 진행되는 작업 갈래, 흐름의 단위를 말한다. 하나의 프로세스 안에서 여러가지 작업 흐름이 동시에 진행되는것을 스레드라고 부르고 여러개가 있다면 멀티 스레드라고 부른다. 프로세스의 자원 구조 프로그램이 실행되어 프로세스가 만들어지면 네가지의 메모리..

TCP & UDP

1. 전송 계층(Transport Layer) End point간 신뢰성있는 데이터 전송을 담당하는 계층 패킷(Segment or Datagram)이 전송 과정에서 문제 없이 수신자에게 도착할 수 있도록 제어 패킷 : 네트워크를 통해 전송되는 형식화된 데이터 덩어리 신뢰성 : 데이터를 순차적, 안정적으로 전달 전송 : 포트 번호에 해당하는 프로세스에 데이터 전달 전송 계층이 없다면 (전송 계층의 중요성) 데이터의 순차 전송이 원활하지 않다. Flow(흐름 문제) 원인 : 송수신자 간의 데이터 처리 속도 차이 수신자가 처리할 수 있는 데이터양 초과 → 데이터 누락 발생 가능 Congestion(혼잡 문제) 원인 : 네트워크의 데이터 처리 속도 → 결과 : 데이터 손실 발생 2. TCP(Transmissio..

네트워크 2023.12.17

JOIN

JOIN은 2개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것이다. INNER JOIN(내부 조인) : 2개의 테이블에 모두 지정한 열의 데이터가 있어야 한다. OUTER JOIN(외부 조인): 1개의 테이블에만 데이터가 있어도 결과가 나온다. CROSS JOIN(상호 조인): 한 쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인한다. SELF JOIN(자체 조인): 자신과 자신을 조인하는 것으로 1개의 테이블을 사용한다. FOOD_1 ID FOOD 1 돈까스 2 치킨 3 삼겹살 4 초밥 FOOD_2 ID FOOD 1 방어 2 돈까스 3 떡볶이 4 치킨 INNER JOIN SELECT FROM INNER JOIN ON WHERE SELECT * FROM FOOD_1 A INNER JOIN ..

데이터베이스 2023.12.16