운영체제¶
수업 설명¶
이 수업에서는 컴퓨터 시스템의 작동에 필수적인 운영체제의 설계, 기능, 관리에 대해 포괄적으로 다룹니다. 프로세스 관리, 메모리 관리, 파일 시스템 등 운영체제의 이론적・실질적 측면과 리눅스 운영체제에 대한 깊은 이해를 얻게 됩니다. 강의, 실습, 프로젝트를 통해 운영체제의 작동 방식, 하드웨어 및 소프트웨어와의 상호 작용, 운영체제 리소스의 효율적인 관리 방법을 배울 것입니다.
학습 목표¶
이 수업을 성공적으로 마치면 학생들은 다음을 할 수 있습니다:
- 운영체제의 기본 구성 요소와 상호 작용에 대한 이해.
- 프로세스 관리, 메모리 관리, 교착 상태 (deadlock) 관리 정책의 선택 및 적용.
- 파일, 장치, 디스크 저장소 관리의 기초 이해.
- 기본 명령어, 프로세스 관리, 시스템 호출 등 리눅스 운영체제를 활용한 실질적인 경험.
전제 조건¶
- 컴퓨터 시스템의 기초
- 프로그래밍 입문
수업 개요¶
1주차: 운영체제 소개¶
개요:
- 운영체제 개념, 구성 요소, 작업에 대한 개요.
- 운영체제에서의 보호와 보안.
- 컴퓨팅 환경과 운영체제의 추상적 관점.
주요 학습 성과:
- 운영체제의 역할 및 목적 이해.
- 운영체제의 구성 요소와 작동 파악.
- 컴퓨팅 환경에서 보호 및 보안의 필요성 인식.
2주차: 운영체제 아키텍처¶
개요:
- 컴퓨터 시스템 아키텍처: 단일 프로세서 및 멀티 프로세서 시스템.
- 운영체제 유형: 배치, 다중 프로그램, 시분할, 실시간, 분산.
주요 학습 성과:
- 다양한 컴퓨터 시스템 아키텍처 이해.
- 다양한 유형의 운영체제와 그 응용 분야 구분.
3주차: 프로세스 관리¶
개요:
- 프로세스 개념, 프로세스 연산, 협력 프로세스, 프로세스 간 통신, 스레드.
- Linux OS 소개 및 기본 명령어.
주요 학습 성과:
- 운영체제에서 프로세스의 개념 및 관리 이해
- Linux OS 명령어 활용한 초기 실습 경험.
4주차: 프로세스 동기화¶
개요:
- 임계 영역 문제, 동기화 하드웨어, 세마포어, 고전적인 동기화 문제.
- 기본 Linux 프로세스 관리 명령어 및 시스템 호출.
주요 학습 성과:
- 프로세스 동기화 및 임계 영역 문제에 대한 해결책 이해.
- 프로세스 관리를 위한 Linux 명령어 적용.
5주차: CPU 스케줄링¶
개요:
- 스케줄링 기준, 스케줄링 알고리즘, 다단계 큐 스케줄링, 다단계 피드백 큐 스케줄링.
주요 학습 성과:
- CPU 스케줄링의 원리 이해.
- 다양한 CPU 스케줄링 알고리즘 평가.
6주차: 교착 상태 (Deadlock)¶
개요:
- 교착 상태의 특징, 예방, 회피, 감지 및 복구.
- 은행가 알고리즘 (Banker’s algorithm) 소개.
주요 학습 성과:
- 교착 상태와 이를 처리하는 방법 이해.
- 교착 상태 회피를 위한 은행가 알고리즘 적용.
7주차: 메모리 관리¶
개요:
- 연속 메모리 할당, 단편화, 페이징, 세그먼테이션.
- 가상 메모리 개념 소개.
주요 학습 성과:
- 메모리 관리 전략의 이해.
- 페이징 및 세그먼테이션의 개념 이해.
8주차: 가상 메모리¶
개요:
- 요구 페이징, 페이지 교체 알고리즘, 프레임 할당, 스래싱(thrashing).
주요 학습 성과:
- 가상 메모리의 작동 방식 이해.
- 페이지 교체 알고리즘 평가.
9주차: 파일 시스템 인터페이스¶
개요:
- 파일 시스템 인터페이스의 개념, 접근 방법, 디렉터리 및 디스크 구조.
주요 학습 성과:
- 파일 시스템 인터페이스와 접근 방법 이해.
- 디렉터리 및 디스크 구조 인식.
10주차: 파일 시스템 구현¶
개요:
- 파일 시스템 구조, 구현, 디렉토리 구현, 할당 방법, 여유 공간 관리.
주요 학습 성과:
- 파일 시스템의 구현 이해.
- 할당 방법 및 여유 공간 관리 기술 이해.
11주차: 보조 저장소 관리¶
개요:
- 대용량 저장소 구조, 디스크 구조, 디스크 스케줄링 알고리즘, 디스크 관리, RAID 구조.
주요 학습 성과:
- 보조 저장소 관리의 원리 이해.
- 다양한 디스크 스케줄링 알고리즘 평가.
12주차: 장치 및 I/O 시스템¶
개요:
- 장치의 종류, 채널 및 제어 장치, 다중 경로, 블록 멀티플렉싱.
주요 학습 성과:
- 장치 및 I/O 시스템의 관리 이해.
- 채널, 제어 장치, 블록 멀티플렉싱의 개념 이해.
13주차: 심화 Linux 시스템 관리¶
개요:
- Linux의 메모리 관리 명령어 및 시스템 호출.
- Linux의 파일 관리 명령어 및 시스템 호출.
주요 학습 성과:
- Linux 시스템 관리에 대한 고급 기술 습득.
- 메모리 및 파일 관리를 위한 Linux 명령어 적용.
14주차: 사례 연구 및 실제 적용¶
개요:
- 실제 운영체제 사례 연구 분석.
- 실제 시나리오에서 운영체제 개념의 적용에 대한 논의.
주요 학습 성과:
- 실제 운영체제 구성 및 관리 전략 분석.
- 이론적 개념을 실제 운영체제 문제에 적용.
15주차: 복습 및 최종 프로젝트¶
개요:
- 강의에서 다룬 핵심 개념 복습.
- 운영체제 관리 및 적용에 중점을 둔 기말 프로젝트 완료 및 발표.
주요 학습 성과:
- 수업을 통해 습득한 지식 강화.
- 포괄적인 기말 프로젝트를 통해 운영체제 관리에 대한 실질적인 기술 입증.
성적 평가¶
- 수업 참여: 20%
- 과제: 40%
- 기말 프로젝트: 40%
교재 및 참고 자료¶
이 수업에 필수 교재는 없지만, 추가 자료를 원할 경우 다음 책을 권장합니다:
Operating Systems: Principles and Practice (2nd Edition): http://www.amazon.com/Operating-Systems-Principles-Thomas-Anderson/dp/0985673524, Thomas Anderson and Michael Dahlin.
추가 참고 자료에는 Silberschatz, Galvin, Greg, Sumitabha Das, W. Richard Stevens Stephen A. Rago, Milan Milenkovic, A. S. Tanenbaum, Kenneth H. Rosen, Dhanjay M. Dhamdhere 등 저자의 책이 있습니다.