구분 | 절차지향 프로그래밍 | 객체지향 프로그래밍 |
---|---|---|
프로그램의 구성 방식 | 순차적인 명령어의 집합으로 프로그램을 구성 | 객체들의 상호작용으로 프로그램을 구성 |
데이터와 함수의 관리 방식 | 데이터와 함수를 분리된 엔티티로 취급 | 데이터와 함수를 하나의 객체로 묶어서 관리 |
코드 재사용성 | 함수나 코드 블록을 재사용하는 것이 일반적 | 상속, 다형성 등의 개념을 통해 코드의 재사용성을 높일 수 있음 |
복잡도 관리 | 데이터와 함수의 분리로 인해 복잡도를 관리하기 어려움 | 추상화와 캡슐화를 통해 복잡도를 관리 |
확장성 | 복잡한 프로그램에서 새로운 객체나 기존 객체를 확장하기 어려움 | 상대적으로 쉽게 새로운 객체를 추가하거나 기존 객체를 확장할 수 있음 |
모든 , 에 대해 인 조건을 만족시키는
두 양의 상수 와 가 존재하면 이다.
프로세스 | 쓰레드 | |
---|---|---|
메모리 공간 | 독립적인 메모리 공간 | 프로세스 내에서 메모리를 공유 |
실행 흐름 | 각각의 프로세스는 병렬로 실행됨 | 같은 프로세스 내에서 번갈아 가며 실행됨 |
스케줄링 | 각각의 프로세스는 운영체제에서 독립적으로 스케줄링됨 | 같은 프로세스 내에서 스케줄링됨 |
종료 | 다른 프로세스에서 생성된 프로세스는 운영체제에서 종료될 때까지 실행됨 | 같은 프로세스 내에서 생성되며, 프로세스가 종료될 때 함께 종료됨 |
JPG는 손실 압축 방식을 사용하며 사진과 같은 복잡한 이미지를 저장하는데 적합
PNG는 무손실 압축 방식을 사용하며 아이콘과 같은 단순한 이미지를 저장하는데 적합
특히, PNG는 알파 채널을 지원하기 때문에 투명한 배경을 표현할 수 있음
문제를 부분 문제들로 나누어 가장 작은 부분 문제를 먼저 해결하고,
그 답을 이용해 점차 더 큰 부분 문제를 해결하여 최종 문제를 해결하는 알고리즘
사용자가 실제 물리적인 메모리(RAM)보다 더 큰 용량의 메모리를 사용한다고 생각할 수 있도록 가상 메모리 공간을 제공하는 기술
Virtual Address를 Physical Address로 매핑하는 다양한 기법(Base and Bounds, Segmentation, Paging)이 있음
프로그램이 특정 페이지를 필요로 할 때 메모리에 올리는 Demand-paging 기법을 사용함
운영체제의 공유 자원을 여러 프로세스 혹은 쓰레드가 사용함에 따라 발생하는 Race Condition를 방지하기 위해 자원의 할당을 제한하는 기법
P 연산 : 세마포어 값이 양수면 1 감소시키고, 값이 0이면 해당 작업을 대기 큐에 추가
V 연산 : 세마포어 값을 1 증가시키고, 대기 큐에서 작업을 하나 꺼내서 실행함
짧은 미래에 다시 요청할 만한 데이터를 따로 복사해 두어 해당 데이터로의 접근 속도를 빠르게 해주는 장치
CPU 캐시
CPU가 RAM을 직접 참조하지 않아도 중요한 데이터에 바로 접근할 수 있도록 함
L1, L2, L3의 Hierachy로 구성되며 캐시에서 멀어질수록 Hit cost는 감소, Size는 증가
Direct-mapped 캐시와 Associative 캐시의 종류가 있음
웹 캐시
주로 웹 브라우저에 구현되어 있으며, 사용자가 방문한 웹 페이지의 데이터를 저장해 두어 같은 요청이 들어왔을 때 HTTP 요청 없이 바로 데이터를 받을 수 있도록 해주는 장치
DNS 캐시
사용자가 요청한 도메인 이름에 매칭되는 IP주소를 저장해 두어 또다시 IP주소를 찾을 필요 없이 바로 반환할 수 있도록 해주는 장치
메모리 누수를 방지하기 위해 프로그램이 할당한 메모리 중에서 더 이상 사용하지 않는 부분을 해제해 영역을 비우는 메모리 관리 기법
Reference Counting, Mark and Sweep, Two-Space Copying Collectors 기법이 있음
장점
테이블의 데이터에 접근하는 쿼리의 속도를 높일 수 있다
단점
인덱스 테이블을 저장하는데 추가의 저장공간이 필요하며, 데이터가 변경될 때 인덱스도 변경해야 하므로 유지보수 비용이 든다
장점
정해진 Schema와 Relation이 없기 때문에 구조가 다른 데이터를 함께 저장할 수 있으며 유연성이 좋다
단점
데이터 중복이 발생하면 모든 컬렉션을 돌아보며 업데이트해야 한다.
🎀 SQL의 장단점
장점
정해진 Schema에 따라 관계형 테이블에 저장하므로 데이터를 일관적이고 중복 없이 다룰 수 있으며 데이터를 검색하는 강력한 쿼리를 사용할 수 있다단점
데이터가 항상 정형화되어야 하기 때문에 유연하지 않고 수정하기가 힘들며, 테이블이 분산되어 있는 경우가 많기 때문에 여러 Join문이 얽힌 복잡한 쿼리가 만들어질 수 있다
LAN 포트에 연결된 디바이스들에 사설 IP를 부여해 인터넷에 접속할 수 있게 해주며,
패킷을 라우팅해주어 인터넷에서 통신할 수 있도록 해준다.
디바이스가 외부와 통신할 때 NAT 프로토콜을 사용하여 공유기의 공인 IP로 패킷을 송수신한다.
공유기는 연결된 디바이스들에 ARP 요청을 보내 MAC 주소를 알아내고, 이를 ARP 테이블에 저장한다.
이렇게 구한 MAC 주소는 공유기가 수신 받은 패킷을 어떤 디바이스에게 보낼지 결정하는데 사용된다.
이외에도, 공유기는 서브넷을 형성하며 디바이스에 IP주소를 할당할 때 DHCP를 사용한다는 점을 알아두자.
공개키(모두에게 공개됨)와 개인키(사용자만 알고 있음)를 사용해 비대칭적으로 암호,복호화하는 기법
네트워크 보안성
Public key Certification Authorities(CA)
사용자의 Public Key를 CA의 Private Key로 암호화한뒤 인증이 필요할 때 CA의 Public Key로 복호화함으로써 공개키를 안전하게 전달할 수 있게 해주는 기관
이메일 무결성
이메일 내용을 해시함수에 투입시킨 뒤 이를 개인키로 암호화하여 전달한다. 이후 수신자가 공개키로 복호화한 뒤 해시값을 이메일과 비교하면 내용의 변경 유무를 알 수 있다
HDD
회전 플래터에 파일을 쓰고 Disk arm을 해당 위치로 이동하여 데이터를 읽는다. 이렇게 데이터를 읽기까지 Seek time + Rotational latency + Transfer time이 소요되며 일반적으로 최대 200MB/s의 속도를 갖고 있다.
SSD
움직이는 부품 없이 전기 신호를 이용해 셀에 데이터를 쓰고 읽기 때문에 대체로 HDD보다 속도가 빠르다. 일반적으로 최대 600MB/s의 속도를 가지며 고성능의 SSD는 최대 5~6GB/s의 속도를 갖는다.
DRAM
데이터를 일시적으로 저장하는 메모리로, CPU가 필요한 데이터에 빠르게 접근할 수 있도록 해준다. 일반적으로 HDD, SSD보다 훨씬 빠르게 동작하며 DDR4 DRAM의 경우 최대 25.6GB/s의 속도를 갖는다.