컴퓨터가 처리할 수 있는 형태로 데이터와 명령을 받아들이는 물리적인 장치
ex) 키보드, 마우스, 스캐너, 태블릿 등
처리된 데이터를 사람이 이해할 수 있는 형태로 출력하는 물리적인 장치
ex) 모니터, 프린터
CPU 내부에 있는 기억장치
레지스터 종류
CPU가 자신 및 주변기기들을 컨트롤하는 장치
고정 배선 제어(Hardwired) | Micro Program |
---|---|
제어신호가 Hardwired Circuit 에 의해서 생성 되도록 하드웨어 구성하며 상태계수기와 PLA(Programmable Logic Array ) 회로로 구성 | 발생 가능한 제어 신호들의 조합을 미리 구성하여 ROM 에 저장했다가 필요 시 신호를 발생시키는 Software 방식 |
고속 처리, 고가 | 하드웨어 방식에 비해 속도도 낮고 가격도 저렴 |
RISC 시스템에 적용 | CISC에 적용 |
시스템이 특정 동작을 수행시키는 작은 단위
cf) 파이프라이닝 : 순차적 명령어를 처리하는 프로세서에 적용되는 기술. 동시에 여러개의 명령어를 실행하는 기법
cf) 슈퍼스칼라: 여러개의 파이프라이닝
휘발성 | |
---|---|
메모리 | 시스템이 꺼지면 지워짐 |
보조기억장치 | 시스템이 꺼져도 기억하고 있음 |
메모리와 CPU가 데이터를 주고받는 시간에 달림
메모리에서 한번 읽고 다시 읽을 수 있는 사이 시간
CPU에서 보낸 명령어 주소값을 가져오는데 걸리는 시간
메모리작업 완료와 동시에 다음 신호를 받을 준비가 되었다는 신호를 주기까지의 시간
메인 메모리와 CPU간의 데이터 속도 향상을 위한 중간 버퍼 역할을 함
메인 메모리가 데이터를 받고 전달하는 것이 느려서 캐시 메모리가 중간에 미리 CPU에 전달될 데이터를 들고 서있는 형태
Cache Hit: CPU가 필요한 데이터가 캐시 메모리에 있는 경우
Cache Miss: CPU가 필요한 데이터가 캐시 메모리에 없을 경우
응용 프로그램을 실행하려면 운영체제가 있어야함
운영체제는 응용프로그램이 하드웨어에게 일을 시킬 수 있도록 도와줌
악의적 목적을 가진 프로그램이 디스크의 모든 민감정보에 접근할 수 없도록 응용프로그램 권한에 대한 관리가 필요함
응용프로그램이 운영체제를 통해 하드웨어에게 일을 시키려면 컴퓨터를 조작할 수 있는 권한을 운영체제로부터 받아야 함
응용프로그램이 운영체제와 소통하려면, 운영체제가 응용프로그램에 API를 제공해야함. 이를 위해 운영체제에서 다양한 함수를 제공하는 것을 시스템 콜이라고 부름
프로그램이 실행 중인 상태로 특정 메모리 공간에 프로그램의 코드가 적재되고 CPU가 해당 명령어를 하나씩 수행하고 있는 상태 의미.
실행 중인 하나의 애플리케이션을 프로세스라고 부름
ex) 크롬 브라우저를 2개 실행하면 2개의 프로세스가 생성됨
프로세스에서 사용하는 모든 핸들에 대한 커널 객체 포인터 정보를 배열 형태로 가지고 있는 공간. 프로세스 종료 시 테이블의 정보를 참고하여 이 프로세서에서 사용하고 있는 모든 커널 객체를 자동으로 반환함
cf) 커널(kernel): 컴퓨터 운영 체제의 핵심이 되는 컴퓨터 프로그램으로 시스템의 모든 것을 완전히 통제함
프로세스마다 별도의 고유한 메모리를 사용할 수 있게 하고 있음
가상 메모리: Ram을 더 효율적으로 사용하기 위한 것. Ram에서 사용하지 않는 데이터를 하드디스크에 넣어놓고 사용할 때 꺼내와서 씀. 근데 그 하드디스크 공간까지도 부족할 때 가상메모리가 부족하다는 경고문이 뜸
각각의 프로세스는 자신의 실행 이미지 로드와 실행에 필요한 추가적인 메모리 공간을 가지고 있어야 함. 이는 각 프로세스마다 구별되어야 함. 해당 프로세스가 접근코자 하는 파일, I/O장치들에 대해서도 프로세서 단위로 할당받아 관리되어야함
프로세스는 하나의 프로그램이 운영체제로부터 CPU 의 자원을 일정 기간 동안 할당 받아 명령어를 실행하는 것.
운영체제는 여러 개의 프로세스가 병렬적으로 실행되게 하기 위해서 CPU 의 사용 시간을 각각의 프로세스에 골고루 나누어 주어야 함.
하나의 프로세스에서 여러 개의 디스패칭 단위가 실행될 수 있도록 하고 있으며, 이러한 디스패칭 단위를 스레드라 부름
프로세스가 프로세서를 차지하여 서비스를 받고 있는 상태
실행될 수 있도록 준비되는 상태
CPU의 사용이 아니라 입출력의 사건을 기다리는 상태
특정 목적을 수행하기 위해 나열된 작업 목록
명령어가 CPU를 통해서 수행되는 객체의 단위
하나의 프로세스 내에는 반드시 1개 이상의 스레드가 존재
프로세스 내에 스레드가 존재하므로 서로 자원과 상태를 공유할 수 있음
cf) 8코어 8스레드: 8명의 일꾼이 한 팔로 일하는 것
8코어 16스레드: 8명으 일꾼이 두 팔로 일하는 것
-코드스테이츠 자료-
여러 개의 작업 단위로 구성된 프로그램에서 요청을 동시에 처리하기 위해서 스레드 사용
ex) 워드 프로세서에서 사용자로부터 키보드 입력받거나, 그래픽 or UI를 그리고 문법 오류를 체크하는 등 여러 요청들을 동시에 처리해야할 때 스레드 필요
인터프리터, 컴파일러에 의해 내부적으로 처리되는 가상 코드
Thread Class에 구현되어 있는 run()
메서드 코드
스레드에서 처리하는 데이터
프로세스 내에서 실행되는 흐름의 단위
하나의 스레드는 시작해서 종료할 때 까지 한번에 하나의 명령을 수행함
-코드스테이츠 자료-
프로세스가 단일 스레드로 동작하는 경우
하나의 레지스터, 스택으로 표현함
자바스크립트가 가장 대표적인 싱글 스레드 언어
자바스크립트가 싱글 스레드를 쓰는 이유는 동시성 문제때문!
하나의 프로세스 내에서 2개 이상의 스레드가 동시에 작업을 수행하는 것
-코드스테이츠 자료-
동시에 돌릴 수 있는 스레드 수는 컴퓨터에 있는 코어 개수로 제한 됨. 운영체제는 각 스레드를 시간에 따라 분할하여 일정 시간마다 돌아가면서 실행되도록 함 => 이를 시분할이라고 함
여러 개의 스레드가 시분할 방식으로 동시에 수행되는 것 같은 착각을 불러일으킴
멀티코어 환경에서 여러개의 스레드가 실제로 수행됨
유니코드(Unicode)는 유니코드 협회(Unicode Consortium)가 제정하는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준. 이 표준에는 ISO 10646 문자 집합, 문자 인코딩, 문자 정보 데이터베이스, 문자를 다루기 위한 알고리즘 등을 포함하고 있음.
영문 알파벳을 사용하는 대표적인 문자 인코딩
7비트로 모든 영어 알파벳을 표현
52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자, 그리고 하나의 공백 문자를 포함
유니코드는 ASCII를 확장한 형태
인코딩 방식의 차이
UTF-8에서 한글은 3바이트, UTF-16에서 2바이트 차지함
UTF-8 특징
1. 유니코드 한 문자를 나타내기 위해 1byte(8bits)에서 4bytes까지 사용//UTF-8로 표현된 '코' 1110xxxx 10xxxxxx 10xxxxxx # x 안에 순서대로 값을 채워넣습니다. 11101100 10111101 10010100 //UTF-8로 표현된 'b' 0xxxxxxx 01100010 // encoder.encode('b') // Uint8Array [98] (98).toString(2) // "1100010"
- UTF-16에 비해 바이트 순서를 따지지 않고 순서가 정해져 있음
UTF-16 특징
1. 코드 그대로 바이트로 표현 가증
2. 바이트 순서가 다양함
프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 기능. 보수적인 추정을 따름
=> 자바, C#, 자바스크립트
한 객체에 flag를 두고 가비지 컬렉션 사이클마다 flag에 표시 삭제하는 mark and sweep 방법
GC root(시작점)에서 출발하여 reachable 한 애들은 활성화를 시키고 reachable하지 않은 닿지 않는 스코프에 있는 애들은 쓰지 않는다고 판단하여 비활성화 시키고 운영체제에게 돌려줌.
한 객체를 참조하는 변수의 수를 추적하는 방법
일시적인 데이터를 저장하기 위해 존재하는 고속의 데이터 저장 공간
첫 작업 이후 해당 데이터에 대한 재요청이 있을 경우, 데이터의 기본 저장공간에 접근할 때보다 더 빠르게 요청을 처리할 수 있음
캐시의 데이터는 RAM과 같이 빠르게 액세스할 수 있는 하드웨어에 저장됨. 데이터 검색의 성능을 높임
캐시는 속도를 위해 용량을 절충함. 일반적으로 데이터의 하위 집합을 일시적으로 저장함
<-> 완전하고 영구적인 데이터가 있는 데이터베이스와 정반대