본문 바로가기

분류 전체보기

(55)
가상머신 / 우분투 / UTM / Shell 등 많이 들어봤지만 정확히 모르는 용어들 운영체제 종류macOS, Windows, Linux, Unix 등- Linux는 Unix를 기반으로 만들어졌다.- 우분투(Ubuntu)는 Linux 배포판이다. 가상 머신(Virtual machine, VM)second OSVMOSHardware물리적 하드웨어가 아닌 VM을 통해 내가 필요한 다른 OS를 설치하여 사용할 수 있다.이때 나의 기본 OS는 평범하게 하드웨어 위에서 돌아가지만,second OS는 하드웨어가 아닌 VM 위에서 돌아가고, 자기가 하드웨어 위에서 돌아간다고 생각한다. Windows 가상화 소프트웨어 종류(InnoTek->썬->)Oracle의 Virtual BoxVMware의 워크스테이션MS의 하이퍼-V... UTM- virtualize, emulate 2가지 모드를 지원한다. She..
[시스템 프로그래밍] error handling wrapper / pid / process states Error Handling Wrapper system-level operations는 대부분 에러가 난다. 그래서 에러 핸들링을 명시적으로 할 필요가 있다. 에러 핸들링 코드를 줄줄 써놓으면 전체 코드가 복잡해지니, 에러를 핸들링하는 wrapper함수를 만들어보자. Linux는 에러가 나면 -1을 return하고, 전역변수 errno에 그 원인을 적어준다. void reporting_error(char *error_msg){ fprintf(stderr, "%s : %s\n", error_msg, strerror(errno)); //에러 메시지 : 에러 넘버 exit(1); //비정상 종료 } if( (pid = fork()) < 0) { reporting_error("fork error"); } PID ..
[시스템 프로그래밍] Process와 Context Switching Process - an instance of a running program - a context(state) for the program execution 각 process는 실행되기 위해서 1. CPU 와 CPU 내부의 registers 2. memory 내부의 stack, heap, data, code의 저장공간 이 필요하다. Process라는 개념이 주는 2가지 이득 (abstractions) ① Logical control flow : 각 process는 CPU를 독점하는 것처럼 보인다. by context switching ② Private address space : 각 process는 memory를 독점하는 것처럼 보인다. by virtual memory Kernel - a shared c..
[이론] Single Buffering / Double Buffering / VSync / Triple Buffering 0. Raster Graphics System의 구조와 흐름 ① GPU가 frame buffer(in graphic memory)에 계산된 이미지를 그린다. ② video controller가 frame buffer에 access하여 각 pixel의 r, g, b값 scan. ③ digital-to-analog converter가 digital info -> analog info. ④ electron-beam gun이 screen의 phospher(형광인자)에 빛을 쏜다. ⑤ phospher가 받은 빛의 강도에 따라 환해졌다가 어두워진다. (무한 반복) ① : rendering 과정 ② ~ ⑤ : display 과정 1. Computer Graphics 관점에서의 Frame Buffer Frame buf..
* 일반적인 Rendering Pipeline 정리 Rendering Process (위에서 아래방향)설명input3d virtual world + rendering parametersvertex shadervertex processingcull / clip / setupfixed-function pipelinerasterization이를 기점으로 geometry info -> pixel infofragment shadertexture and fragment processingpre-fragment operationfixed-function pipelineframe buffer (output)그래픽 카드의 graphic memory
[Algorithm] 기초 지식 - big O notation Complexity 컴퓨터가 주어진 문제를 효율적으로 해결할 수 있을까? (알고리즘은 존재) - 효율의 기준 : polynomial의 존재 여부 Computability 컴퓨터가 이 세상의 모든 문제를 해결할 수 있는가? (알고리즘이 존재하는가) Algorithm이란 a finite set of instructions - algorithm의 5가지 요건 ① input : (input 개수) ≥ 0 ② output : (output 개수) ≥ 1 ③ definiteness : 명확해야함. ④ finiteness : 모든 경우에서 유한한 시간 안에 종료되어야 함. ⑤ effectiveness : 간단하고 실행 가능해야함. (구현 가능성 측면) Big O notation 두 함수 f(n), g(n)이 주어졌을..
[kotlin] Lists and arrays / Null safety 0. elements가 중복가능하다 = ordering이 있다 = indexing이 가능하다 set list array ordering 및 indexing X O O elements 중복 가능 여부 X O O Lists 1. list는 generic하다. (elements로 올 수 있는 자료형이 여러 종류이다.) listOf() mutableListOf() - immutable - 한번 만들면 read-only다. (elements 추가, 제거, 변경 모두 불가) - list의 default - mutable - elements의 추가, 제거, 변경 모두 가능하다. 예시로 만들어본 코드에 이상한 점이 보인다. val 이라고 선언하였으니 이 변수는 변경 불가능한 것이 아닌가? 제거가 가능하다니? 설명하자면..
[kotlin] primitives와 objects / datatypes / variables / ranges / loop Primitives와 objects 1. 우선 primitive type(원시 타입)과 wrapper class(래퍼 클래스)에 대해 간단히 알아보자. primitive type → wrapper class 객체화 예를 들어 primitive type int는 wrapper class Integer로 객체화, 즉 객체로 뤠핑된다. 객체로 포장함으로써... 장점 : null 값을 대입할 수 있고, 메소드도 호출할 수 있게 된다. 단점 : 메모리 측면에서 비효율적일 수 있다. 2. kotlin에는 primitive types가 없고, 전부 objects로 취급된다. NO primitives, ALL objects!! 3. kotlin을 구현의 관점에서 바라보면, 두가지로 나눠 생각해야한다. ① 숫자 (num..