본문 바로가기

분류 전체보기

(76)
[운영체제] 가상 메모리 안녕하세요.이번 글에서는 운영체제 중 가상메모리에 공부하고 정리한 글입니다.가상 메모리(Virtual Memory)란프로세스가 Page라는 작은 단위(보통 4KB)로 구성된 논리 주소 공간(logical address space)을 사용하는 것을 가상 메모리라고 한다.또한, 물리 메모리(physical memory)를 Page 크기와 동일한 크기인 Frame 단위로 관리해 Page Table을 통해 논리 주소 공간과 물리 주소 공간을 매핑한다.이를 통해 CPU는 MMU(Memory Management Unit: CPU와 메모리 사이에서 논리 주소를 물리 주소로 변환하는 하드웨어 장치)를 통해 특정 Page와 매핑된 Frame을 참조하여 프로세스를 실행한다.가상 메모리는 왜 필요했을까?가상 메모리가 등장하..
[운영체제] 파일 시스템 안녕하세요.이번 글에서는 파일 시스템에 대해 정리해보려 합니다.파일 시스템이란, 파일과 디렉터리를 보조기억창지에 효율적으로 저장 및 읽어올 수 있게 해주는 운영체제에 탐제된 내부 프로그램이다.파일 할당먼저, 파일 시스템이 어떻게 보조기억장치에 파일을 저장하고 읽어오는지에 대해 알아보자.운영체제는 블록 단위로 파일을 읽고 쓴다. 때문에 파일은 하나 이상의 블록에 저장된다.여기서 블록이란 하나 이상의 섹터(하드 디스크의 가장 작은 단위)를 묶은 단위이며, 섹터라는 단위는 너무 작기 때문에 블록이라는 단위를 사용한다. (SSD의 경우 페이지라는 단위를 사용)파일 할당 방법은 다음과 같다.연속 할당불연속 할당연결 할당색인 할당연속 할당연속 할당은 가장 단순한 방식이다. 보조기억장치에 연속적으로 파일을 저장하는 ..
[운영체제] 파일과 디렉토리 안녕하세요.다음글 주제인 파일시스템에 대해 정리하기 전에먼저 파일과 디렉토리에 대해 간단하게 정리해보려 합니다. 파일보조기억장치에 저장된 정보의 집합 or 의미있고 관련있는 정보를 모은 논리적 단위모든 파일에는 실행을 위한 정보와 관리를 위한 메타데이터(or 속성)가 존재한다.파일에 대한 읽기, 쓰기, 생성, 삭제 등의 모든 작업은 운영체제를 통해서만 이루어지며, 어떤 응용 프로그램도 임의로 파일을 조작할 수 없다.메타데이터운영체제 별로 담고있는 메타데이터의 차이가 있지만, 대표적으로 다음과 같다.확장자(파일 유형)크기접근권한(어떤 사용자가 읽기, 쓰기, 실행 권한이 있는지)생성 날짜, 마지막 접근 날짜, 마지막 수정 날짜생성자(파일을 생성한 사용자)소유자(파일을 소유한 사용자)위치(경로) 확장자의 경우..
[자료구조] Hash Table(with. Swift) 안녕하세요.이번 글은 자료구조 중 하나인 Hash Table에 대해 알아보고 정리한 글입니다.Hash Table해시 테이블은 Key를 통해 Value를 저장 및 읽어올 수 있는 자료구조이다.Swift에서는 딕셔너리가 Key - Value 쌍으로 값을 저장할 수 있는 타입인데 이는 딕셔너리가 해시 테이블을 기반으로 구현된 컬랙션 타입이기 때문이다. 해시 테이블의 대표적인 특징으론 Key를 통해 Value를 읽어올 때 시간복잡도가 O(1)이다.(하지만, 최악의 경우는 O(n)이다. 이유는 아래에서)해시 테이블은 값을 저장하기 위해 내부적으로 배열을 사용한다. 그럼 어떻게 Key를 통해 저장하냐? Key 값을 해시 함수를 통해 고유한 정수 값으로 변환하고, 해당 값을 Index로 사용해 배열에 저장하는 방식이..
Library와 Framework 언제 사용해야 할까?(with. iOS) 안녕하세요.최근 프로젝트에 모듈화를 적용해 보면서 Library와 Framework에 대해서 나아가 Static과 Dynamic은 어떤 차이인지 정리해 보고, 상황에 따라 어떤 것을 선택해야 하는지 정리해 보기 위해 이 글을 작성합니다.Library와 FrameworkLibrary와 Framework는 공통된 목적의 소스 코드를 묶어 독립적으로 배포할 수 있다는 공톰점이 있다. 때문에 둘은 모듈화의 도구로 사용된다. 하지만, 둘이 완전이 동일한 동작을 한다면 Apple은 둘을 분리하지 않았을 것이다.둘의 차이는 천천히 알아보도록 하고, Library 먼저 살펴보겠다.Library란Library는 소스 코드와 데이터들의 집합이다. 독립적으로 배포 가능하기 때문에 재사용성이 높은 소스 코드를 Library를..
Swift Data VS Core Data 안녕하세요.이번에 SwiftData를 직접 사용해 보기 위해SwiftData 출시 전에 메인으로 사용된 CoreData와 어떤 차이가 있는지 정리한 글입니다.Core DataCore Data는 최상위 객체로 Container가 있으며, Container는 Model, Context, Coordinator를 생성 및 관리한다.ModelNSManagedObjectModel은 CoreData를 통해 저장하고자 하는 데이터 모델을 나타내는 객체이며, .xcdatamodeld를 통해 모델 구성이 가능하다..xcdatamodeld를 통해 Entity, Attribute, Relationship를 설정할 수 있으며, .xcdatamodeld 파일을 빌드하면, .momd 파일이 생성되는데 이를 읽어 NSManagedO..
네이버 부스트캠프 웹 모바일 9기 챌린지 4주차 마지막 회고 📝 8월 9일부로 4주간 챌린지가 끝이 났다.챌린지가 끝이 나고, 전주-남해 2박 3일 여행을 다녀와서 약간 늦은 마지막 회고를 작성해 보려 한다.4주 동안 어떤 활동을 했어?4주 동안 네부캠에서 제공하는 강도 높은 미션을 매일매일 해결하면서, 그 과정에서 CS 지식을 학습했다.10 to 7로 코어타임이 정해져 있다. 첫날을 제외하고, 정해진 코어타임 안에 미션을 끝내본 적이 없는 것 같다.오히려 코어타임 동안 설계와 사전 공부를 하고, 7시 이후부터 구현을 제대로 시작하는 느낌? 그리고 매일을 밤을 새우며 구현을 했던 것 같다.챌린지 과정은 동료와 함께하는 시간도 많았다. 혼자서 채우지 못한 부분을 동료분들과 함께 활동하면서 채울 수 있었던 것 같다. 같이하는 동료분들이 있어서 힘들어도 버틸 수 있었던 것..
네이버 부스트캠프 웹 모바일 9기 챌린지 3주차 회고 📝 3주차 회고챌린지의 3주차가 마무리 되었고, 남은 기간은 1주일 남았다.3주라는 시간 동안 나는 얼마나 달라졌을까?매일 주어지는 미션을 바라보는 시선이 달라졌다.학습정리에 퀄리티가 달라졌다.동료들과 소통하는 자세가 달라졌다.많은 CS 지식과 프로그래밍 기법에 대해 학습하였다.미션을 바라보는 시선1주차 회고에서도 언급했듯 1주차의 나에게 미션은 꼭 풀어야 할 과제? 테스트? 처럼 받아들였다. 때문에 미션을 통해 CS 지식을 학습하는 챌린지의 취지와는 맞지 않은 자세로 챌린지를 1주를 보냈다.2주차부터는 미션을 풀어야만 하는 과제라는 생각보단 먼저 학습하고, 학습한 내용을 구현을 통해 구체화하여 "진짜 내 지식"으로 만들겠다는 생각으로 미션을 수행했다.3주차에선 2주차에서 미션을 수행하면서 아쉬웠던 점을 개..