멀티태스킹과 멀티프로세싱, 비슷한듯 다른 두 개념
·
CS
저는 멀티태스킹에 약합니다. 이게 무슨 뜻일까요? 한 번에 여러 가지 일을 잘하지 못한다는 뜻입니다. 전화하면서 딴짓이라도 하면 누군가 항상 알아차리는 것 같습니다 ㅋㅋ 아무튼 오늘 공부해 볼 개념은 멀티태스킹입니다. 생각보다 쉬운 개념이니 짧게 정리해보겠습니다! (둘의 차이를 이해하면 왜 '저는 멀티 프로세싱에 약합니다'라고 이야기할 수 없는지 알게 될지도 모릅니다) 멀티 태스킹 Multitasking하나의 CPU(Core)가 여러 개의 작업을 동시에 실행하는 것어떻게 하나의 시스템에서 여러 개의 작업을 동시에 실행할 수 있을까요? 보통 하나의 작업이 끝나야 다음 작업을 시작할 수 있는 구조 상 의문이 듭니다. 컴퓨터 과학자들은 이를 해결하기 위해 프로그램의 작업을 아주 작은 단위로 분리했습니다. 그리..
안전한 놀이터 샌드박스 알아보기
·
CS
어린 시절 롤러코스터 타이쿤이라는 놀이공원을 만드는 게임을 즐겨했었습니다. 특정 미션을 달성해야 하는 캠페인 모드와 함께 자유롭게 상상력을 발휘할 수 있는 샌드박스 모드가 있었던 것이 기억납니다. 오늘은 iOS의 샌드박스 🏜️ 개념에 대해 알아보려 합니다.(제목을 안전한 놀이터라고 지으니까 괜히 도박장 사이트 같기도 하고,, 이상하네요) 샌드박스 SandBox앱이 손상될 경우 피해를 최소화하기 위해 시스템 리소스와 사용자 데이터에 대한 액세스 제한 기술쉽게 말해 아이들이 다칠까봐 모래 상자 안에서만 놀게 하는 것처럼, 특정 앱이 제한된 공간 내에서만 동작하도록 만든 시스템이라고 생각할 수 있습니다. 샌드박스는 어떻게 제한된 공간 내에서만 동작하도록 만들 수 있을까요? 우선 샌드박스 없이 앱이 설치된 상..
iOS에서 OS 뜯어보기
·
CS
운영체제 Operation System사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어운영체제는 한번쯤 들어볼 수 있는 단어입니다. 흔히 OS를 이야기할 때 Windows, Linux 혹은 애플 진영에서는 iOS, macOS, iPadOS 등으로 말이죠.쉽게 말해 운영체제는, 사용자가 알기 어려운 하드웨어와 소프트웨어를 쉽게 상호작용 할 수 있도록 돕는 소프트웨어입니다. 하드웨어를 다루기 위해 우리가 직접 기계어로 명령하거나 자원 분배를 해주지 않아도 되는 것은 모두 OS 덕분이라고 할 수 있습니다. 운영체제의 역할1. 자원 관리CPU 스케줄링: 여러 프로세스가 CPU를 사용할 때 효율적으로 CPU를 배분메모리 관리: 프로세스가 사용할 메모리를 관리하..
스마트폰의 CPU, AP 알아보기
·
CS
우리가 사용하는 스마트폰에도 CPU가 달려있습니다. 하지만 보통 스마트폰에서는 CPU라고 하지 않고, AP라고 부르곤 합니다. 특히 아이폰에서는 A17, A18칩 등의 이름으로 알려져 있죠. CPU와 AP는 비슷하지만 분명 다른 개념입니다. Application Processor스마트폰, 태블릿, 임베디드 시스템 등의 모바일 기기에서 사용되는 프로세서를 의미합니다.AP는 쉽게 말해 CPU 역할만 하는 것이 아닌 모바일 환경에서 필요한 다양한 연산과 처리를 수행하는 핵심 프로세서의 역할을 수행합니다. 컴퓨터는 내부 크기가 스마트폰에 비해 널널하기 때문에 부품 크기에 제약을 상대적으로 덜 받습니다. 하지만 스마트폰의 경우 부피를 줄이는 것이 중요하기 때문에 다양한 역할을 한 칩으로 줄여야만 하는 것이죠!그래..
Intel Mac과 M1 Mac이 달랐던 이유
·
CS
제게 아키텍처라 함은 MVC, MVVM, 클린 아키텍처와 같은 소프트웨어 설계 원칙에 가까운 것들입니다.(뇌까지 개발로 가득 차버렸어!) 하지만 오늘 다룰 주제는 CPU의 아키텍처입니다. 복잡한 내용은 아니니 가볍게 포스팅해 보겠습니다! CPU와 프로그램이 소통하는 방법컴퓨터 세상은 0과 1로 이루어져 있습니다. 아주 옛날이야 사람이 직접 0과 1을 적어가며 컴퓨터 명령어를 써 내려갔겠지만 현재는 그렇지 않습니다. 어셈블리어부터 상위 레벨 언어까지 사람이 읽고 쓰기 쉬운 형태로 발전되어 왔죠. 그러나 컴퓨터 세상이 0과 1로 이루어져 있다는 사실은 변함이 없습니다. 그 말인즉슨, 우리가 열심히 Swift나 Python 등으로 코드 작성 후 빌드 버튼을 누르면 컴파일러나 인터프리터에 의해 기계어로 변환되는..
작지만 빠른 친구 캐시 알아보기
·
CS
지난 시간 CPU와 메모리 사이의 데이터 교환 방식을 알아보며 이 과정은 비용이 많이 드는 작업임을 알 수 있었습니다. 그 사이에서 효율적인 데이터 사용을 위한 조력자, 캐시에 대해 알아보려 합니다. 캐시 CacheCPU와 RAM 사이에 위치한 고속 기억 장치로, 데이터 전송 속도를 높이고 시스템 성능을 향상시키는 역할역할: `CPU와 RAM 간의 속도 차이로 발생하는 병목현상을 완화`해 성능을 향상시키는 역할속도: CPU 다음으로 빠른 메모리로, `RAM보다 훨씬 빠른 접근 속도`를 제공합니다.용량: RAM에 비해 `용량이 작지만, 자주 사용되는 데이터를 저장`합니다.위치: CPU와 RAM 사이에 위치하여 `데이터 전송의 중개자 역할`을 합니다.계층 구조: L1, L2, L3 등 여러 단계로 나뉘며, ..
CPU / RAM / Storage의 미묘한 삼각관계
·
CS
예전 조립 PC 구매를 위해 부품을 검색해 보고 다녔을 때가 떠오릅니다. 일단 정확히 뭔지는 모르겠지만 뭐 CPU 사양이 좋다느니,, RAM은 다다익선이라느니,,, 말들을 주워 담으며 열심히 부품을 모아 PC를 장만했었습니다. 이제는 개발자로서 기본적인 하드웨어 동작 방식은 자신 있게 이야기할 수 있어야 하기에 정리해보려 합니다. CPU(Central Processing Unit) 중앙처리장치컴퓨터 시스템을 통제하고 프로그램의 연산을 실행 · 처리하는 가장 핵심적인 컴퓨터의 제어 장치, 혹은 그 기능을 내장한 칩이다.흔히 컴퓨터의 `두뇌` 역할이라고 합니다!`연산`을 수행합니다.(산술, 논리 연산)다른 하드웨어(RAM, Storage 등)와 `데이터 교환 및 제어`CPU의 필수 구성 요소`Cache 캐시..
iOS 개발자의 모두를 위한 컴퓨터 과학 CS50 수료 후기
·
CS
저는 CS를 주먹구구식(?)으로 공부했었습니다. 어떤 것이 중요한지, 어디서부터 시작해야 할지 모르니 일단 iOS 개발을 하다 처음 보는 단어가 나오면 검색해 보며 그때그때 공부했었죠. 어찌 보면 필요에 의한 것이었기 때문에 호기심 있게 공부할 수 있었습니다. 그러나 반대로 말하면 필요가 충족되면 깊게 파고드는 것보다는 다음 문제를 찾아 나서곤 했죠. 딥다이브를 하지 않고 넘어가다보니 CS는 얕게만 쌓여갔습니다. 본질을 이해하지 못한 채 쌓여간 지식들은 금세 휘발되기도 했습니다. 그러다 기술 면접에서 그 결과가 그대로 드러났습니다. 분명 알고 있는 키워드임에도 설명하려다 보니 말문이 턱 막히게 되었죠. 이대로는 안 되겠구나 싶었습니다. iOS 개발 지식도 중요하지만, 스스로 개발자라고 불리고 싶다면 기본..
Swift로 적어보는 버블 / 선택 / 병합 정렬
·
CS
최근 CS 공부를 위해 Boostcourse의 모두를 위한 컴퓨터 과학(CS50) 강의를 수강하고 있습니다. CS를 전혀 몰라도 쉽고 재밌게 들을 수 있는 강의로 저 또한 만족스럽게 듣고 있습니다. 오늘은 정렬 알고리즘의 대표적인 3가지를 간단하게 알아보고, Swift로 직접 구현해 온전히 습득하고자 합니다. 1. 버블 정렬 Bubble Sort버블 정렬은 가장 직관적인 알고리즘입니다. 쉽게 말해 '두 요소를 비교 후 순서에 맞게 자리를 바꾼다!'의 문장으로 설명할 수 있습니다.위 단계를 배열의 끝까지 반복하게 됩니다.배열 끝까지 반복 후에도 정렬이 되지 않았다면, 다시 한번 같은 과정을 반복하는 식으로 알고리즘을 이어나가는 것이 버블 정렬의 기본 개념입니다. 버블 정렬의 상한선은 O(N^2)의 시간복잡..
음악 플레이리스트에 Array와 List 중 어떤 걸 사용할까?
·
CS
라는 질문을 면접 때 받았습니다. 부끄럽게도 답하지 못했습니다. 둘 중 하나를 고를 수 있었겠지만 근거가 없으니 답할 수 없었습니다. 이대로 CS를 내버려두면 앞으로의 면접도 자신있게 나서지 못할 것 같다는 생각이 들었습니다. 모른다고, 시간이 없었다고 핑계 대지 말고 자신있게, 솔직하게 답하기 위해 오늘도 정리를 시작합니다. Array(배열, 순차 리스트)질문에 대한 답을 내리려면 자료구조의 대한 이해가 바탕이 되어야 합니다. Array는 우리가 자주 사용하는 Swift의 Array와 동일합니다. 순서가 있는 컬렉션이죠.Array가 순서를 가질 수 있는 이유는, 실제 메모리 상에서도 연속적으로 저장되어 있기 때문입니다.(논리적 저장 순서 == 물리적 저장 순서) 이 덕분에 순서는 인덱스(Index)로 ..