일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- shiba
- 30. Substring with Concatenation of All Words
- DWG
- 프로그래머스
- concurrency
- Python Implementation
- 컴퓨터의 구조
- Class
- 밴픽
- 315. Count of Smaller Numbers After Self
- t1
- Python
- Convert Sorted List to Binary Search Tree
- Decorator
- Generator
- attribute
- 43. Multiply Strings
- Substring with Concatenation of All Words
- Python Code
- 715. Range Module
- 109. Convert Sorted List to Binary Search Tree
- 파이썬
- iterator
- kaggle
- LeetCode
- 시바견
- data science
- Regular Expression
- Protocol
- 운영체제
- Today
- Total
목록shiba (41)
Scribbling
1. 컴퓨터의 기본 구성 1.1 하드웨어 - 컴퓨터는 CPU, 메인메모리, 입력장치, 출력장치, 저장장치로 구성된다. - 메인보드는 CPU와 메모리 등 다양한 부품을 연결하는 커다란 판이다. 메인보드에는 버스가 복잡하게 얽혀 있으며 전력이 공급되면 버스로 연결된 부품이 작동한다. 1.2 폰노이만 구조 오늘날의 컴퓨터는 대부분 폰노이만 구조를 따른다. 폰노이만 구조는 CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어 있는 구조를 말한다. 이는 메모리를 이용하여 프로그래밍이 가능한 컴퓨터 구조로, 하드웨어 변경 없이 프로그램만 교체하여 메모리에 올리는 방식이다. 폰노이만 구조의 핵심적인 특징은 '모든 프로그램은 메모리에 올라와야 실행 가능하다'는 것이다. 운영체제도 프로그램이기 때문에 메모리에 올라와..
1. 운영체제 1.1. 운영체제 운영체제 (Operating System)란? 윈도우, Mac Os, 유닉스 (Unix), 리눅스 (Linux) 등이 운영체제에 해당된다. 스마트폰에도 운영체제가 있는데, 애플의 iOS와 구글의 안드로이드가 대표적이다. CPU 성능이 낮고 메모리 크기가 작은 시스템에 내장하도록 만든 운영체제는 임베디드 시스템 (Embedded System)이라고 한다. 1.2. 운영체제의 필요성 - 운영체제가 없는 기계는 만들 당시 구현한 기능 외에 다른 기능을 추가하거나 성능을 향상 할 수 없다. 반면 운영체제가 있는 기계는 새로운 기능의 추가나 성능 변경이 가능하다. - 운영체제는 자원 관리 (Resource Management)라는 중요한 역할을 수행한다. 컴퓨터에 부착된 모든 장치..
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비트ㅣㅣ주..