Computer Science/Computer Systems (28) 썸네일형 리스트형 [Lecture 16] Automatic Memory Management / 가비지 컬렉션 #Automatic Memory Management 명시적(explicit) 메모리 관리(예: malloc() 및 free()를 통한)는 오류가 발생하기 쉽다. 이에 반해, 대부분의 현대 언어들은 자동 메모리 관리또는 가비지 컬렉션이라고도 불리는 "암묵적 메모리 관리" 형태를 제공한다 명시적 메모리 관리는 복잡하며, 다양한 오류가 발생할 수 있다: 메모리를 너무 일찍 해제하면 use-after-free 오류가 발생할 수 있다. 메모리 해제를 너무 늦게 하거나 전혀 하지 않으면, 메모리 누수(leak)의 위험이 있다. 자동 메모리 관리 시스템은 객체의 소유권과 수명을 식별하는 원칙적인 설계를 필요로 한다. 이는 API 설계를 복잡하게 만들 수 있으나, 프로그래밍에서 발생할 수 있는 여러 문제들(메모리 누수.. [Lecture 7] 멀티쓰레딩 - Introduction to Multithreading #멀티태스킹 우리가 새로운 게임이 출시되었을때, 게임웹사이트에 들어가 다운로드를 하는데 다운로드를 하는 동안 컴퓨터 전체가 멈춰있으면 어떨까? 오래전 컴퓨터들은 이러한 작업을 한번에 하나밖이 실행 하지 못했기 때문에, 여러작업을 동시에하는 현대 컴퓨터와는 달리 굉장히 불편했다. 하지만 현재 컴퓨터들은 프로세스 여러개를 한번에 돌릴수 있기 때문에 이러한 불편함을 없앨 수 있었다. 바로 이렇게 컴퓨터가 여러개의 프로세스, 작업을 동시에 여러 개 실행하는 것이 멀티 태스킹이다. CTRL - Shift - ESC를 눌러보면 얼마나 많은 프로세스들이 백그라운드에서 돌아가고 있는지 볼 수 있다. 여러 프로세스를 함께 실행시키는 작업은 동시적 (concurrency), 병렬적 (parallel), 또는 둘의 혼합으로.. [Lecture 9] 멀티쓰레딩 III - Semaphores / 세마포어 #식사하는 철학자 문제 / Dining philosophers problem위의 사진처럼, 5명의 철학자가 같이 식사를 하려고 모였다고 가정하자. 식탁에는 맛있는 스파게티가 올라와 있고, 각 스파게티 접시 사이에 포크가 하나 씩 있다. 하지만 이 모임에 있는 철학자들은 단순히 음식을 먹지 못한다. 이 철학자들이 음식을 먹기 위해선 다음과 같은 규칙을 따라야 한다.1. 일정 시간 생각을 한다.2. 왼쪽 포크가 사용 가능해질 때까지 대기한다. 만약 사용 가능하다면 집어든다.3. 오른쪽 포크가 사용 가능해질 때까지 대기한다. 만약 사용 가능하다면 집어든다.4. 만약 양쪽의 포크를 잡으면 일정 시간만큼 식사를 한다.5. 오른쪽 포크를 내려놓는다.6. 왼쪽 포크를 내려놓는다.7. 다시 1번으로 돌아가 반복한다.굉.. [Lecture 21] HTTP #개요 이번 포스트에서는 현대 웹 기반 애플리케이션뿐만 아니라 전 세계 웹의 기본 프로토콜인 Hypertext Transfer Protocol HTTP에 대해 알아보자. HTTP란 인터넷에서 하이퍼텍스트(hypertext) 문서를 교환하기 위하여 사용되는 통신규약이다. 하이퍼텍스트는 문서 중간중간에 특정 키워드를 두고 문자나 그림을 상호 유기적으로 결합하여 연결시킴으로써, 서로 다른 문서라 할지라도 하나의 문서인 것처럼 보이면서 참조하기 쉽도록 하는 방식을 의미한다. http는 1989년 팀 버너스 리(Tim Berners Lee)에 의하여 처음 설계되어 인터넷을 통한 월드 와이드 웹(World-Wide Web) 기반에서 전 세계적인 정보공유를 이루는데 큰 역할을 하였다. http의 첫번째 버전은 인터넷.. [Lecture 17] Automatic Memory Management, Performance # Performence of Automatic Memory Management 실제 garbage collector들은 그들이 만드는 절충안에 매우 다양하다. 개발자들은 수십 년 동안 그것들을 설계하는 데 소비되어 왔다. 예를 들어, 자바 10은 4개의 다른 컬렉터와 함께 사용된다. ZGC는 2018년에 추가된 5번째 컬렉터이다 프로그램 처리량, 메모리 오버헤드, GC 처리량, 확장성 등 많은 특성이 다르다 garbage collector의 정책을 적절히 조정하고 성능에 미치는 영향을 이해하려면 작업 부하를 잘 이해해야 한다 #Modeling the Cost of GC Compacting Collectors: Garbage collector는 객체 그래프, 특히 다른 객체에 대한 포인터가 저장되는 위치.. [Lecture 24] Virtualization #"가상 시스템"의 정의 하드웨어가 아닌 소프트웨어로 구현된 시스템 컴퓨터처럼 작동하는 독립적인 환경 컴퓨팅 디바이스(명령어 세트 등)에 대한 추상적인 사양 (언어 기반) 가상 시스템 명령 집합은 일반적으로 기존 아키텍처와 유사하지 않다 Java VM, .Net CLR 등등 virtual machine monitors (VMM) 실제 아키텍처에서 완전히 또는 부분적으로 가져온 명령 집합 #Java Bytecode 예제 Compiled from "h.java" public class h { public h(); Code: 0: aload_0 1: invokespecial #8 // Method java/lang/Object."":()V 4: return public static void main(java... [Lecture 23] 클라우드, VM과 컨테이너 #클라우드 컴퓨팅 클라우드 컴퓨팅이란 서버, 스토리지 등의 IT 리소스를 인터넷을 통해 실시간 제공하고 사용한 만큼 비용을 지불하는 방식의 컴퓨팅을 말한다. 쉽게 말해 정보처리를 자신의 컴퓨터가 아닌 인터넷으로 연결된 다른 컴퓨터로 처리하는 기술을 말한다. 빅데이터를 처리하기 위해서는 다수의 서버를 통한 분산처리가 필수적이다. 분산처리는 클라우드의 핵심 기술이므로 빅데이터와 클라우드는 밀접한 관계를 맺고 있다. 빅데이터 선도 기업인 구글과 아마존이 클라우드 서비스를 주도하고 있는 이유도 여기에 있다. “X as a service” 예: SaaS (software as a service) Infrastructure as a Service 사용자가 커널에서 애플리케이션에 이르기까지 소프트웨어를 관리 클라우드.. [Lecture 20] TCP/IP 소켓 프로그래밍 #개요이번 포스트에서는 다음과 같은 네트워크 개념들을 알아보자IPv4/IPv6를 비롯한 TCP/IP전송 계층 프로토콜: TCP와 UDP포트 사용TCP/UDP에서의 디멀티플렉싱 / Demultiplexing (역다중화)IPv4 addressing(주소 지정) & 라우팅subnet / 서브넷(부분망) 및 CIDR 포함프로토콜 독립성BSD 소켓 APIDNS 네임 확인을 위한 유틸리티 함수 포함TCP/IPhttps://terms.naver.com/entry.naver?docId=1168072&ref=y&cid=40942&categoryId=32851#Transport and Network Layer*Transport Layer (전송 계층) 프로토콜: TCP (Transmission Control Protoco.. 이전 1 2 3 4 다음