1 minute read

컴퓨터 공학의 기초적인 내용들을 학습해보자.

문자열

예전에는 알파벳 1개가 1바이트(byte)였는데, 요즘은 유니코드를 사용해야 텍스트를 정확하게 저장할 수 있다.

프로그래밍 언어마다 문자열을 저장하는 자료형이 모두 다르므로, 이 자료형이 차지하고 있는 바이트를

이해해야 문자열 하나가 몇 바이트인지 답할 수 있다.

그럼 유니코드란?

유니코드 협회(Unicode Consortium)가 제정하는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.

기본적으로 유니코드의 목적은 현존하는 문자 인코딩 방법을 모두 유니코드로 교체하는 것이다.

인코딩(부호화) → 어떤 문자나 기호를 컴퓨터가 이용할 수 있는 신호로 만드는 것.

ASCII 문자

→ 영문 알파벳을 사용하는 대표적인 문자 인코딩. 7비트로 모든 알파벳을 표현할 수 있다. 유니코드는 ASCII를 확장한 형태이다.

UTF (Universal Coded Character set + Transformation Format)

지금까지 공부하며 UTF-8이라던지, UTF-16이라는 것들을 본적이 있다.

UTF-8

→ 가변 길이 인코딩이며, 유니코드 한 문자를 나타내기 위해 1byte(= 8bits)에서 4bytes까지 사용한다. 바이트 순서를 따지지 않고, 순서가 정해져 있다.

UTF-16

→ 코드 그대로 바이트로 표현이 가능하고, 바이트 순서가 다양하다.

유니코드 코드 대부분을 16bits로 표현한다.

그래픽

레스터(Raster, PNG) 이미지와 벡터(SVG) 이미지의 차이에 대해서 알아보자.

우선, 그림으로 살펴보자.

위 그림과 같이, Raster는 픽셀기반으로 되어있어 확대시 뭉개지는 모습을 보이는 반면

Vector는 수학적으로 계산된 Shape기반으로 확대시에도 이미지가 유지되는 것을 볼 수 있다.

운영체제

운영체제가 하는 일

  • 시스템 자원 관리
  • 프로세스 관리(CPU)
  • 메모리 관리
  • I/O (입출력) 관리 (디스크, 네트워크 등)
  • 응용프로그램 관리
  • 응용프로그램이 실행되고, 시스템 자원을 사용할 수 있도록 권한과 사용자를 관리한다.

프로세스, 스레드, 멀티 스레드

프로세스(Process)

→ 실행중인 하나의 애플리케이션. 카톡을 실행하면 하나의 프로세스가 실행되고, 여기에 크롬을 2개 실행시키면 세개의 프로세스가 실행된 것이다.

스레드(Thread)

→ 스레드는 한 가닥의 실이라는 의미를 가지고 있으며, 하나의 스레드는 코드가 실행되는 하나의 흐름이다.

한 프로세스 내에 스레드가 2개라면 코드가 실행되는 흐름이 2개 생긴다는 말이다.

멀티 스레드(Multi-Thread)

→ 2가지 이상의 작업을 동시에 처리하는 것.

  1. 스레드의 특징
  • 프로세스 내에서 실행되는 흐름의 단위
  • 각 스레드마다 call stack이 존재 (call stack: 실행중인 서브루틴을 저장하는 자료 구조)
  • 스레드는 다른 스레드와 독립적으로 동작
  1. 멀티 스레딩의 장점
  • 메모리 공간과 시스템 자원의 소모가 줄어들고, 시스템의 처리량이 향상되고 자원 소모가 줄어들면서 프로그램의 응답 시간이 단축된다.
  1. 멀티 스레딩의 문제점
  • 서로 다른 스레드가 같은 데이터에 접근하고, 힙 영역을 공유하기 때문에 서로 다른 스레드가 서로 사용중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정하는 일이 발생할 수 있다. 때문에 동기화 작업이 필요하다. 동기화를 통해 작업 처리 순서를 제어하고, 공유 자원에 대한 접근을 제어해야 한다.
  1. 동시성과 병렬성의 차이
  • 동시성, 병행성 (Concurrency) → 여러 개의 스레드가 시분할 방식으로 동시에 수행되는 것처럼 착각을 불러일으킴
  • 병렬성 (Parallelism) → 멀티 코어 환경에서 여러 개의 스레드가 실제로 동시에 수행됨

Updated: