암호화는 정보를 인코딩하는 프로세스이다.암호화에 사용되는 키가 있으며, 키를 통해서 암호문을 생성한다. 암호화된 정보를 사용하기 위해서는 키를 이용하여 암호문을 복호화한다. 암호화는 보안 분야에서 사용되며, 대표적으로는 아래와 같다.데이터 전송 보안: 인터넷 통신데이터 저장 보안인증 및 접근 제어: 인증서, 보안 토큰전자서명블록체인 대칭키 암호화와 비대칭키 암호화의 차이암호화에서 사용되는 키는 두 가지 유형의 키가 사용된다.대칭키비대칭키(공개키)Symmentic-key암호화와 복호화에 사용되는 키, 두 키 사이에는 동일할 수도 있고 간단한 변환이 있을 수도 있다.둘 이상의 당사자 간의 공유하는 키로 양 당사자가 비밀 키에 접근할 수 있어야 한다는 요구 사항은 public-key에 비해 주요 단점이다.그러..
Concurrent Computing은 여러 계산이 순차적이지 않고 겹치는 기간 동안 동시에 실행되어 다음 계산이 시작되기 전에 하나가 완료되는 컴퓨팅의 한 형태이다.병렬 처리와 동시 처리의 차이둘 다 동일한 기간 동안 실행되는 여러 프로세스로 설명된다.병렬 처리는 동일한 물리적 순간에 발생한다. 실제로 동시에 수행하기 위해 멀티 코어를 이용하여 작업을 분산하여 처리한다. 주로 과학 계산, 고성능 컴퓨팅, 그래픽 처리, 인공 지능 등에 사용된다.동시 처리는 여러 작업이 시간적으로 겹쳐서 진행되는 것처럼 보이는 것을 의미한다. 즉, 하나의 CPU 코어가 여러 작업을 교차 실행하는 방식이다. 운영체제, 게임, 데스크톱 환경 등에 사용된다. 예를 들면, time-sharing slices(시분할)을 이용하여 ..
자료구조는 데이터를 효율적으로 사용할 수 있도록 정리하는 방법이다. 데이터 간의 관계 그리고 적용할 수 있는 함수나 명령을 의미한다. 선형 자료구조와 비선형 자료구조로 나눌 수 있으며, 선형 자료구조는 데이터 요소를 순서대로 정렬하고 비선형 자료구조는 데이터를 비연속적으로 연결한다. 개별 요소에 접근하는 작업에는 선형 자료구조가 더 효율적이지만, 네트워크 연결과 같은 특정 문제를 효율적으로 해결하기 위해서는 비선형 자료구조가 더 알맞다.배열, 연결 리스트, 스택, 큐의 특징과 iOS에서 구현 방법배열배열은 연속적인 메모리 블록에 요소를 저장한다. 각 0부터 인덱싱된다.C언어의 경우에는 선언 시 크기가 고정되는 반면 Swift에서는 capacity가 초기화될 때 일정 크기의 메모리 공간을 할당받으며, ca..
알고리즘의 성능을 이야기할 때에는 시간 복잡도와 공간 복잡도에 대해 이야기한다.시간 복잡도는 문제를 해결하는 데 걸리는 시간이고 공간 복잡도는 메모리 공간을 얼마나 사용하는지 나타낸다.입력 크기에 따라서 어떻게 되는지는 빅오 표기법을 통해 표시한다.특정 데이터를 찾을 때에는 왼쪽에서 시작하여 오른쪽으로 끝이 나는 방법 같이 선형적으로 찾게 된다. 운에 귀결되는 탐색이다.이러한 방식으로 모든 값을 확인하는 것은 O(n) 시간 복잡도를 뜻한다.하지만 알고리즘으로 정렬이 되어있다면 특정 데이터를 빠르게 찾을 수 있게 된다.자주 사용되는 정렬 알고리즘의 동작 원리와 시간 복잡도Sorting AlgorithmsTime ComplexitySpace Complexity Best CaseAverage CaseWors..
iOS 다바이스의 메모리 제약과 앱 메모리 제한디바이스마다의 실제 메모리 RAM이 존재하고 앱이 실행되면 메모리를 사용하며 실행된다.사용하려는 시스템은 메모리를 사용하다 부족하면 백그라운드에서 실행 중인 앱을 종료하거나 앱의 메모리 사용을 제한할 거 같다.메모리 제한이라면 각 앱마다 메모리 양을 제한하여 다른 앱와 프로세스에 문제 생기는 부분을 이야기하는 거 같다. 메모리 워드(word) 크기와 데이터 정렬이 메모리 액세스 성능에 미치는 영향메모리에서 말하는 word는 데이터를 저장하고 처리하는 기본 단위를 의미한다.word의 크기는 컴퓨터 아키텍처에 따라 다르며 32비트 CPU에서 1word는 32비트를 의미한다.아이폰 14 프로에 사용되는 Apple A16은 64비트 6코어 CPU로 데이터를 저장하고..
네트워크 프로토콜은 네트워크 통신을 위한 약속이다. 데이터의 형식, 순서, 시스템과의 조율 등 다양한 역할을 수행한다. 프로토콜 스택은 TCP/IP 4계층과 OSI 7계층 모델이 있으며, 각기 다른 역할로 사용된다. TCP/IP 모델은 실제 네트워크 작동 방식으로 사용되며 OSI는 교육 혹은 개념적인 모델로 사용된다. OSI 7계층 Application: 사용자와 연결, 응용 SW를 도와주는 계층으로 하위 계층에 사용자 정보를 전달하거나 반대로 하위 계층에서 전송한 데이터를 사용자에게 전달한다. Presentation: 송신측과 수신측 사이에 데이터 형식을 정한다. Session: Port 번호를 연결 Transport: 실제 데이터를 전송하기 위한 동작을 담당, 사용되는 프로토콜에는 TCP와 UDP가 ..
iOS 앱의 메모리 구조와 각 영역의 특징 메모리 공간은 4가지 영역으로 구성되어 있다. 코드 영역 데이터 영역 힙 영역 스택 영역 코드 영역 텍스트 영역이라고도 하며, 프로그램을 구성하는 실행 가능한 기계어 코드로 저장 컴파일 과정에서 생성되며, 대부분의 운영체제에서는 읽기 전용으로 되어 있어 코드 불변성 코드 실행을 위해 필수적인 것을 보호되는 것으로 커널, 프로그램, 라이브러리 코드 등 텍스트로 저장 데이터 영역 전역 변수와 정적 변수를 저장하는 영역 앱 실행 시 할당되고 앱 종료 시 해제되며, 읽기 쓰기가 가능 정의된 초기값으로 설정되어 앱 모든 코드에서 접근이 가능 힙 영역 동적으로 할당된 메모리를 저장하는 영역 런타임 시에 필요한 메모리를 확보하는데 사용 메모리 크기 제한 없음 느린 속도 모든..
운영체제는 Operating SystemOS으로 불리며, 실행할 프로그램을 메모리에 적재(겹치지 않도록 적당한 공간 할당)하고. 더 이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리하는 시스템 소프트웨어이다. 운영체제는 응용 프로그램이 최대한 공정하게 CPU 자원을 사용하도록 할당한다. 이 외에도 시스템 자원을 관리합니다. 프로그램이 올바르고 안전하게 실행되게 하는 기능이 운영체제의 핵심 서비스에 속한다. 이러한 운영체제의 핵심 서비스를 담당하는 부분을 커널(kernel) 이라고 한다. 멀티태스킹을 지원하는 경우, 운영체제는 모든 프로세스들을 스케줄링하여 동시에 수행되는 것처럼 보이는 효과를 낸다. iOS는 iPhone 및 iPad 장치용으로 설계한 운영체제로 Darwin..