분류 전체보기 390

OSI 7계층

OSI 모델은 컴퓨터와 다른 장치 간의 통신을 표준화하기 위한 목적으로 만들어졌습니다. 이름에서 알 수 있듯이 총 7개의 계층으로 이루어져 있습니다. 먼저 응용(Application) 계층은 사용자가 사용하는 응용프로그램을 나타내며 전자우편, 파일 전송, 웹 브라우저 등의 서비스를 제공합니다. 표현(Presentation) 계층은 데이터의 인코딩, 압축, 암호화 등을 처리합니다. 세션(Session) 계층은 데이터 교환에 필요한 세션을 생성, 유지, 종료를 지원합니다. 전송(Transport) 계층은 크게 세그멘테이션, 흐름제어를 제공합니다. 세그멘테이션을 통해 이전 계층의 큰 데이터를 세그먼트라는 단위로 나눕니다. 세그먼트 단위로 나누었을 때 장점은 영상을 전송할 때, 영상 전체가 전송되지 않더라도 일..

TCP

www.google.com에 접속할 때 생기는 과정에 대해 설명해주세요. 1. 먼저, 클라이언트는 웹 브라우저를 통해 www.google.com에 접속하려고 시도합니다. 2. 클라이언트는 DNS(Domain Name System) 서버에게 www.google.com의 IP 주소를 요청합니다. DNS 서버는 www.google.com의 도메인 이름을 IP 주소로 변환하여 클라이언트에게 응답합니다. 3. 클라이언트는 변환된 IP 주소를 사용하여 www.google.com 서버에 연결을 시도합니다. 이때, 클라이언트는 TCP(Transmission Control Protocol) 프로토콜을 사용하여 연결을 시도합니다. 4. www.google.com 서버는 클라이언트의 요청에 응답하고, HTTP(Hyperte..

HTTP

HTTP HTTP는 인터넷에서 데이터를 주고받는 데 사용되는 통신 규약입니다. 웹 브라우저와 웹 서버 사이에서 웹 페이지, 이미지, 동영상 등의 데이터를 전송할 때 사용됩니다. 그리고 크게 두가지의 특징이 있는데, 첫 번째로는 서버가 클라이언트의 상태를 보존하지 않는다는 점입니다. 이렇게 상태를 유지하지 않을 경우 클라이언트가 매번 추가 데이터를 전송해야한다는 단점이 있지만 서버 확장성이 좋다는 장점이 있습니다. 두 번째로는 클라이언트와 서버가 요청과 응답을 주고받을 때, 연결을 유지하지 않고, 각각의 요청과 응답을 독립적으로 처리한다는 점입니다. 이러한 비연결성은 클라이언트가 서버 자원을 계속 차지하게 되는 문제를 해결해 서버 자원의 효율적인 사용을 가능하게 합니다. HTTP와 HTTPS의 차이 HTT..

[파이썬] [DP] 백준 11052 카드 구매하기

문제 https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 코드 n=int(input()) array=[0]+list(map(int, input().split())) dp=[0]*(n+1) for i in range(len(array)): for j in range(i+1): dp[i]=max(dp[i],array[j]+dp[i-j]) print(dp[n]) 생각 정리 dp[n]은 n개의 최댓값을 저장하는 배열이다. dp[1] = array[1] dp[2]..

문제풀이/DP 2023.04.05

동기와 비동기의 차이

동기 사용자가 서버로 요청을 보냈을 때, 요청에 대한 응답을 리턴받기 전까지는 다른 것을 하지 못하고 기다리는 방식이다. 설계가 간단하고 직관적이라는 장점이 있지 대기 하느라 다른일을 하지못해 자원이 낭비되는 단점이 있다. 비동기 서버에게 데이터를 요청한 후 요청에 따른 응답을 계속 기다리지 않아도되며 다른 외부 활동을 수행하여도되고 서버에게 다른 요청사항을 보내도 상관없는 방식이다. 동기에 비해 설계가 복잡하지만, 또 다른 작업을 수행할 수 있어서 자원을 효율적으로 사용할 수 있다는 장점이 있다.

OS 2023.04.05

CPU 스케줄러

FCFS(First Come First Served) 특징 먼저 온 순서대로 처리. 비선점형(Non-Preemptive) 스케줄링 일단 CPU 를 할당받으면, CPU burst 가 완료될 때까지 CPU 를 반환하지 않는 방식입니다. 문제점 convoy effect 스케쥴러 평가 기준에 Ready queue에서 기다린 총 시간을 나타내는 waiting time이라는 것이 있는데, 먼저 온 순서대로 처리하다보니 수행시간이 짧은 프로세스가 긴 프로세스를 기다리게 되면서, average waiting time이 늘어나는 현상입니다. SJF(Shortest - Job - First) 특징 다른 프로세스가 먼저 도착했어도 CPU burst가 짧은 프로세스에게 먼저 할당 비선점형(Non-Preemptive) 스케줄링..

OS 2023.04.04

스케줄러

프로세스를 스케줄링하기 위한 Queue 에는 세 가지 종류가 존재한다. Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue : 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합 Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합 각각의 Queue 에 프로세스들을 넣고 빼주는 스케줄러에도 크게 세 가지 종류가 존재한다. 장기스케줄러(Long-term scheduler or job scheduler) 메모리는 한정되어 있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장된다. 이 pool 에 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할당하여 read..

OS 2023.04.04

멀티 스레드

멀티 스레딩의 장점 멀티 스레딩을 사용하면 여러 작업을 동시에 처리할 수 있으므로 시스템의 전체 처리량이 향상됩니다. 예를 들어, 한 스레드에서 파일을 읽고 다른 스레드에서 데이터를 처리하는 경우, 처리 시간이 절약됩니다. 또 스레드의 context switch 는 프로세스 context switch 와는 달리 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다는 장점이 있습니다. 멀티 스레딩의 문제점 멀티 프로세스 기반으로 프로그래밍할 때는 프로세스 간 공유하는 자원이 없기 때문에 동일한 자원에 동시에 접근하는 일이 없었지만 멀티 스레딩을 기반으로 프로그래밍할 때는 이 부분을 신경써줘야 합니다. 둘 이상의 스레드가 서로 상대방의 작업이 끝나기를 무한정 대기하면서 교착 상태가 발생할 수 있습니다. 또 공유..

OS 2023.04.04

프로세스와 스레드의 차이

프로세스(Process) 프로세스는 실행 중인 프로그램이란 뜻으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말합니다. 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이것들을 총칭하여 프로세스라고 합니다. 구체적으로 살펴보면 전역변수, 정적 변수를 저장하는 데이터 영역, 프로그램 코드가 저장되는 코드 영역, 지역변수와 함수 호출에 필요한 정보가 포함 되는 스택영역 등이 있습니다. 프로세스 제어 블록(Process Control Block, PCB) PCB 는 특정 프로세스에 대한 중요한 정보를 저장 하고 있는 운영체제의 자료구조이다. 운영체제는 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB 를 생성 한다. 프로세스는 CPU 를 할당받아 작업을 처리하다..

OS 2023.04.04

[파이썬] [그래프] 백준 16202 MST 게임

문제 https://www.acmicpc.net/problem/16202 16202번: MST 게임 첫 턴에 찾을 수 있는 MST는 총 5개의 간선 {(1, 3), (1, 2), (2, 4), (4, 6), (4, 5)}로 이루어져 있고, 비용은 16이다. 두 번째 턴에는 첫 턴에서 구한 MST에서 간선의 비용이 최소인 (2, 4)를 제거한 후 남아있 www.acmicpc.net 코드 n,m,k=map(int, input().split()) graph=[] parent=[] for i in range(n+1): parent.append(i) for i in range(1,m+1): a,b=map(int, input().split()) graph.append([a,b,i]) def find(x): if p..