inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

인프런 워밍업 클럽 CS 3기 3주차 발자국

이지민
0

강의 내용 요약

운영체제


가상 메모리

1. 가상 메모리

 

 

2. 가상 메모리를 이용한 여러 프로세스 실행

 

동적 주소 변환

가상 메모리 시스템에서 메모리를 관리하는 방식

 

가상주소와 물리주소의 매핑

메모리 관리자는 가상주소와 물리주소를 일대일 매핑 테이블로 관리

 

 

3. 세그멘테이션 기법

가변 분할 방식을 이용하는 기법

 

논리주소와 물리주소, 메모리 관리자

 

 

세그멘테이션을 이용한 주소 변환 과정

 

 

세그멘테이션의 장/단점

 

 

4. 페이징 기법

고정 분할 방식을 이용하는 기법

 

논리주소공간

물리주소공간

 

페이징을 이용한 주소변환 과정

 

 

5. 세그멘테이션 vs 페이징

 

 

 

6. 페이지드 세그멘테이션

세그멘테이션과 페이징을 혼합하여 장점을 취한 방식

 

메모리 접근 권한

 

페이지드 세그멘테이션

기존 세그먼테이션 테이블에서 변화한 점

 

페이지드 세그멘테이션 과정

 

페이지드 세그멘테이션의 단점

물리 메모리 접근을 위해 메모리에 2번 접근해야 함

 

 

7. 디멘드 페이징

지역성 이론과 디멘드 페이징

지역성 이론: 조만간 쓰일 데이터만 메모리에 올리고 당분간 필요하지 않을 것 같은 데이터는 스왑 영역으로 보내 성능을 향상시킴

 

디멘드 페이징지역성 이론을 구현한 정책

 

페이지 테이블 엔트리

페이지 테이블은 데이터가 물리 메모리, 스왑영역 중 어디에 위치해있는지 알아내기 위해 인덱스, 프레임 외에도 여러 비트가 존재

페이지 테이블 엔트리(PTE)페이지 테이블을 이루는 하나의 행

 

 

디멘드 페이징 과정

전체적인 과정

프로세스가 가상 메모리에 접근요청

→ 메모리 관리자는 페이지 테이블을 보고 물리 메모리의 프레임을 찾아냄

→ 만약, 물리 메모리에 없다면 Page Fault라는 인터럽트를 발생 시킴

→ Page Fault가 발생 시 보조저장장치의 스왑영역에 접근, 해당 프로세스는 대기상태가 됨

→ 스왑 영역의 데이터가 메모리로 올라감

→ 메모리로 올라가면 대기상태의 프로세스가 다시 실행

 

 

8. 페이지 교체 정책

Page Fault가 발생했을 때 메모리에 빈 공간이 없다면 메모리에 있는 페이지 중 어떤 페이지를 스왑영역으로 옮길 지 결정하는 방법

 

Random

 

FIFO(First In First Out)

 

Optimum

 

LRU(Least Recently Used)

 

빌레이디의 역설

 

클락 알고리즘(Clock Algorithm)

LRU와 유사하게 구현하는 방법

 

향상된 클락 알고리즘(Enhanced Clock Algorithm)

 

2차 기회 페이지 교체 알고리즘

 

스레싱(Thrashing)

CPU 사용률을 올리기 위해 멀티프로그래밍의 정도를 올렸지만 CPU가 작업하는 시간보다 스왑작업의 시간이 더 길어져 CPU 사용률이 0%에 가까워 지는 것

 

스레싱의 해결책

 

적절한 페이지 수 할당

 

워킹셋

 

 

주변 장치

1. 주변 장치 개요

주변장치 내부 구조

주변 장치들은 메인보드에 있는 버스로 연결됨

하나의 버스는 Address 버스, Data 버스, Control 버스로 이루어져 있음

 

주변 장치들은 메인보드에 있는 버스로 연결됨

하나의 버스는 Address 버스, Data 버스, Control 버스로 이루어져 있음

 

주변 장치의 구성 요소

주변 장치의 종류

 

CPU와 주변 장치 간의 전체적 구조

 

 

2. 마우스/키보드

마우스

DSP(Digital Signal Processor)가 마우스 움직임 혹은 클릭 같은 데이터 감지

→ 디바이스 컨트롤러가 CPU에게 인터럽트를 보냄

→ 마우스 드라이버가 동작하여 데이터를 읽어감

→ 마우스 드라이버가 운영체제에게 이벤트 신호를 줌

→ 운영체제는 이벤트를 Foreground 애플리케이션으로 전달

→ 애플리케이션에서 받은 마우스 이벤트 처리

 

키보드

키보드의 디바이스 컨트롤러가 어떤 키를 입력 받았는지 알아냄

→ CPU에게 인터럽트

→ 키보드 드라이버가 운영체제에게 이벤트를 보냄

→ 운영체제는 Foreground 애플리케이션으로 이벤트 전달

→ 애플리케이션에서 그에 맞는 키보드 이벤트 처리

 

 

3. 하드디스크와 플래쉬 메모리

하드디스크

 

하드 디스크에서 데이터를 읽어오는 예시

 

플래쉬 메모리

 

 

파일시스템

1. 파일시스템

파일시스템 → 운영체제가 파일을 관리하기 위해 만든 관리자

 

파일시스템의 기능

 

 

파일의 구조

 

파일 디스크립터

File Descriptor (File Control Block)

 

파일의 종류

순차파일구조

 

직접파일구조

 

인덱스 파일구조

 

 

2. 디렉토리

관련 있는 파일들을 하나로 모아둘 수 있는 구조

 

 

디렉토리 구조

 

 

3. 파일과 디스크

파일 시스템은 메모리와 비슷함

 

 

하나의 파일은 여러 개의 블록으로 구성되어 있으며 연결하는 방식에 따라 연속할당, 불연속할당으로 나눌 수 있음

 

연속 할당

 

불연속 할당

 

연결 할당

 

인덱스 할당

 

파일의 크기가 작음 → 블록 포인터를 이용

파일의 크기가 큼 → 간접 포인터를 이용

이 방식은 리눅스 및 유닉스에서 i-node라는 이름으로 사용되고 있음

 

파일 시스템에서 빈 공간을 관리하는 전략

 


 

자료구조

1. 삽입 정렬(Insertion Sort)

배열을 정렬된 영역정렬되지 않은 영역으로 나누고, 정렬되지 않은 값을 하나씩 정렬된 영역에 삽입하는 방식

정렬 과정 예시: [4, 1, 5, 3, 6, 2]

  1. 정렬된 영역: [4], 삽입할 값: 1 → [1, 4, 5, 3, 6, 2]

  2. 다음 값 5는 4보다 크므로 그대로

  3. 3은 5보다 작아, 5와 4를 오른쪽으로 밀고 → [1, 3, 4, 5, 6, 2]

  4. 반복하여 최종 정렬 결과: [1, 2, 3, 4, 5, 6]

 

삽입 정렬의 성능

 

장/단점

 

 

2. 병합 정렬(Merge Sort)

재귀적으로 정렬하는 알고리즘

분할 정복 알고리즘에 속함

배열들의 데이터를 최소한을 쪼갠 후 각 단계 별로 병합을 하면서 정렬을 진행하는 방식

 

  1. 데이터를 반으로 나누어 분할.

  2. 각각을 정렬한 후 병합하며 정렬.

  3. 두 개의 데이터가 하나로 합쳐질 때 비교 연산이 두 번 발생.

  4. 네 개의 데이터가 두 개로 병합될 때 비교 연산이 네 번 발생.

  5. 단계마다 영역의 수가 반으로 줄어들기 때문에 O(log n)의 성능을 가짐.

  6. 병합할 때 n개의 데이터를 비교하므로 전체 시간 복잡도는 O(n log n).

 

병합 정렬의 성능

 

장/단점

 

3. 퀵 정렬(Quick Sort)

분할 정복(Divide and Conquer) 알고리즘

정렬 전에 배열에서 하나의 원소를 피벗(Pivot)으로 선택.

피벗을 기준으로 작은 값과 큰 값으로 나누어 재귀적으로 정렬 수행.

 

퀵 정렬의 성능

평균 : O(n log n)

최악: O(n^2) -> 피벗이 한 쪽으로 지나치게 치우친 경우

 

 

4. 동적 프로그래밍 - 메모이제이션(Memoization)

재귀 사용 시 콜 스택 영역 차지 이외에도 같은 계산을 반복해서 수행하는 단점 존재

이에 대한 해결책으로 동적 프로그래밍의 메모이제이션(Memoization)을 사용

메모이제이션

 

메모이제이션을 통한 피보나치 수열 최적화

 

 

5. 동적 프로그래밍  - 타뷸레이션(Tabulation)

 

메모이제이션과 타뷸레이션 중 어떤 것을 사용해야 할까?

문제에 따라 다르지만

눈에 보이는 재귀 or 분할 정복으로 풀기 쉬움 -> 메모이제이션(Memoization)

복잡한 재귀 or 메모리 사용량이 중요함 -> 타뷸레이션(Tabulation)


 

일주일 간의 회고


🍷칭찬하고 싶은 점

😅아쉬웠던 점

🛠보완하고 싶은 점

 

커리어 · 자기계발 기타

답변 0