일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Decorator
- LeetCode
- Generator
- shiba
- iterator
- Python Code
- Python
- 109. Convert Sorted List to Binary Search Tree
- 파이썬
- Class
- Python Implementation
- 운영체제
- 시바견
- 밴픽
- Convert Sorted List to Binary Search Tree
- DWG
- 컴퓨터의 구조
- Regular Expression
- 43. Multiply Strings
- Substring with Concatenation of All Words
- 프로그래머스
- 715. Range Module
- 30. Substring with Concatenation of All Words
- t1
- data science
- Protocol
- 315. Count of Smaller Numbers After Self
- concurrency
- attribute
- kaggle
- Today
- Total
목록컴퓨터의 구조 (9)
Scribbling
1. 멀티태스킹: 컴퓨터가 한 번에 둘 이상의 작업을 수행하는 것. 과거에는 CPU가 하나여서 여러 작업을 동시에 수행하는 척만 했다면, 이제는 멀티코어 프로세서가 대세가 되어 컴퓨터가 실제로 한 번에 둘 이상의 일을 하고 있다. - 경합 조건과 락: 일부 연산에 대하여 근본적으로 멀티태스킹을 막아야 한다. - 프로세스: 프로세스 (Process)는 사용자 공간 (User Space)에서 실행되는 프로그램이다. 멀티코어 시스템에서는 여러 프로그램이 병렬로 실행될 수 있다. - 스레드: 스레드 (Thread)는 정적인 데이터와 힙을 공유하지만 자체적으로 스택을 갖는 프로그램의 일부분을 말한다. 한 스레드에서 다른 스레드로 실행이 넘어갈 때는 스레드 스케줄러 (Thread Scheduler)가 CPU 레지스..
1. 고수준 / 저수준 프로그래밍 - 운영체제는 사용자 프로그램이 I/O 장치의 복잡도를 상당 부분 볼 필요 없도록 가려준다. - 브라우저 같은 복잡한 사용자 프로갬은 그 프로그램 위에 만들어진 다른 애플리케이션 프로그램들이 운영체제를 다루는 복잡도를 볼 필요 없도록 가려준다. 2. 터미널 / 장치 드라이버 / 운영체제 2.1. 터미널과 장치 드라이버 터미널은 I/O 장치이며, 사용자 프로그램은 직접 I/O 장치와 통신하지 않는다. 아래 그림처럼 운영체제가 중간에서 통신을 중재한다. 장치 드라이버는 말 그대로 특정 하드웨어 장치를 제어하는 프로그램을 의미한다. 사용자 프로그램이 특정 장치 (예컨대 I/O 장치)를 제어하기 위해서는, 시스템 콜을 통해 운영체제를 통하여 장치 드라이버의 ..
1. 웹 브라우저 웹 브라우저는 가상 머신 (Virtual Machine)이다. 웹 브라우저는 복잡한 명령어 집합을 완전히 소프트웨어로 구현한 추상적 컴퓨터이다. 다시 말하자면, 웹 브라우저는 인터프리터에 속한다. 브라우저는 복잡한 애플리케이션인 동시에 소프트웨어로 구현된 프로그래밍 가능한 컴퓨터이다. 브라우저의 개발자 콘솔 (Developer Console)을 떠올릴 수 있다. 1.1. URL (Uniform Resource Locator) 브라우저는 URL을 사용하여 HTTP 프로토콜을 통해 서버에게 문서를 Request 한다. 서버는 문서를 브라우저에 보내고, 브라우저는 문서를 표시한다. 여기서 문서는 HTML / XML 등의 다양한 마크업 언어로 작성될 수 있다. URL은 아래 그림처럼 세 가지 ..
1. 어셈블리 언어 (Assembly Language) 컴퓨터는 (혹은 CPU는) 0과 1의 bit로 이루어진 기계어만을 이해할 수 있다. 사람이 기계어를 이용하여 코딩하려면, 무수히 많은 비트 조합을 다 외우고 있어야 할 것이다. 어셈블이 언어는 이러한 비트 조합을 추상화한 언어로, 보다 이해하기 쉬운 니모닉 (Mnemonics)를 통하여 명령어를 작성할 수 있도록 한다. 어셈블러 (Assembler)는 어셈블리 언어로 작성된 코드를 바탕으로 기계어 코드 (Machine Code)로 생성한다. 2. 고수준 언어 (High-Level Language) 고수준 언어는 어셈블리 언어보다 더 높은 추상화 단계에서 작동한다. 고수준 언어의 소스 코드 (Source Code)는 컴파일러 (Compiler)라는 프..
1. 데이터 구조와 처리 1.1. 기본 데이터 타입 (Primitive Data Type) - 크기 및 해석이 포함된다. 1.2. 포인터 (Pointer) - 부호가 없는 정수에 불과하나, 메모리 주소로 해석된다. 1.3 배열 1.4. 비트맵 1.5. 문자열 - C 문자열은 따로 길이를 저장하지 않고, 0을 문자열 터미네이터 (String Terminator)로 사용한다. 1.6. 복합 데이터 타입 - 구조체 (Structure): 메모리 정렬을 위해 패딩 (Padding)을 사용한다. - 공용체 (Union): 공용체의 맴버들은 메모리를 공유할 수 있다. 1.7. 단일 연결 리스트 (Linked List) - 데이터의 양이 정해져 있지 않은 경우 잘 작동한다. - 리스트 원소는 메모리에서 아무 위치에나..
1. 통신 1.1. 병렬 통신 - 말 그대로 신호선을 여러개 사용하는 통신 방식. 가격이 비싸서 요즘에는 잘 사용하지 않음. 1.2. 직렬 통신 - 신호선을 2개만 사용하는 통신 방식. 전형적으로는 시작 비트와 정지 비트 그리고 시분할 멀티플렉싱 방식을 사용함. 1.3. USB (Universial Serial Bus) - 병렬 통신 및 직렬 통신은 하나의 포트에 하나의 기기밖에 연결할 수 없다는 큰 단점을 가진다. 이를 해결하기 위해, 인터페이스를 통합하여 하나의 커넥터(or 포트)로 각종 주변기기를 연결할 수 있도록 한 것이 바로 USB이다. USB는 데이터 패킷 (Packet) 방식을 사용한다. 패킷은 마치 소포의 송장처럼 데이터가 어디에서 왔고, 어디로 가야하는지 등의 정보를 포함한다. 2. 네트..
1. 컴퓨터 아키텍처: 컴퓨터의 여러 구성 요소를 배치하는 방법 - 프로세서 코어 (CPU): CPU = ALU + 레지스터 + 실행 장치 - 마이크로프로세서: 메모리와 I/O가 프로세서 코어와 같은 패키지에 들어 있지 않은 프로세서 - 마이크로컴퓨터: 메모리 및 I/O가 프로세서 코어와 같은 패키지에 들어 있는 프로세서 (e.g. 식기세척기의 컴퓨터) - 단일 칩 시스템(SOC): 다소 복잡한 마이크로컴퓨터 (e.g. WIFI SOC) 2. 함수(프로시저) 호출 흐름 함수를 호출하는 부분에서 함수를 실행한 후, 원래의 자리로 돌아올 필요가 있다. 이 때, 원래의 자리를 기억해야 한다. 3. 스택 재귀 함수가 제대로 동작하기 위해서는 반환 주소를 여럿 저장할 수 있어야 한다. 또한 함수에서 호출 지점으로..
1. 컴퓨터 - 전자 부품을 다양하게 조합하여 비트를 조작하는 회로로, 메모리, 입출력, CPU로 나뉘어진다. - 32비트 컴퓨터는 보통 메모리를 4바이트 덩어리로, 64비트 컴퓨터는 8바이트 덩어리로 구성한다. 2. CPU 2.1. 산술 논리 장치 (ALU) - CPU의 핵심 장치로 산술 계산, 불리언 대수 및 기타 연산을 수행하는 방법을 알고 있는 장치. 2.2. 실행장치 (제어 장치) - 명령어: 어떤 일을 할지 알려주는 비트 패턴 - 프로그램 카운터: 명령어가 들어있는 메모리의 주소가 들어있는 카운터 - 실행 장치는 프로그램 카운터가 가리키는 주소에서 명령어를 fetch한다. - 누산기: ALU의 연산 결과를 임시로 보관하는 레지스터 2.3. 명령어 집합 구성 ㅣ모드 2비트ㅣㅣ명령코드 4비트ㅣㅣ주..
1. 텍스트의 표현 - 아스키코드: 키보드에 있는 모든 기회에 대해 7비트의 수 값 할당 - 유니코드: 문자에 16비트 코드를 부여 - UTF-8: 유니코드 인코딩 방식 2. 논리 회로 - 디멀티플렉서(디먹스): 출력을 선택하는 논리 회로 - 셀렉터(먹스): 입력 중 한 입력을 선택하는 논리 회로 3. 메모리 3.1. 용어 - 플립플롭: 비트 하나를 기억하는 소자 - 주소 버스, 메모리 버스 3.2. 임의 접근 메모리 - RAM (Random Access Memory): 메모리 위치 중 어디든 원하는 순서로 읽거나 쓰기 가능하며, 일반적으로 휘발성 메모리이다. - SRAM (Static Ram): 각 비트에 약 6개의 트랜지스터가 들어가며, 비싸지만 빠르다. 다만 집적도 문제로 큰 메모리로 사용하긴 어려..