inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 클럽_3기 CS] 두번째 발자국 🐾🐾

동동
1

📌 이 글은 워밍업 클럽 3기 감자님의 CS 강의인 ‘그림으로 쉽게 배우는 자료구조와 알고리즘’과 ‘그림으로 쉽게 배우는 운영체제’를 학습하며 정리한 내용을 담고있습니다. 🙇‍♂


1⃣ 자료구조와 알고리즘

📌 1. 재귀 (Recursion)

재귀 개념

 

하노이 탑 (Tower of Hanoi)

const hanoi = (count, from, to, temp) => {
    if (count == 0) return;
    
    hanoi(count - 1, from, temp, to);
    console.log(`원반 ${count}를 ${from}에서 ${to}로 이동`);
    hanoi(count - 1, temp, to, from);
};

hanoi(3, 'A', 'C', 'B');

재귀적으로 생각하는 두 가지 패턴

  1. 단순히 반복 실행하는 방식

  2. 하위 문제의 결과를 기반으로 현재 문제를 계산하는 방식 (하향식 계산)

 

📌 2. 정렬 알고리즘

버블 정렬 (Bubble Sort)

for (let i = 0; i < arr.length - 1; i++) {
    for (let j = 0; j < arr.length - i - 1; j++) {
        if (arr[j] > arr[j + 1]) {
            let temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}

 

선택 정렬 (Selection Sort)

for (let i = 0; i < arr.length - 1; i++) {
    let minValueIndex = i;
    
    for (let j = i + 1; j < arr.length; j++) {
        if (arr[j] < arr[minValueIndex]) {
            minValueIndex = j;
        }
    }
    
    let temp = arr[i];
    arr[i] = arr[minValueIndex];
    arr[minValueIndex] = temp;
}

 


2⃣ 운영체제

📌 1. 운영체제 개요

운영체제의 역할

컴파일 과정

test.c -> 전처리기 -> test.i -> 컴파일러 -> test.s -> 어셈블러 -> test.o -> 링커 -> test.exe

 

📌 2. 프로세스 스케줄링

FIFO (First In First Out)

 

SJF (Shortest Job First)

 

RR (Round Robin)

 

MLFQ (Multi-Level Feedback Queue)

 

📌 3. 프로세스 간 통신

공유 자원과 임계 구역

 

임계 구역 문제 해결을 위한 3가지 조건

  1. 하나의 프로세스만 접근 가능

  2. 여러 요청이 있을 경우 순차적으로 접근 허용

  3. 임계 구역에 들어간 프로세스는 빠르게 종료해야 함

 

세마포어 (Semaphore)

 

모니터 (Monitor)

 

📌 4. 데드락 (교착 상태)

 

데드락 발생 조건 (4가지)

  1. 상호 배제 (Mutual Exclusion) : 한 번에 하나의 프로세스만 자원 사용 가능

  2. 비선점 (No Preemption) : 자원을 강제로 빼앗을 수 없음

  3. 점유와 대기 (Hold and Wait) : 자원을 점유한 상태에서 추가 자원을 기다림

  4. 원형 대기 (Circular Wait) : 프로세스들이 서로 자원을 기다리며 원형 구조 형성

 

데드락 해결 방법

  1. 교착 상태 회피 (Deadlock Avoidance)

     

    1. 자원 할당 시 교착 상태 발생 여부를 예측

    2. 은행원 알고리즘 (Banker’s Algorithm) 사용하여 안전 상태 유지

  2. 교착 상태 검출 및 해결

    1. 가벼운 교착 상태 검출 : 일정 시간 동안 프로세스가 멈춰 있으면 강제 종료

    2. 무거운 교착 상태 검출 : 운영체제가 직접 프로세스의 자원 사용을 모니터링 후 해결

 

📌 5. 메모리 관리

메모리 종류

 

메모리 할당 방식

  1. 가변 분할 방식 (Segmentation) : 프로세스 크기에 맞게 메모리를 할당

  2. 고정 분할 방식 (Paging) : 프로세스 크기와 관계없이 일정한 크기로 할당

 

버디 시스템 (Buddy System)

 


3⃣ 회고

imageimageimageimageimage

첫 주차에 듣지 못했던 강의를 들으면서 다시 정상적으로 강의를 듣기 시작했다. 🙇‍♂

 

재귀함수 강의 중 하노이 탑 내용은 혼자서 시도를 해보면 절대 구현을 못해낼 거 같다... 이 부분을 다시 공부해야할 것 같습니다 ㅠㅠ..

 

이번 2주차 강의를 들으면서 자료구조와 알고리즘은 되게 묵직한 그런 느낌이고, 운영체제는 뭔가 이 컴퓨터란 존재에 대해서 다시 생각해보는 강의였던 것 같습니다..! 🐾🐾

인프런워밍업클럽 CS

답변 0