일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Class
- 109. Convert Sorted List to Binary Search Tree
- Generator
- 컴퓨터의 구조
- shiba
- concurrency
- 30. Substring with Concatenation of All Words
- t1
- Python
- Regular Expression
- 운영체제
- 715. Range Module
- kaggle
- DWG
- Convert Sorted List to Binary Search Tree
- data science
- 43. Multiply Strings
- attribute
- 시바견
- LeetCode
- iterator
- 프로그래머스
- 315. Count of Smaller Numbers After Self
- Protocol
- Substring with Concatenation of All Words
- 밴픽
- Python Code
- Decorator
- 파이썬
- Python Implementation
- Today
- Total
목록Computer Science/Computer Knowledge (25)
Scribbling
In a network system, a rate limiter controls the traffic rate that a client or a service sends. Most APIS have rate limiters in any form. Rate limiter 1) prevents DOS (Denial of Service); 2) reduces costs; and 3) prevents server overloads. Where should the rate limiter be placed? - It can be placed on the server side. - We may put a separate middleware layer for the rate limiter. In the cloud mi..
CS interview is a process where two people discuss a vague problem where there's no set solution. It's more of a simulation of the process of trying to look for potential solutions to the problem. 1. Ask the right questions Do not make an answer before clarifying things. One of the most important virtues that an engineer should have is asking the right questions. Example questions: - What featur..
1. Simple Web Application 2. Relational vs Non-relational DB Non-relational DB - very low latency - can handle unstructured data 3. Load Balancer Relying on a single server can be problematic; it may not handle heavy traffic. A load balancer can operate a web application with many servers. 4. Database Multiplexing Database multiplexing not only enhances the overall system reliability but also im..
From installation to basic concepts, I recommend the video below. https://www.youtube.com/watch?v=hWPv9LMlme8 Below is an official tutorial for docker beginners. This post is a short step-by-step review of it. https://docker-curriculum.com/#our-first-image A Docker Tutorial for Beginners Learn to build and deploy your distributed applications easily to the cloud with Docker docker-curriculum.com..
1. 네트워크와 인터넷 초기의 컴퓨터 네트워크는 한 건물 안에 있는 컴퓨터를 연결하는 수준이었다. 그리고 이러한 의미에서 이를 LAN(Local Area Network)라고 불렀다. 개인 PC의 메인보드에는 랜카드가 달려 있는데, 이는 몇 킬로미터 내의 네트워크를 연결가능한 카드라는 의미이다. 여러 컴퓨터를 연결하여 LAN을 구성하는 방법은 많은데, 이를 토폴로지(Topology)라고 하며 스타형, 링형, 버스형 등이 있다. 제록스사는 버스형에 CSMA/CD(Carrier Sense Multiple Access/Collison Dectect) 프로토콜을 사용하는 LAN을 이더넷(ethernet)이라고 이름 붙였다. 이더넷은 버스에 연결만 하면 LAN에 기기를 추가할 수 있으며, 개별 기기의 고장이 네트워..
1. 파일 시스템 1.1 파일 시스템 컴퓨터 시스템에는 다양한 종류의 파일이 있으며, 하드디스크 등의 저장장치에 보관된다. 보관 과정에서 사용자가 직접 개입하면 다른 사용자의 파일이 훼손되거나 저장장치 내부를 어지럽히는 등의 문제가 발생할 수 있다. 운영체제는 이를 방지하기 위해 사용자가 직접 파일을 보관하거나 접근하지 못하도록 한다. 대신 파일을 보관하고 관리하는 파일 관리자를 두는데, 이를 파일 시스템이라고 한다. 파일 시스템에서 파일 관리자는 사용자의 요청에 따라 파일을 저장하거나 읽을 수 있다. 파일 관리자는 파일 테이블을 사용하여 파일의 생성, 수정, 삭제 등을 수행한다. 사용자가 특정 파일에 접근하려면 파일 관리자로부터 권한을 획득해야 하는데, 이를 파일 디스크립터라고 한다. 1.2 파일 시스..
1. 입출력 시스템 1.1 입출력장치 컴퓨터는 CPU와 메인메모리, 주변장치인 입출력장치와 저장장치로 구성되며, 각 장치는 메인보드의 버스로 연결된다. 주변장치는 데이터 전송 속도에 따라 저속 주변장치와 고속 주변장치로 나뉜다. - 저속 주변 장치: 데이터 전송률이 낮은 장치로, 키보드나 마우스가 해당된다. - 고속 주변 장치: 대용량의 데이터가 오고가는 장치이다. 출력장치인 그래픽카드나 하드디스크가 해당된다. 1.2 입출력 버스의 구조 초기 컴퓨터는 모든 장치가 하나의 버스로 연결된 일괄작업 시스템으로, CPU가 작업을 진행하다가 입출력 또한 직접 수행하였다. 이를 폴링(Polling) 방식이라고 한다. 그러나 주변장치는 CPU나 메인메모리보다 매우 느리다. 그래서 폴링 방식처럼 CPU가 직접 입출력을..
1. 요구 페이징 1.1 요구 페이징 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 것이 가져오기 정책이다. 일반적으로 프로세스가 요청할 때 메모리로 가져오는데, 일르 요구 페이징(Demang Paging)이라고 한다. 컴퓨터를 오래 켜둔 상태로 사용하다보면 느려진다. 그 이유는 작업을 하지 않고 쉬는 프로세스나 좀비 프로세스가 메모리를 차지하여 메모리 관리가 복잡해지기 때문이다. 덩치가 큰 프로세스는 모든 모듈이 메모리에 올라오지 않는다. 필요한 모듈만 올려두고 나머지 모듈은 필요시에만 메모리에 올려서 사용한다. 이러한 방식을 통하여 메모리를 효율적으로 관리 가능하며, 사용자에 대한 응답 속도를 향상시킬 수 있다. 포토샵을 예로 들어보자. 포토샵을 실행하면 기본적인 모듈이 메모리에 올..
1. 가상 메모리 컴퓨터마다 실제 메모리의 크기는 다르다. 가상 메모리는 물리 메모리의 크기와 상관없이 메모리를 이용할 수 있도록 지원하는 기술이다. 프로그래머는 가상 메모리 덕분에 물리 메모리의 크기에 구애받지 않고 작업할 수 있는 작업 공간을 얻게 되는 셈이다. 현대 메모리 관리의 가장 큰 특징은 물리 메모리의 크기와 프로세스가 올라갈 메모리의 위치를 신경 쓰지 않고 프로그래밍하도록 지원한다는 것이다. 이러한 메모리 시스템을 가상 메모리(Virtual Memory)라고 한다. 모든 프로세스는 물리 메모리와 별개로 자신이 메모리의 어느 위치에 상관없이 0번지부터 시작하는 연속된 메모리 공간을 가진다. 메모리 관리자는 물리 메모리의 부족한 부분을 스왑 영역으로 보충한다. 즉 물리 메모리가 꽉 찼을 때 일..
1. 메모리 관리 1.1 메모리 관리 시작하기에 앞서, 이 장에서 메모리는 메인메모리를 의미한다. CPU는 메모리에 있는 내용을 가져오거나 작업 결과를 메모리에 저장하기 위하여 메모리 주소 레지스터(MAR)을 사용한다. 폰노이만 구조의 컴퓨터에서는 메모리가 유일한 작업 공간이므로, 모든 프로그램은 메모리에 올라와야 실행 가능하다. 운영체제도 당연히 메모리에 올라와야 실행이 가능하다. 전원 버튼을 누르면 부팅이 이루어지는데, 이 때 하드디스크에 저장된 운영체제가 메모리에 올라간다. 메모리 관리는 운영체제를 비롯하여 여러 프로세스가 동작할 때 메모리를 어떻게 관리하는가에 관한 문제이다. 이는 메모리 관리 시스템(MMS; Memory Management System)이 담당한다. 1.2 컴파일러와 인터프리터 ..