◎컴퓨터의 기본 구조
- 하드웨어: 전자 회로 및 기계 장치로 되어 있어 입출력 장치, 중앙처리장치, 기억장치 등으로 구성되어있디.
- 소프트웨어: 하드웨어 위에서 하드웨어를 제어하며 작업을 수행하는 프로그램
‣기본 구성 요소
- 입력장치
: 컴퓨터가 처리할 수 있는 형태로 데이터와 명령을 받아들이는 물리적인 장치
ex) 키보드, 마우스 등
- 출력장치
: 처리된 데이터를 사람이 이해할 수 있는 형태로 출력하는 물리적인 장치
ex) 모니터 등
- 중앙처리장치
- 산술: 덧셈을 수헹
- 제어장치: 프로그램에 따라 명령과 제어 신호를 생성하여 각종 장치의 동작을 제어하는 것
- 레지스터: CPU에서 사용하는 데이터를 일시적으로 저장하는 장소
- 저장장치
- 주 기억장치: 데이터나 프로그램을 보관하기 위한 일차 기억장치
ex) RAM, ROM 등
- 보조 기억장치: 주기억장치를 보조하기 위한 디스크
ex) USB, SSD 등
‣CPU와 메모리
- CPU
: 각종 연산을 수행하고 기억장치에 기억되어 있는 명령어들을 수행하는 컴퓨터 시슴템을 이루는 핵심 부품
- CPU의 구조
- 산술/논리 연산 장치(ALU)
: 레지스터에 저장된 데이터를 이용하여 산술 연산을 수행
- 레지스터
: CPU 내부에 있는 기억장치
=> 범용레지스터: 산술 연산 논리장치에 의해 사용, 전용레지스터: PC 등 특수목적에 사용
- IR: 현재 수행중에 있는 명령어 부호를 저장하고 있는 레지스터
- PC: 명령이 저장된 메모리의 주소를 가리키는 레지스터
- AC: 산술 및 논리 연산의 결과를 임시로 기억하는 레지스터
- 제어장치(CU)
: CPU가 자신 및 주변기기들을 컨트롤하는 장치
=> 프로그램 계수기: 프로그램의 수행순서를 제어, 명령레지스터: 현재 수행중인 명령어의 내용을 임시 기억, 명령해독기: 명령레지스터에 수록된 명령을 해독하여 수행될 장치에 제어신호를 보냄
- Memory
- 메모리 종류
-주기억장치
1.RAM
: RAM의 크기는 프로그램의 수행속도에 영향을 준다.
2.ROM
: 대부분 읽을 숭만 있는 장치로 구성되어 있으며 전원이 끊겨도 내용이 보존된다.
-보조기억장치
1.자기디스크
:원판 표면의 철입자의 방향으로 0과1을 표현
2.광디스크
: 빛의 반사를 이용하여 자료를 읽어내느 저장매체
3.플래시 메모리
: 전자적으로 데이터를 지우고 쓸수 있는 비휘발성 메모리로 충격에 함
- 캐시메모리
: 메인 메모리와 CPU간의 데이터 속도 향상을 위한 중간 버퍼 역할
◎운영체제
‣프로세스
: 하드웨어를 구성하는 CPU, 자료를 저장하는 RAM, 디스크 등의 시스템 자원을 관리하는 주체
- 응용프로그램: 운영체제를 통해 컴퓨터에게 일을 시키는 것
‣프로세스
: 프로그램이 실행중인 상태, 특정 메모리 공간에 프로그램의 코드가 적재되고 CPU가 해당 명령어를 하나씩 수행하고 있는 상태
- 유저 메모리 영역 관리
: 프로세스 별로 독립된 영역을 가지게 되는 곳
- 핸들 테이블
: 프로세스에서 사용하는 모든 핸들에 대한 커널 객체 포인터 정보를 배열 형태로 가지고 있는 공간
- 독립적인 메모리 공간
: 페이징 기법을 이용하여 프로세스마다 별도의 고유한 메모리를 사용할수 있다.
- 프로세스 특징
- 자원 소유의 단위: 각각의 프로세스는 자싱의 실행 이미지 로드와 실행에 필요한 추가적인 메모리 공간을 가지고 있어야한다.
- 디스패칭의 단위: 하나의 프로세스에서 여러 개의 디스패팅 단위가 실행될 수 있도록 하는 것 => 스레드
- 프로세스 상태
- 실행(run): 프로세스가 프로세서를 차지하여 서비스를 받고 있는 상태
- 준비(ready): 실행될 수 있도록 준비되는 상태
- 대기(waiting): CPU의 사용이 아니라 입출력의 사건을 기다리는 상태
‣스레드
: 명령어가 CPU를 통해서 수행되는 객체의 단위
-하나의 프로세스 내에는 반드시 1개 이상의 스레드가 존재
-같은 프로세스에 있는 자원과 상태를 공유
-여러 개의 작업 단위로 구성된 프로그램에서 요청을 동시에 처리하기 위해 필요
- 스레드의 구성요소
- 가상CPU: 인터프리터, 컴파일러에 의해 내부적으로 처리되는 가상 코드
- 수행코드: Thread Class에 구현되어 있는
run()
Method코드
- 처리 데이터: Thread에서 처리하는 데이터
- 싱글 스레드와 멀티 스레드
- 싱글 스레드: 프로세스가 단일 스레드로 동작하는 방식, 단일 스레드만으로 직렬처리
- 멀티 스레드: 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것
- 동시성과 병렬성의 차이
-시분할: 각 스레드를 시간에 따라 분할하여, 여러 스레드가 일정 시간마다 돌아가면서 실행되도록 한다.
-Concurrency(동시성, 병행성): 여러 개의 스레드가 시분할 방식으로 동시에 수행되는 것처럼 착각을 불러일으킴
- Parallelism(병렬성): 멀티 코어 환경에서 여러 개의 스레드가 실제로 동시에 수행됨
◎문자열과 그래픽
‣문자열
- 유니코드: 전 세계의 모든 문자를 컴퓨터에서 일관 되게 표현하고, 다룰 수 있도록 설계된 산업표준
- ASCII문자: 7비트로 모든 영어 알파벳을 표현
-UTF-8
- 가변 길이 인코딩: 1byte에서 4bytes까지 사용
- 바이트 순서가 고정
-UTF-16
- 코드 그대로 바이트로 표현 가능
-바이트 순서가 다양
‣그래픽
- 시분할비트맵(래스터 그래픽=점방식)
: 이미지의 각 점들을 격자형의 픽셀 단위로 구성되며, 한 지역을 차지하는 셀은 위치에 따라 다른 값을 갖는다.
- 시분할벡터
: 이미지를 수학적인 공식으로 표현
◎가비지 컬렉션
: 프로그램에서 더이상 사용하지 않는 메모리를 자동으로 정리하는 것
- 메모리 생존 주기
: 어떤 프로그래밍 언어에 관계 없이 비슷
- 필요할때 개발자가 할당
ex) let arr = [100, 200, 300, 400]
- 할당된 메모리 사용: 할당된 메모리를 읽고 쓰는 것
- 메모리가 더이상 필요하지 않으면 해제
- 가비지 컬렉션의 방법
- 래퍼런스 카운팅(참조 횟수 계산)
: 한 객체를 참조하는 변수의 수를 추적하는 방법
- 트레이싱
:한 객체에 flag를 두고, 가비지 컬렉션 사이클마다 flag에 표시 후 삭제하는 mark and sweep방법