본문 바로가기

전체 글49

차근차근 시작하는 운영체제 - Part 2: 프로세스 API 안녕하세요! 이번에는 운영체제에서 프로세스 생성과 관리를 다루는 프로세스 API에 대해 알아보겠습니다.운영체제의 프로세스 API는 프로세스 생성, 실행, 종료와 같은 작업을 효율적으로 관리할 수 있는 강력한 도구입니다.이 글에서는 UNIX 운영체제의 핵심 시스템 호출인 fork(), exec(), wait()를 중심으로, 프로세스 API의 작동 원리와 응용 사례를 살펴보겠습니다.프로세스 API란?운영체제는 프로세스를 생성하고 제어하기 위해 특정 API를 제공합니다. UNIX 기반 시스템에서는 fork(), exec(), wait()와 같은 시스템 호출이 이러한 역할을 수행합니다.CRUX: 프로세스 생성 및 제어운영체제는 어떤 인터페이스를 통해 프로세스를 생성하고 제어해야 할까요? 이러한 인터페이스는 사용.. 2024. 12. 31.
차근차근 시작하는 운영체제 - Part 3: 제한적 직접 실행(Limited Direct Execution, LDE) 안녕하세요! 지난 글에서는 프로세스 API를 중심으로 프로세스 생성과 관리 방법을 살펴보았습니다.이번 글에서는 CPU 가상화를 위한 핵심 기술인 제한적 직접 실행(Limited Direct Execution, LDE)의 개념과 작동 방식을 알아보겠습니다. 제한적 직접 실행은 운영체제가 CPU를 효율적으로 가상화하고 통제할 수 있도록 하는 기본 메커니즘입니다.이를 통해 사용자는 실제 물리적 CPU를 독점하지 않고도 자신만의 가상 CPU를 사용하는 것처럼 느낄 수 있습니다.제한적 직접 실행이란?제한적 직접 실행은 운영체제가 CPU에서 프로그램을 직접 실행하도록 허용하면서도,필요한 경우 운영체제가 제어권을 유지할 수 있도록 하는 기술입니다.CRUX: 효율성과 제어의 균형운영체제는 다음 두 가지 목표를 동시에 .. 2024. 12. 31.
차근차근 시작하는 운영체제 - Part 5: 멀티레벨 피드백 큐(Multi-Level Feedback Queue) 안녕하세요! 지난 글에서 운영체제 스케줄링의 기본 개념과 주요 알고리즘인 FIFO, SJF, STCF, RR에 대해 살펴보았습니다.이번에는 멀티레벨 피드백 큐(Multi-Level Feedback Queue, MLFQ)라는 스케줄링 알고리즘을 소개하려고 합니다. MLFQ는 앞서 다룬 알고리즘들의 단점을 보완하며, 현대 운영체제에서 널리 사용되는 강력한 방식입니다.이번 글에서는 MLFQ의 작동 원리와 규칙, 그리고 개선된 버전에 대해 알아보겠습니다.MLFQ란 무엇인가요?MLFQ는 작업의 특성을 기반으로 우선순위를 동적으로 조정하여, 짧은 작업에는 빠른 응답을 제공하고 긴 작업에는 공정한 CPU 할당을 보장하는 스케줄링 알고리즘입니다.MLFQ의 핵심 목표반환 시간(Turnaround Time) 최소화짧은 작.. 2024. 12. 31.
차근차근 시작하는 운영체제 - Part 4: 스케줄링(Scheduling) 안녕하세요! 이번에는 운영체제에서 자주 등장하는 중요한 주제, 스케줄링(Scheduling)에 대해 알아보려고 합니다.스케줄링은 이름만 들으면 막연히 어렵게 느껴질 수 있지만, 실제로는 매우 논리적이고 이해하기 쉬운 개념입니다.이번 글에서는 기본적인 스케줄링 개념과 알고리즘을 중심으로 차근차근 설명해 드릴게요. 이 글은 제가 읽은 운영체제 책 내용을 정리한 것으로, 여러분께 쉽고 명확하게 전달하는 것을 목표로 하고 있습니다.이번 글에서 다룰 내용은 다음에 이어질 멀티레벨 피드백 큐(Multi-Level Feedback Queue)를 이해하는 데 중요한 기초가 됩니다.함께 시작해 볼까요?스케줄링이란 무엇인가요?스케줄링은 CPU와 같은 자원을 여러 프로세스에 공정하고 효율적으로 배분하기 위한 정책입니다.운영.. 2024. 12. 30.
[iOS] 차근차근 시작하는 익스트림 프로그래밍(XP) - 1: 기본 개념과 핵심 가치 알아보기 들어가기 전에안녕하세요! 익스트림 프로그래밍(Extreme Programming, XP), 많이 들어보셨나요? 잘 알고 계신가요? 사실 저도 처음엔 잘 몰랐답니다. 😅 용어도 어렵고 개념도 복잡해서 이해하기 힘들었죠. 그래서 이번 기회에 XP에 대해 차근차근 알아보려고 합니다.함께 시작해볼까요? 🚀XP의 탄생 배경XP는 1990년대 후반, 소프트웨어 개발의 효율성을 높이기 위해 등장한 방법론이에요. 당시 개발자들은 변화하는 요구사항과 빠듯한 일정 속에서 고품질의 소프트웨어를 개발해야 하는 어려움에 직면했죠. 이를 해결하기 위해 켄트 벡(Kent Beck)이 XP를 제안했습니다. XP는 고객의 요구에 신속하게 대응하고, 팀원 간의 협업을 강화하며, 지속적인 개선을 추구하는 것을 목표로 합니다.XP의 핵.. 2024. 12. 30.
차근차근 시작하는 운영체제 - Part 1: 가상화(Virtualization) 안녕하세요. 오늘은 운영체제에서 가장 중요한 개념 중 하나인 가상화(Virtualization)에 대해 이야기해 보려 합니다. 가상화는 이름만 들으면 복잡하고 어렵게 느껴질 수 있지만, 차근차근 이해해 보면 운영체제의 핵심을 파악하는 데 큰 도움이 됩니다.이 글은 제가 읽은  Operating Systems: Three Easy Pieces의 내용을 바탕으로 정리한 것으로, 여러분께 쉽고 명확하게 전달해 드리는 것을 목표로 하고 있습니다. 자, 그럼 시작해 볼까요?가상화란 무엇인가요?가상화는 하나의 물리적 자원을 여러 개의 "가상 자원"으로 보이게 하는 기술입니다. 이를 통해 사용자나 애플리케이션이 마치 자신만의 독립적인 자원을 가지고 있는 것처럼 느끼도록 만드는 것이죠.종이화폐와 금융 시스템의 숫자로 .. 2024. 12. 15.
[Swift] 인터페이스 설계: 클래스 기반과 컴포지션 패턴의 비교 소프트웨어 설계에서 인터페이스와 클래스 구조를 어떻게 구성하느냐에 따라코드의 유지보수성, 확장성, 재사용성이 크게 달라집니다.이번 포스팅에서는 자동차 인터페이스를 설계하는 두 가지 접근 방식단일 클래스 기반 설계와 컴포지션 패턴을 비교해보고,이를 높은 응집력(High Cohesion)과 단일 책임 원칙(SRP) 관점에서 해석해 보겠습니다.1️⃣ 첫 번째 예제: 단일 클래스 기반 설계첫 번째 방법은 자동차의 각 기능을 구체적인 클래스에서 직접 구현하는 방식입니다.예를 들어 현대소나타, 현대아이오닉, 현대코나하이브리드와 같은 클래스는 각각 달리기, 멈추기그리고 각 자동차 유형에 맞는 경고 기능을 구현합니다.💡 인터페이스 정의protocol 달리기능력 { func 달리기()}protocol 멈춤능력 { fu.. 2024. 8. 13.
[iOS] 파이브 라인즈 오브 코드: 4장 요약 및 정리 (효율적인 코드 작성을 위한 리팩터링 기법 효율적인 코드 작성을 위한 리팩터링 기법들어가기 전에여러분, 코드 작성하면서 “이렇게 하면 유지보수가 쉬울까?” 고민해본 적 있으시죠?"파이브 라인즈 오브 코드"의 4장은 이런 고민을 해결할 수 있는 팁들을 가득 담고 있어요.제가 경험했던 코드 문제들과 함께 책에서 제시한 해결책을 나눠볼게요.4.1 간단한 if 문 리팩터링if 문에서 else를 사용하지 말 것여러분도 if-else 문을 작성하다가 코드가 너무 중첩되어서 복잡해진 경험 있으신가요?저도 그런 경험이 많아요. 예를 들어 나이 검사를 할 때: if age >= 18 { print("Welcome!")} else { print("You are not allowed.")} 이런 코드가 많아지면 가독성이 떨어지고 버그가 발생할 가능성이 높.. 2024. 7. 24.