본문 바로가기

전체 글173

[운영체제] 파일 시스템 파일 시스템(file system)보조기억장치의 정보를 파일 및 디렉터리의 형태로 저장하고 관리할 수 있도록 하는 운영체제 내부 프로그램파일(file)파일 이름, 파일을 실행하기 위한 정보, 파일과 관련한 부가 정보로 구성속성, 메타 데이터: 파일과 관련한 부가 정보파일을 다루는 모든 작업은 운영체제에 의해 이루어짐응용 프로그램은 임의로 파일을 할당받아 조작하고 저장할 수 없고, 파일을 다루는 시스템 콜을 이용파일 디스크립터 (파일 핸들)파일 디스크립터는 운영 체제(OS)가 파일을 식별하고 관리하기 위해 사용하는 고유한 식별자프로세스가 파일을 열거나 생성하면, OS는 해당 파일에 대해 고유한 번호를 할당하며, 이를 파일 디스크립터라고 한다.저수준에서 파일을 식별하는 정보0이상의 정수 형태OS는 프로세스가.. 2025. 1. 12.
[운영체제] 가상 메모리 물리 주소와 논리 주소물리 주소(physical address): 메모리의 하드웨어 상 실제 주소논리 주소(logical address): 프로세스마다 부여되는 0번지부터 시작하는 주소 체계 CPU와 프로세스가 사용하는 주소 체계는 논리 주소증복되는 물리 주소는 존재 X중복되는 논리 주소 존재 O논리 주소와 물리 주소간의 변환이 이루어져야 한다. 메모리 관리 장치(MMU, Memory Management Unit): CPU와 메모리 사이 존재. CPU가 이해하는 논리 주소를 메모리가 이해하는 물리 주소로 변환하는 역할스와핑과 연속 메모리 할당스와핑스왑 영역(swap space)물리적 메모리가 부족할 때 사용하기 위해 하드 디스크의 일부를 가상 메모리처럼 사용하는 공간물리적 메모리(RAM)가 부족한 경우,.. 2025. 1. 12.
[운영체제] CPU 스케줄링 CPU 스케줄링: 운영체제의 CPU 배분 방법CPU 스케줄링 알고리즘: CPU 스케줄링 절차CPU 스케줄러: CPU 스케줄링 알고리즘을 결정하고 수행하는 운영체제의 일부분 실행의 문맥이 있다면 모두 스케줄링의 대상프로세스뿐만 아니라 스레드도 CPU의 스케줄링 대상이다.* 실행의 문맥을 가지고 있는 모든 것을 스케줄링할 수 있기 때문우선순위운영체제는 프로세스별 우선순위(priority)를 판단하여 PCB에 명시하고, 우선순위가 높은 프로세스에 CPU의 자원을 더 빨리, 많이 할당한다.사용자가 일부 프로세스의 우선순위를 높일 수도 있다.ps 명령어를 통해 프로세스의 우선순위를 확인할 수 있다. 운영체제는 CPU활용률(CPU utilization)과 같은 고려 요소를 고려하여 우선순위를 할당한다.운영체제는 높.. 2025. 1. 9.
[운영체제] 동기화와 교착 상태 공유자원: 프로세스 혹은 스레드가 공유하는 자원공유 자원은 메모리나 파일이 될 수도 있고, 전역 변수나 입출력장치가 될 수도 있다. 임계 구역: 공유 자원에 접근하는 코드 중 동시에 실행했을 때 문제가 발생할 수 있는 코드즉, 동시에 실행되는 프로세스나 스레드가 동시에 임계 구역에 진입하여 실행되면 문제가 발생할 수 있다. 레이스 컨디션: 프로세스 혹은 스레드가 동시에 임계 구역의 코드를 실행하여 문제가 발생하는 상황레이스 컨디션이 발생하면 자원의 일관성이 손상될 수 있으므로 2개 이상의 프로세스 혹은 스레드가 임계 영역에 진입하고자 한다면 둘 중 하나는 작업이 끝날 때까지 대기해야 한다. 동기화(프로세스 혹은 스레드)의 조건- 실행 순서 제어: 프로세스 및 스레드를 올바른 순서로 실행- 상호 배제: 동.. 2025. 1. 8.
[운영체제] 프로세스와 스레드 포그라운드 프로세스: 사용자가 보는 공간에서 사용자와 상호작용하며 실행백그라운드 프로세스: 사용자가 보지 못하는 곳에서 실행데몬: 백그라운드 프로세스 중 사용자와 별다른 상호작용 없이 주어진 작업만 수행하는 특별한 백그라운드 프로세스, 윈도우 운영체제에서는 서비스라고 부름 메모리 영역커널 영역PCB (프로세스 제어 블록)프로세스를 식별할 수 있는 커널 영역 내의 정보프로세스와 관련한 다양한 정보를 내포하는 구조체새로운 프로세스가 메모리에 적재됐을 때 커널 영역이 만들어지고, 프로스세 실행이 끝나면 폐기됨.프로세스 ID(PID), 실행 과정에서 사용한 레지스터 값, 프로세스 상태, CPU 스케줄링 (우선순위) 정보, 메모리 관련 정보, 파일 및 입출력 장치 관련 정보가 명시PCB는 커널 내에 프로세스 테이.. 2025. 1. 6.
[운영체제] 운영체제란 운영체제: 윈도우, 맥 OS, 리눅스, 안드로이드, iOS커널: 운영체제의 핵심 기능을 담당하는 부분, 자동차의 엔진이나 사람의 심장도 같은 핵심부운영체제의 핵심 기능- 자원 할당 및 관리- 프로세스 및 스레드 관리운영체제- 운영체제의 큰 그림: 커널, 시스템 콜- 프로세스 및 스레드 관리: 프로세스와 스레드, 동기화와 교착 상태- 자원 할당 및 관리: CPU관리, 메모리 관리, 파일/디렉터리 관리운영체제의 역할자원(시스템 자원): 프로그램 실행에 마땅히 필요한 요소운영체제는 사용자가 실행하는 응용 프로그램을 대신하여 CPU, 메모리, 보조기억장치 등의 컴퓨터 부품에 접근, 각각의 부품들이 효율적으로 사용되도록 관리응용 프로그램이 컴퓨터 부품을 효울적으로 할당받아 문제 없이 실행할 수 있도록 응용 프로그.. 2025. 1. 6.
[iOS] Paging 왜 페이징이 필요한가?데이터가 1000개 있을 때 한 번에 전부 불러오면 초기 로딩 시간이 길어지고, 불필요한 데이터를 메모리에 올리며, 서버 부하도 증가한다. 그래서 필요한 만큼만 나눠서 불러오는 페이징을 사용함.콘텐츠를 페이지 단위로 나누어 로드하거나 스크롤하는 방식페이징 방식1. Offset 기반 페이징"n번째부터 m개 주세요" 방식으로, 페이지 번호로 위치를 계산함offset, limit을 사용하며 페이지 단위로 구분함장점: 구현이 단순하고, 특정 페이지로 바로 이동 가능 (페이지 번호 UI)단점실시간으로 데이터가 추가/삭제되면 중복/누락 문제가 생김대용량 데이터에서 OFFSET이 커질수록 DB가 앞에서부터 건너뛰는 작업을 해야 해서 성능이 떨어짐1페이지: LIMIT 20 OFFSET 0 → .. 2024. 9. 21.
CI/CD with Github Actions 0. 환경(Runner) 설정Docker를 활용한 방법Docker는 개발 환경을 컨테이너로 묶어 일관된 환경에서 작업을 처리할 수 있어, CI/CD 파이프라인 최적화에 유용A. Docker 이미지로 환경 통합Docker 이미지를 생성하여 앱의 빌드 환경을 미리 설정하고, 이를 여러 작업에 재사용각 빌드마다 동일한 환경을 유지하므로, 종속성 문제나 설정 오류를 줄일 수 있으며, 빌드 시간이 단축GitHub Actions에서 Docker 이미지를 사용하는 방법:GitHub Actions 워크플로우에서 docker build를 통해 이미지 빌드빌드된 이미지를 docker run으로 컨테이너 내에서 테스트 및 배포 진행B. 자체 호스팅 서버에 Docker 실행self-hosted runner를 사용하여 로컬 또.. 2024. 9. 19.
CI/CD란? 참고더보기https://blog.bytebytego.com/p/ep71-cicd-pipeline-explained-in-simple EP71: CI/CD Pipeline Explained in Simple TermsThis week’s system design refresher:blog.bytebytego.com 지속적 통합 (CI)지속적 통합은 개발자들이 코드 변경 사항을 주기적으로 공유 레포지토리에 통합(merge)하는 것을 말함이 과정에서 자동화된 빌드와 테스트가 수행되어 문제점을 조기에 발견하고 해결할 수 있다.iOS 개발에서의 CI 예개발자가 깃허브에 코드를 푸시(Push)하면, CI 툴이 자동으로 앱을 빌드하고 단위 테스트를 실행함만약 빌드나 테스트에서 오류가 발생하면, 개발자는 즉시 피드백.. 2024. 9. 19.
메모리 최적화 - iOS Memory Deep Dive [참고]더보기https://ios-daniel-yang.tistory.com/96#google_vignette [Swift/TIL #20] 이미지 메모리 최적화 방법들 (WWDC 18)[TIL #20] 2023 / 05 / 01 앨범에서 이미지를 불러오는 작업을 하는데, 사진을 추가할 때마다 메모리 사용량이 기하급수적으로 증가하더라고요. 그래서 오늘은 간단히 이미지 관련, 메모리 최적화 방ios-daniel-yang.tistory.comhttps://hucet.tistory.com/38 [WWDC 2018] iOS Memory Deep Dive (1/2)WWDC 2018 iOS Memory Deep Dive 를 정리한 포스트입니다. 더 자세한 내용을 원하시면 위 링크를 참조하시길 바랍니다. Virtual.. 2024. 2. 23.
[Swift] Profiling 방법 자주 쓰이는 프로파일링 방법 ✨ 📝 Memory Profiler 메모리가 얼마나 할당 되어 있고, 어디에 할당되어 있고, 누수 확인가능 1. 메모리 할당 확인 가능 2. 메모리 누수 등의 문제 해결 편리 3. 메모리의 과도한 할당으로 인해 앱이 느려질 경우, 사용 필요 📝 Timer Profiler 스크롤하거나 화면 전환이 될 때 갑자기 느려지는 현상이 일어날때, 해당 경로를 찾아 시간 복잡도를 낮추면 끊기거나 느려지는 현상이 없어짐 1. 뱡목을 유발하는 부분을 찾아 해결하기 편리 2. 각 함수 단위의 수행 시간 확인 가능 3. 호출 경로도 확인 가능 2024. 2. 20.
[CS] 클린코드 [참고]더보기https://www.samsungsds.com/kr/insights/cleancode-0823.html 클린코드란 무엇인가? | 인사이트리포트 | 삼성SDS개발자라면 누구나 한 번쯤은 고민해 봤을 만한 클린코드! 클린코드란 무엇이고, 클린코드를 작성하기 위한 원칙들은 어떤 것들이 있는지 알아보겠습니다.www.samsungsds.comhttps://dev-coco.tistory.com/182 클린 코드(Clean Code) 요약 및 정리개발 하며 내가 작성하고 있는 코드가 과연 좋은 코드인가 문득 고민하게 되었고, 좋은 코드란 무엇인가에 대한 궁금증으로 '클린 코드' 서적을 접하게 되어 읽으면서 중요한 내용들을 정리하고dev-coco.tistory.comhttps://brocess.tisto.. 2024. 2. 18.