🎁[속보] 인프런 내 깜짝 선물 출현 중🎁

[인프런 워밍업 클럽 3기 CS] 자료구조와 알고리즘 / 운영체제 회고2

[인프런 워밍업 클럽 3기 CS] 자료구조와 알고리즘 / 운영체제 회고2

운영체제 요약

 

FIFO 스케줄링의 장단점

• 장점: 구현이 간단하고 공정함.

• 단점: 긴 작업이 먼저 오면 짧은 작업이 지연되는 Convoy Effect 발생.

 

SJF를 사용하기 어려운 이유

• 실행 시간을 미리 알기 어려움.

• 긴 작업이 계속 뒤로 밀려 기아 상태(Starvation) 발생 가능.

 

RR에서 타임 슬라이스가 작을 때 문제

• 문맥 전환 비용 증가 → 성능 저하 발생.

 

MLFQ에서 CPU Bound vs. I/O Bound 구분 방법

• I/O Bound: 짧은 CPU 사용 후 대기 → 높은 우선순위 유지

• CPU Bound: CPU 사용이 길어짐 → 낮은 우선순위로 강등

 

공유 자원이란?

• 여러 프로세스가 동시에 접근하는 자원 (파일, 메모리, CPU 등).

 

교착 상태(Deadlock) 발생 조건

1. 상호 배제 – 한 번에 한 프로세스만 사용 가능.

2. 점유 및 대기 – 자원을 점유한 채 추가 자원 대기.

3. 비선점 – 자원을 강제로 빼앗을 수 없음.

4. 순환 대기 – 프로세스들이 서로 자원을 기다리는 순환 구조.

 

자료구조와 알고리즘 요약

재귀 함수에서 기저 조건 오류 문제

• 잘못 설정하면 무한 재귀 → Stack Overflow 발생.

 

0부터 n까지 홀수의 합 구하는 재귀 함수 (JavaScript)

function sumOdd(n) {
  if (n <= 0) return 0;
  return (n % 2 !== 0 ? n : 0) + sumOdd(n - 1);
}
console.log(sumOdd(10)); // 25

재귀를 이용한 디렉토리 탐색 코드 (JavaScript)

const fs = require("fs");
const path = require("path");

function traverseDirectory(directory) {
    const files = fs.readdirSync(directory);
    for (const file of files) {
        const filePath = path.join(directory, file);
        const fileStatus = fs.statSync(filePath);
        if (fileStatus.isDirectory()) {
            console.log('디렉토리:', filePath);
            traverseDirectory(filePath);
        } else {
            console.log('파일:', filePath);
        }
    }
}
traverseDirectory(".");

기존 반복문 방식 → 재귀 함수로 변환하여 모든 파일 및 폴더 탐색.

댓글을 작성해보세요.


채널톡 아이콘