Checkpoint - 컴퓨터 공학 기초

YoungJoon Suh·2022년 4월 19일
0

하나의 프로그램이 여러 프로세스를 가질 수 있다.
프로세스는 싱글 스레드 또는 멀티 스레드로 작동할 수 있다.
프로세스는 프로그램이 메모리에 적재되어 운영체제로부터 필요한 공간, 파일, 메모리를 할당받는다.
node.js의 Event loop는 싱글 스레드로 작동되지만, Worker pool은 멀티 스레드로 작동됩니다.
즉, node.js의 초기화와 callback은 Event loop라는 하나의 프로세스, 하나의 스레드에서 작동되지만 I/O intensive, CPU intensive한 모듈은 Worker pool에서 작동합니다.

스레드에 대한 설명으로 맞는 것은?
프로세스 내에서 실행되는 흐름의 단위를 의미한다.
스레드는 다른 스레드와 독립적으로 작동한다.
싱글 코어에서 동시에 돌릴 수 있는 스레드 수는 한 개뿐이다.
프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받습니다.
스레드는 프로세스 내에서 각각 Stack만 따로 할당받고, Code, Data, Heap 영역은 공유합니다.

메모리에 대한 설명으로 맞는 것은?
메모리 주소는 16진법으로 표현한다.
32비트 운영체제에서는 최대 4GB만을 사용할 수 있다.
메모리는 하드디스크보다 읽기/쓰기 속도가 빠르다.
32비트 운영체제와 64비트 운영체제의 포인터의 크기는 다르다.
32bit 운영체제와 64bit 운영체제는 처리할 수 있는 데이터의 단위가 32bit, 64bit로 차이가 나기 때문에 사용할 수 있는 최대 메모리의 용량도 다르고, 메모리 주소의 값의 크기도 다릅니다.

가비지 컬렉션에 대한 내용으로 맞는 것은?
가비지 컬렉션은 프로그램에서 더 이상 쓰지 않는 메모리를 찾아서 회수하는 기능이다.
가비지 컬렉션의 방법으로는 트레이싱, 레퍼런스 카운팅 등의 방법이 있다.
가비지 컬렉션은 개발자가 직접 메모리를 다룰 때에 생길 수 있는 메모리 누수를 방지할 수 있다.
C#, 자바, 자바스크립트(v8)에는 가비지 컬렉터가 내장되어 있다. C++, C에는 가비지 컬렉터가 없다.

이진 파일과 텍스트 파일의 차이점은?
텍스트 파일이 아닌 파일은 전부 이진 파일로 취급된다.
대표적은 이진 파일로는 비트맵 이미지 파일이나 사운드 파일, 또는 실행 가능한 파일 등이 있습니다. HTML, JS 등의 소스코드는 이진 파일이 아니다.
메모장으로 파일을 열었을 때 깨져 보이는 경우, 인코딩의 문제이거나 혹은 해당 파일이 이진 파일이기 때문이다.
텍스트 파일은 운영체제별로 개행 문자 처리가 다르다.

컴 이라는 문자열을 UTF-8로 인코딩한 경우, 몇 바이트를 사용하나요?
3바이트, UTF-8에서 한글은 보통 3바이트를 사용합니다.

ASCII에 대한 설명으로 맞는 것은?
ASCII 문자열 셋 중 출력 가능한 문자들은 52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자, 그리고 하나의 공백 문자로 이루어져 있습니다. 한글은 포함되지 않습니다.
&문자를 포함한다.
ASCII에 포함된 문자열 셋은 7비트로 표현할 수 있다.
유니코드에는 ASCII가 포함되어 있다.

UTF-8과 UTF-16에 대한 설명으로 맞는 것은?
둘 다 유니코드의 인코딩의 형식이다.
네트워크를 통해 전송되는 텍스트는 주로 UTF-8을 이용한다.
BMP(다국어 기본 평면)에 속하는 문자열은 UTF-16을 이용할 때에 16비트로 표현이 가능하다.
UTF-8은 UTF-16에 비해 바이트 순서(엔디언)을 따지지 않고, 순서가 정해져 있습니다.

비트맵과 벡터 이미지에 대한 설명으로 맞는 것을 모두 고르면?
벡터 이미지는 크기에 상관없이 작은 파일 사이즈를 유지할 수 있다.
현대의 웹 브라우저는 벡터 이미지(svg)를 표현할 수 있습니다.
사진과 같은 이미지는 비트맵으로 표현하는 것이 유리하다.
해상도에 의존적인 비트맵 이미지는 가 아니라 태그를 이용해 표현합니다.

벡터를 비트맵으로 변환하는 것은, 그 반대에 비해서 컴퓨터 자원을 덜 사용한다.

캐시의 장점으로 맞는 것은?
데이터베이스의 부하를 줄일 수 있다.
인 메모리 캐시를 사용하면 데이터를 읽는 속도를 높일 수 있다.
디스크를 사용하는 데이터베이스에 비해, 주로 인메모리를 사용하는 캐시 때문에 더 빠른 읽기 작업을 할 수 있다.
영속적인 데이터를 저장할 수 없다.
아키텍처를 보다 적은 개수의 계층으로 구성할 수 없다.
레지스터와 캐시는 CPU 내부에 존재한다. 당연히 CPU는 아주 빠르게 접근할 수 있다. 메모리는 CPU 외부에 존재한다. 레지스터와 캐시보다 더 느리게 접근할 수 밖에 없다. 하드 디스크는 CPU가 직접 접근할 방법조차 없다. CPU가 하드 디스크에 접근하기 위해서는 하드 디스크의 데이터를 메모리로 이동시키고, 메모리에서 접근해야 한다. 아주 느린 접근 밖에 불가능하다.

티어 별 캐시 적용 예제로 잘 연결된 것은?
CDN(Content Delivery Network)은 네트워크 단계에서 콘텐츠를 보다 빠르게 제공하기 위한 서비스입니다.
전 세계 곳곳에 분산되어 있는 데이터 센터에 콘텐츠가 저장(캐싱)되어 있으며, 지리적으로 가까운 데이터 센터로 접근할 수 있도록 만들어줍니다.
네트워크 - DNS 서버
클라이언트 - LocalStorage
서버 - Redis
네트워크 - CDN

function logA() { console.log('A') }
function logB() { console.log('B') }
function logC() { console.log('C') }

logA();
setTimeout(logB, 0);
logC();

logA, setTimeout, logC 작업이 call stack에 차례로 push된다.
A, C, B가 순차적으로 출력된다.
setTimeout 호출 시 logB 작업은 task queue에 enqueue된다.
logC의 실행이 완료되고 call stack에 아무 작업도 남지 않으면, event queue의 head에 있는 logB 이벤트가 call stack에 push 된다.

profile
저는 서영준 입니다.

0개의 댓글