분류 전체보기 76

TCP/IP, UDP

IP(Internet Protocol)인터넷 프로토콜 역할- 지정한 IP 주소에 데이터 전달- 패킷(Packet)이라는 통신 단위로 데이터 전달 출발지 IP - 나의 IP목적지 IP - 상대 IP1. 출발지, 목적지, 메시지 등을 패킷에 넣고 전송2. IP 프로토콜에 의해서 노드들을 거쳐 전송되게 됨3. 최종적으로 목적지 IP에 컴퓨터에 패킷이 도달하게 됨 4. 목적지 IP에 해당하는 컴퓨터도 동일한 방식으로 출발지 IP 컴퓨터에 응답 IP 프로토콜의 한계1. 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 즉, 대상 서버가 패킷을 받을 수 있는 상태인지 모름 2. 비신뢰성 - 중간에 패킷이 사라지는 경우 - 패킷이 순서대로 안 오는 경우 3. 프로그램 구분 - 같은 IP를 사용..

프록시 서버

프록시란 프로토콜에 있어서 대리 응답 등에서 사용하는 개념이다.프록시 서버클라이언트와 서버 사이에 존재하며, 중계기로서 대리로 통신을 수행하는 것을 프록시라고 함 중계 기능을 하는 주체를 프록시 서버라고 함프록시 서버 종류포워드 프록시 (Forward Proxy)클라이언트와 서버 사이에 위치하여 요청을 중계하며, 요청과 응답은 Proxy Server를 거친다.클라이언트는 목적지 서버에 요청을 보내고, 프록시 서버는 이를 받아서 목적지 서버에 요청포워드 프록시 서버는 클라이언트 앞에 있음 특징1. 클라이언트 보안 - 클라이언트의 직접적인 인터넷 접속을 제한하여 보안 강화 Ex) 불법 사이트에 접속하는 것을 막음 2. 캐싱 - 프록시 서버를 캐시로 사용하여 동일한 요청을 보냈을 때 프록시 서버에 저장..

BSD 소켓

버클리 대학에서 UNIX 4.2 BSD 커널에서 사용하기 위해 만든 소켓 인터페이스TCP/IP 기반 네트워크 통신 // TCP/IP 뿐만 아니라 다양한 네트워크 프로토콜을 지원현재 네트워크 프로그래밍의 표준이 됨 -> 소켓이라고 하면 일반적으로 BSD 소켓을 의미** 엔드포인트 : 네트워크 통신을 할 수 있는 한 쪽 끝을 의미 Ex) www.quilzy.shop:8080, www.quizly.shop:3004 IP 주소 : 네트워크상의 기기를 식별할 때 사용 Ex) 클라이언트1, 클라이언트2, 퀴즐리 서버 포트 번호 : 특정 기기 내의 특정 프로세스나 서비스 식별 Ex) 좌표를 위한 소켓, 채팅을 위한 소켓, 소켓 인터페이스란응용 계층과 전송 계층 사이의 인터페이..

OSTEP 8장

MLFQ (멀티 레벨 피드백 큐)MLFQ가 해결하려는 두 가지 기본적인 문제1. 짧은 작업을 먼저 실행시켜 반환 시간을 최적화 운영체제는 실행 시간을 미리 알 수 없으므로 어려움 2. 응답시간을 최적화하여 응답이 빠른 시스템이라는 느낌을 받도록 하기 응답시간이 짧아지면 반환시간은 최악임 MLFQ: 기본규칙여러 개의 큐로 구성되며, 각각 다른 우선순위가 배정된다. 실행 준비가 된 프로세스는 여러 개의 큐 중 하나의 큐에 존재한다. **MLFQ는 실행할 프로세스를 결정하기 위해 우선순위를 사용즉, 높은 우선순위 큐에 존재하는 작업이 선택된다. 각 큐는 라운드 로빈 스케줄링 알고리즘을 사용한다. ** MLFQ 스케줄링의 핵심은 우선순위를 정하는 방식 // 작업의 실행을 관찰하고 그에 따라 우선순위 지정각 ..

운영체제(OSTEP) 2024.10.11

OSTEP 6장

CPU 가상화 어떻게 구현 ??-> CPU 시간을 나눠씀으로써 가상화를 구현 CPU 가상화를 구현하기 위해 두 가지를 해결해야 함 1. 성능 저하 // 과도한 오버헤드로 인한 성능 저하2. 제어 문제 // 응용 프로그램이 컴퓨터를 마음대로 제어해서는 안 된다.기본원리 : 제한적 직접 실행프로그램을 CPU 상에서 직접 실행하는 것을 의미 1. 프로세스 목록에 항목을 추가2. 프로그램 메모리 할당3. 메모리에 프로그램 탑재4. argc/argv를 위한 스택 셋업5. 레지스터 내용 삭제6. call main() 실행 main() 실행 main에서 return 명령어 실행7. 프로세스 메모리 반환8. 프로세스 목록에서 항목 제거 ** 몇 가지 문제점..

운영체제(OSTEP) 2024.10.10

OSTEP 5장

Unix 시스템에서 PID는 프로세스의 실행이나 중단과 같이 특정 프로세스를 대상으로 작업을 해야할 경우프로세스를 지칭하기 위해서 사용부모 프로세스 fork() 함수를 실행-> 자식 프로세스는 fork()가 실행된 지점부터 시작됨 -> 자식 프로세스는 부모 프로세스와 동일하지 않음 -> 자신의 주소 공간, 자신의 레지스터, 자신의 PC값을 갖는다. ** 부모 프로세스와 자식 프로세스는 fork() 시스템 콜 반환값이 서로 다름부모 - 자식 PID자식 - 0fork() 시스템 콜프로세스를 생성할 때 사용된다.자식 프로세스는 부모 프로세스와 동일하지 않음자식 프로세스는 자신만의 주소 공간, 레지스터, 자신의 PC 값을 갖는다.wait() 시스템 콜부모 프로세스가 자식 프로세스가 종료될 때까지 대기할 때 사용..

운영체제(OSTEP) 2024.10.09

OSTEP 4장

프로세스일반적으로 프로세스는 실행 중인 프로그램으로 정의**프로그램 - 디스크 상에 존재, 실행을 위한 명령어와 정적 데이터의 묶음운영체제는 CPU를 가상화하여 CPU가 여러 개 존재한다는 환상을 제공한다.- 문맥교환을 통한 동시성 구현을 통해 CPU 가상화를 실현**시분할 기법하나의 프로세스를 실행하고 중단 후 다른 프로세스를 실행하는 것을 반복 -> 여러 CPU가 존재한다는 환상을 줌- CPU를 공유하기 때문에, 각 프로세스의 성능은 낮아짐 ** 문맥교환 - CPU에서 프로그램 실행을 잠시 중단하고 다른 프로그램을 실행하는 것- 현재 실행 중인 프로세스의 PCB를 준비큐 혹은 대기큐에 저장하고, 준비큐에서 우선순위가 높은 프로세스의PCB를 CPU에 적재하는 것을 의미메커니즘과 정책**메커니즘 - Ho..

운영체제(OSTEP) 2024.10.08

배열, 연결리스트, 스택,

배열동일한 타입의 변수를 모아 묶어 놓은 것메모리 공간에 연속적으로 할당된다. - 가상 메모리 공간에서 연속적, 물리 메모리에서는 항상 연속적이지 않음인덱스를 이용해서 접근 가능 - 인덱스는 0부터 시작 배열이 만들어진 후 배열의 크기 변경 불가 - 동적 배열의 경우 새로운 배열을 생성해서 기존 배열을 복사함장점빠른 접근 시간 - 인덱스를 이용하여 O(1) 시간에 직접 접근 가능 메모리 상에서 연속적으로 저장되어 있어 캐시 효율성이 높다.- 반복적인 접근 패턴, 루프 내에서 여러 번 참조로 인해 시간적 지역성이 높음- 연속적인 메모리 할당, 순차적인 적근 패턴으로 인해 공간적 지역성이 높음 각 요소가 동일한 크기를 가져 메모리를 효율적으로 사용 구현이 간단하다. 단점고정된 크기 - 배열은 한 번..

순환(재귀), 반복

재귀 (순환)재귀란 주어진 문제를 해결하기 위해 자신을 다시 호출하는 프로그래밍 기법분할정복 > 재귀 - 기술면접 피보나치, 이항계수, 이진 트리 알고리즘 등등 ** 재귀함수의 핵심 요소 두 가지1. 종료 조건 (기본 케이스 - Base case)- 재귀 함수가 종료되는 조건이 반드시 필요하다.2. 문제 축소(재귀 케이스 - Recursive case)- 재귀 함수는 큰 문제를 반드시 작은 문제로 축소시켜야한다.재귀 활용- 트리와 그래프 순회- 분할 정복 알고리즘- 동적 프로그래밍- 백트래킹 알고리즘직접 재귀와 간접재귀직접 재귀 - 함수가 직접 자기 자신을 호출간접 재귀 - 함수 A가 함수 B를 호출하고, B가 다시 A를 호출하는 형태장점- 코드가 간결해지고 이해하기 쉬움- 일부 알고리즘을 자연스럽게 표..

CPU와 GPU, HDD와 SSD

CPU다양한 환경의 작업을 처리하기 위해 비교적 큰 캐시 메모리, 복잡한 컨트롤 유닛, ALU로 구성됨CPU는 적지만 강력한 여러 개의 코어들로 구성되어 있음CPU는 복잡하고 순차적인 작업에 적합 (직렬처리)**복잡한 로직, 순차적인 처리, 다양한 종류의 연산이 섞인 작업에 적합다양한 작업 처리, 복잡한 데이터 구조, 캐싱 ,컨텍스트 스위칭을 위해 큰 메모리를 요구 일반적인 프로그래밍 언어와 모델 사용GPU특화된 연산을 처리하기 위해 SM, 비교적 작은 캐시, 비교적 단순한 ALU로 구성됨GPU는 수백 혹은 수천 개의 코어들로 구성되며, 각 코어는 비교적 단순한 구조를 가지고 있음 GPU는 대규모 병렬적인 작업에 적합 (그래픽 렌더링, 머신 러닝, 암호화 등)**단순하고 반복적, 대량의 데이터를 병렬적으..