[TIL] Day59- 컴공 기초

공부중인 개발자·2021년 7월 1일
0

TIL

목록 보기
59/64
post-thumbnail

컴퓨터공학 기초

문자열

  • 유니코드

유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준
이 표준에는 ISO 10646 문자 집합, 문자 인코딩, 문자 정보 데이터베이스, 문자들을 다루기 위한 알고리즘 등을 포함

- 인코딩이란? 어떤 문자나 기호를 컴퓨터가 이용할 수 있는 신호로 만드는것
  • ASCII 문자

영문 알파벳을 사용하는 대표적인 문자인코딩
52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자, 그리고 하나의 공백 문자를 포함

  • UTF-8과 UTF-16의 차이점

UTF-8과 UTF-16은 인코딩 방식의 차이를 의미 숫자 뒤는 bit

  1. UTF-8 특징: 가변 길이 인코딩
    UTF-8은 유니코드 한 문자를 나타내기 위해 1byte(=8bit) 에서 4byte까지 사용
  2. UTF-8 특징: 바이트 순서가 고정됨
    UTF-16에 비해 바이트 순서를 따지지 않고, 순서가 정해져 있다.
  3. UTF-16 특징: 코드 그대로 바이트로 표현 가능, 바이트 순서가 다양함
    UTF-16은 유니코드 코드 대부분(U+0000부터 U+FFFF; BMP) 을 16bit로 표현

그래픽

비트맵과 벡터 이미지의 차이점

비트뱁백터
기반기술픽셀 기반수학적으로 계삭된 Shape기반
특징색상의 조합이 다양한 이미지에 적합로고, 일러스트와 같이 제품에 적용되는 이미지에 적합
확대적합하지 않음품질 저하없이 모든 크기로 확대 가능, 해상도의 영향X
크기에 따른 용량큰 크기의 이미지는 큰 파일 사이즈큰 크기의 벡터그래픽은 작은 파일 사이즈 유지 가능
상호 변환이미지의 복잡도에 따라 변환시간 차이남쉽게 래스터(비트맵) 이미지로 변환 가능
파일 포멧jpg,gif,png 등svg, ai
웹에서 사용성jpg,gif,png 등이 널리 쓰임svg포멧은 현대의 브라우저에서 대부분 지원

운영체제 개요

1. 운영체제

  • 시스템 자원 관리

운영체제가 없다면 응용 프로그램 실행X 응용프로그램의 목적은 컴퓨터에게 일을 시키는 것
운영체제는 하드웨어에게 일을 시킬 수 있도록 도와줌

  • 응용 프로그램 관리

응용 프로그램이 시스템의 자원을 마음대로 사용하지 못하도록 응용프로그램에 맞는 권한을 관리해주어야함
여러사람이 사용할 경우를 대비한 사용자 관리도 중요

2. 응용프로그램

응용 프로그램은 권한을 부여받은 뒤 운영체제가 제공하는 기능을 이용할 수 있어야함
운영체제는 응용 프로그램을 위해 인터페이스(API)를 제공할 필요가 있음
응용 프로그램이 시스템 자원을 사용할 수 있도록 운영체제 차원에서 다양한 함수를 제공하는 것을 시스템 콜이라고 부름

참고사이트
https://parksb.github.io/article/5.html
공룡책으로 정리하는 운영체제 Ch.1

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

1. 프로세스

운영체제에서 실행 중인 하나의 애플리케이션을 프로세스라고 부름
사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당 받아 애플리케이션의 코드를 실행 => 이것이 프로세스
하나의 애플리케이션에서 다중 프로세스를 만들기도 함

2. 스레드

스레드는 한 가지 작업을 실행하기 위해 순차적으로 실행한 코드를 실처럼 이어놓았았다고 해서 유래된 이름
하나의 스레드는 하나의 코드 실행 흐름이기 때문에 한 프로세스 내에 스레드가 두개면 두개의 코드 실행흐름이 생긴다는 의미

3. 멀티 스레드

여러개의 스레드를 동시에 처리하는 것을 멀티 스레드라고 부름
멀티 프로세스가 애플리케이션 단위의 멀티 태스킹 이라면 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹

  • 스레드의 특징
  1. 프로세스 내에서 실행되는 흐름의 단위
  2. 각 스레드마다 콜스택(실행중인 서브루틴을 저장하는 자료구조)이 존재
  3. 스레드는 다른 스레드와 독립적으로 작동
  • 멀티 스레딩 장점
    프로세스를 이용하여 동시 처리하던 일을 스레드로 구현하면 메모리 공간과 시스템 자원소모가 줄어듬
    스레드간 통신이 필요한 경우 전역 변수의 공간 또는 동적으로 할당된 공간인 Heap영역을 이용
    그렇기에 프로세스 간 통신 방법(IPC)에 비해 스레드 간 통신이 훨씬 간단
    따라서 시스템의 throughtput이 향상되고 자원 소모가 줄어들며 자연스럽게 프로그램의 응답 시간이 단축
    이러한 장점으로 인해 여러 프로세스로 할 수 있는 작업들을 하나의 프로세스에서 스레드로 나눠 수행

  • 멀티 스레딩 문제점

멀티 프로세스 기반으로 프로그래밍할 때는 프로세스 간 공유하는 자원이 없기 때문에 동일한 자원에 동시에 접근하는 일이 없지만, 멀티 스레딩을 기반으로 프로그래밍할 때는 공유 자원이 있기 때문에 문제가 생길 수 있음
서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문에 어떤 스레드가 다른 스레드에서 사용중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정할 수 있음
그렇기 때문에 멀티스레딩 환경에서는 동기화 작업이 필요, 동기화를 통해 작업 처리 순서를 제어하고 공유 자원에 대한 접근을 제어

  • 동시성과 병렬성의 차이
  • 동시에 돌릴 수 있는 스레드 수는 컴퓨터에 있는 코어 갯수로 제한되므로, 운영체제(또는 가상 머신)은 각 스레드에 시간을 나눠주면서 여러 스레드를 돌아가면서 실행시켜야 함 (시분할)
    • 여러 개의 스레드가 시분할 방식으로 동시에 수행되는것 처럼 착각을 불러일으키는 것이 병행성(Concurrency)
    • 멀티코어 환경에서와 같이 여러 개의 스레드가 실제로 동시에 수행되는 것이 병렬성(Parallelism)

싱글코어로도 시분할을 이용하여 멀티코어처럼 동시에 수행하는 것처럼 할 수 있다.


이론만 배웠는데 솔직히 뭐 배운건지 하나도 모르겠다..

profile
열심히 공부하자

0개의 댓글